Supression du contenu de cellules sous condtions

Coucou à tous,

Je suis à la recherche d'un petit coup de main. Je joins un fichier explicatif (qui détail aussi les résultats attendus) et dans lequel j’aimerais faire ceci :

Lorsque la valeur dans la colonne MESURE1, MESURE2, MESURE 3, etc ... vaut "0" alors :

1) On supprime le contenu de la cellule voisine située sur la gauche (même ligne).

2) On supprime également le contenu de la cellule qui contient la valeur "0" (pour ne laisser qu'une cellule vide).

Le code que j'ai fais donne ceci :

Sub nettoie()

End Sub
Dim i As Long, col As Long
Dim LigneEnTete As Byte
Dim W1 As Worksheet

Set W1 = ThisWorkbook.Worksheets("Feuil1")
LigneEnTete = 4

With W1
    For col = 2 To 8 Step 2 'ballayage sur toutes les colonnes "MESURE"
    For i = LigneEnTete + 1 To .Cells(.Rows.Count, col).End(xlUp).Row Step 1
        If Cells(i, col).Value = 0 Then
             Cells.Offset(i, -1).Value.Delete 'supprime le contenu de la cellule voisine
             Cells(i, col).Value.Delete 'supprime le contenu de la cellule également

        End If
    Next i
    Next col

End With

Mais j'ai une erreur sur l’exécution que je ne parviens pas à solutionner

Voilà, je pense que la panne est légère mais ... pas pour moi

Merci à ceux qui passeront par là,

Jenny

5classeur3.zip (7.10 Ko)

Bonsoir

Une solution

Sub nettoie()
Dim i As Long, col As Long
Dim LigneEnTete As Byte
Dim W1 As Worksheet

  Set W1 = ThisWorkbook.Worksheets("Feuil1")
  LigneEnTete = 5

  With W1
    For col = 2 To 8 Step 2       'ballayage sur toutes les colonnes "MESURE"
      For i = LigneEnTete To .Cells(.Rows.Count, col).End(xlUp).Row
        If .Cells(i, col).Value = 0 Then
          .Cells(i, col - 1).Resize(1, 2).ClearContents  ' Efface le contenu des 2 cellules
        End If
      Next i
    Next col
  End With
End Sub

Wouhhouu terrible ! Merci Monsieur Banzai pour le coup de main (si j'osais je te ferais un gros bisou !)

C'est cette partie que tu as solutionné avec brio,

 .Cells(i, col - 1).Resize(1, 2).ClearContents  ' Efface le contenu des 2 cellules

Le fonctionnement de la méthode "Resize" ici m'échappe, on redimensionne sur 2 colonnes c'est bien ça ? L’argument de ligne "1" dans cette méthode signifie quoi dans ce contexte ?

J'abuse un peu, mais c'est vrai que je tombe assez souvent sur Resize sans vraiment comprendre comment l'utiliser

Quoi qu'il en soit, merci infiniment pour la réponse Banzai,

Jenny.

Bonsoir

Je vais essayer de l'expliquer (pas trop doué pour ça)

.Cells(i, col - 1).Resize(1, 2).ClearContents  ' Efface le contenu des 2 cellules

Cells(i,col-1) : On se positionne une colonne avant

Resize(1, 2) : Redimensionne de 1 ligne et de 2 colonnes

Donc si Cells(i,col-1) donne la cellule A5, Resize(1, 2) donne les cellules A5:B5

Un conseil

Dans l'éditeur VB positionnes le curseur sur le mot Resize et appuies sur F1

C'est exactement ce qu'il me fallait, j'avais trop tendance à confondre la méthode Resize avec Offset, donc un Resize(1,2) sous entendait pour moi qu'on allait voir sur la ligne du dessous.

Mais que nenni ! ici on élargit le résultat sur 2 colonnes, et le tout s’effectue sur 1 seule ligne (d'où le "1").

J'ai trouvée l'explication plus que recevable, merci encore Banzai pour ton aide.

Jenny.

Rechercher des sujets similaires à "supression contenu condtions"