/ / Copier les plages dans la table principale et supprimer les plages de la table principale si la cellule = 0 - excel, vba, excel-vba

Copier les plages dans la table principale et supprimer les plages de la table principale si cell = 0 - excel, vba, excel-vba

Il existe 10 feuilles (Sheet1 ... Sheet10) avec des tables de la même gamme (C25: G34 & C42: N51).

Tableaux sources des feuilles de calcul

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

Sommaire: Westrock Résumé de Westrock

Sommaire: DNP entrer la description de l'image ici

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 № 1

Vous 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