Pas de panique, je sais bien que ce sujet est traité plein de fois... Mais là c'est juste que j'ai un code qui bug... mais je ne sais pas pourquoi Pourtant j'utilise le meme dans un autre fichier et tout fonctionne correctement. Alors bon, je fais encore un fois appel à vous.
Pas de panique! C'est du au fait que ton find next perd le fil car tu lui a supprimé ses repères en supprimant la ligne précédente sur laquelle il s'était arrêté...
Tu dis que ta macro marchait sur d'autres fichiers ? Ce n'est pas possible en l'état. Sauf s'il n'y avait qu'une ligne à trouver et encore, je n'en suis pas sûr...
Le problème c'est que je ne comprend pas ce que tu veux faire exactement.
Tu sélectionne une famille et ensuite tu recherche par article : pas cohérent même si le résultat devrait être le même.
Ensuite tes noms d'onglet ont une majuscule alors que tes libéllés n'en ont pas (Et pourtant ça ne bug pas là... mais je n'ai pas reagrdé en détail.)
Ce sujet a déjà été résolu. Je me souviens d'un fil où nous avons apporté 2 solutions avec Pierrejean mais je ne sais plus lequel ni quand... Si je trouve je post parce que j'ai la flemme de refaire. même si ce n'est pas très compliqué...
Re,
Bon aller, je te donne une solution qui est plus simple encore que ce qu'on avait pondu, enfin... je crois
Remplace :
Code:
With Sheets(nom_onglet)
Set X = .Range("G1:G30000").Find(article_à_suppr, LookIn:=xlValues)
adresse_à_suppr = X.Address
ligne_x_debut = X.Row
If Not X Is Nothing Then
Do
Set X = Range("G1:G30000").FindNext(X)
ligne_x = X.Row
Rows(ligne_x).Delete
Loop While ligne_x <> ligne_x_debut
End If
End With
par :
Code:
With Sheets(nom_onglet)
Do
Set C = .Range("G1:G30000").Find(article_à_suppr, LookIn:=xlValues)
If Not C Is Nothing Then
Cells(C.Row, "B").EntireRow.Delete
End If
Loop While Not C Is Nothing
End With
en fait, dans ma feuille liste fam, c'est un article que je selectionne, pas une famille. Ensuite, je vais dans l'onglet correspondondant à la famille de l'article que j'ai selectionné, pour supprimer toutes les données concernant cet article.
Je m'y prends surement mal... c'est pour ca que tu ne comprends pas pourquoi je fais ça comme ça
Re,
Si tu veux éviter une boucle infinie s'il n'y a rien dans ta feuille il vaut mieux mettre :
Code:
With Sheets(nom_onglet)
Do
Set C = .Range("G1:G" & Range("B" & Application.Rows.Count).End(xlUp).Row).Find(article_à_suppr, LookIn:=xlValues)
If Not C Is Nothing Then
.Cells(C.Row, "B").EntireRow.Delete
End If
Loop While Not C Is Nothing
End With
J'ai aussi rajouté un . avant Cells(C.row,"B").entirerow.delete Sinon ce n'était pas la bonne page qui était traitée