Il existe 10 feuilles (Sheet1 ... Sheet10) avec des tables de la même gamme (C25: G34 & C42: N51).
Les lignes doivent être copiées si la colonne "Poids total" a une valeur> 0. Les lignes copiées vont à deux tableaux récapitulatifs:
Vers le tableau Westrock -> Tableau récapitulatif Westrock
Vers le tableau DNP -> Tableau récapitulatif DNP
Je suis sur Mac, donc PowerQuery n'est pas une option. Je suis nouveau sur VBA; c'est ce que j'ai jusqu'à présent:
Sub ToDNP()
Application.ScreenUpdating = False
Worksheets("Jupiter").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C11").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
"Application.CutCopyMode = False
Worksheets("Windsor").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C21").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Orlando").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C31").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Worksheets("Woodland").Activate
Range("C42:N51").Select
Selection.Copy
Worksheets("To DNP").Activate
Range("C41").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Dim rRow As Integer, rCol As Integer
Dim cRow As Integer, cCol As Integer
rCol = 3
rRow = 11
cCol = 14
cRow = 11
For cRow = 11 To 50
If Cells(cCol, cRow).Value = "0" Then
Range(Cells(rCol, rRow), Cells(cCol, cRow)).ClearContents
End If
rRow = rRow + 1
Next cRow
End Sub
Cela me donne une erreur:
Erreur: impossible de modifier une partie d'une cellule fusionnée
Réponses:
1 pour la réponse № 1Vous obtenez l'erreur parce que les valeurs de ligne et de colonne ont été échangées. Le paramètre de ligne vient en premier et puis vient le paramètre de colonne.
Votre code doit se lire comme suit:
If Cells(cRow, cCol).Value = "0" Then
Range(Cells(rRow, rCol), Cells(cRow, cCol)).ClearContents
End If
Vous essayez d'effacer la colonne 11 des lignes 3 à 14 de la feuille de calcul "To DNP", qui contient évidemment des cellules fusionnées.
0 pour la réponse № 2
Pour toute autre personne qui s'arrête; voici un code simple pour effacer une plage spécifique dans une ligne si une cellule contient une valeur spécifique.
For Each cell In Range("C11:N50")
If cell.Value2 = "0" Then
Set cRng = Range("C" & cell.Row & ":" & "O" & cell.Row)
" Or Set clearRng = Range("C" & cell.Row & ":O" & cell.Row)
cRng.Clear
End If
Next