Petit soucis de find et findnext

yadla

XLDnaute Occasionnel
Bonjour le forum,

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 :confused: Pourtant j'utilise le meme dans un autre fichier et tout fonctionne correctement. Alors bon, je fais encore un fois appel à vous.

En vous remerciant d'avance
 

Pièces jointes

  • BdD_forum.xls
    46 KB · Affichages: 103

Spitnolan08

XLDnaute Barbatruc
Re : Petit soucis de find et findnext

Bonjour,

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.:p même si ce n'est pas très compliqué...:rolleyes:

Cordialement
 

Spitnolan08

XLDnaute Barbatruc
Re : Petit soucis de find et findnext

Re,
Bon aller, je te donne une solution qui est plus simple encore que ce qu'on avait pondu, enfin... je crois :D
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
et ça devrait marcher.

Cordialement
 

yadla

XLDnaute Occasionnel
Re : Petit soucis de find et findnext

Bonjour spitnolan,

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 :eek:

EDIT : Merci, je change ça, je regarde
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : Petit soucis de find et findnext

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

Cordialement
 

Discussions similaires

Réponses
6
Affichages
347

Statistiques des forums

Discussions
312 294
Messages
2 086 899
Membres
103 404
dernier inscrit
sultan87