Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Pb de macro ...

argon1515

XLDnaute Junior
Bonjour,
En voulant resoudre un post j'ai rencontré un probléme curieux.
Voir la piece jointe.
Le code macrook fonctionne --> colore en bleu les cellules contenant 0
Le code macronok ne fonctionne pas --> supprime les lignes ou il y des cellules contenant 0
Le but est de supprimer les lignes ou l'on trouve un 0
Il y a d'autre solution pour y parvenir mais ce probléme de macronok m'intrigue.
Merci de votre aide
 

Pièces jointes

  • exemple_code.xls
    46.5 KB · Affichages: 42

Pierrot93

XLDnaute Barbatruc
Re : Pb de macro ...

Bonjour Argon, Mazette

effectivement en procédant par une boucle "for each" si 2 cellules consécutives répondent aux critères, tu ne supprimes que la première, essaye comme ceci, une boucle en commencant par la dernière ligne :

Code:
Sub Macronok()
Dim i As Long
For i = Range("B65536").End(xlUp).Row To 2 Step -1
    If Cells(i, 2).Value = 0 Then Rows(i).Delete
Next i
End Sub

bon après midi
@+
 

argon1515

XLDnaute Junior
Re : Pb de macro ...

Merci Pierrot93 de te pencher sur ce probléme, mais comment expliques tu que la macrook colore bien tous les 0 méme 2 qui ce suivent ?
De plus je voulais un code qui fonctionne quelque soit le le nombre de colonne
qui contient un 0.
Sauf erreur de ma part tu testes uniquement la colonne B (Range("B65536").End(xlUp).Row To 2 Step -1).
A+
 

Pierrot93

XLDnaute Barbatruc
Re : Pb de macro ...

Re

la macroOK ne supprime pas de lignes, l'autre si, par exemple si la cellule 3 répond au critère, elle est supprimée, la 4 devient la 3, et le code annalyse la 4 qui était la 5 avant suppression... donc la 4 d'origine pas traitée...

essaye comme ci dessous pour plusieurs colonnes, en supposant que toutes les colonnes aient le même nombre de lignes :

Code:
Sub Macronok()
Dim i As Long, c As Byte
For c = 1 To Range("IV1").End(xlToLeft).Column
For i = Range("A65536").End(xlUp).Row To 2 Step -1
    If Cells(i, c).Value = 0 Then Rows(i).Delete
Next i
Next c
End Sub

@+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…