Erreur '438 : FindNext

Résolu/Fermé
ccvr - 3 août 2022 à 14:29
 ccvr - 9 août 2022 à 13:35

Bonjour, 

je ne comprends pas je n'arrive pas à utiliser Findnext (erreur '438) alors que je l'ai utilisé dans une autre macro et il fonctionnait.

Voici une partie de mon code simplifié :


Dim rang_rech0 As Range,val_rech0 As Variant, cell As String
Dim rang_trouve As Range

Dim wk As Workbook

Set wk = Workbooks("Nomenclature.xlsm")
Set rang_rech0 = wk.Worksheets("STANDARD").Range("A2:A284")
 

val_rech0 = Feuil4.Cells(1, 1)
        
        Set rang_trouve = rang_rech0.Find(what:=val_rech0, LookIn:=xlValues, lookat:=xlPart)
        If rang_trouve Is Nothing Then
        MsgBox ("Pied non créé!")
        Else:
       
            cell = rang_trouve.Address
            

             Do
                  Set rang_trouve = wk.rang_rech0.FindNext(rang_trouve)
<-----erreur 438
            
                
                    If Not rang_trouve Is Nothing Then
                       'code
                    End If
                
             Loop While rang_trouve.Address <> cell
            

            
            
                
           
        End If

End Sub
 

      merciiii     

4 réponses

aussi le programme s'execute pas la boucle DO car il s'arrête à la condition While qu'il ne comprend pas . Je ne sais pas quoi faire 

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702
3 août 2022 à 18:03

Bonjour,

A priori la valeur cherchee est val_rech0, pas rang_trouve, sauf erreur de ma part

Set rang_trouve = rang_rech0.Find(what:=val_rech0, LookIn:=xlValues, lookat:=xlPart)
Set rang_trouve = wk.rang_rech0.FindNext(rang_trouve)
0

oui c'est bien ca mais je ne vois pas mon erreur alors .. j'ai fait comme vous non ? 

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 702 > ccvr
Modifié le 4 août 2022 à 17:10

Bonjour,

C'est le wk. qui est en trop

Set rang_trouve = rang_rech0.FindNext(rang_trouve)
0
ccvr > f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024
5 août 2022 à 09:28

ok merci, je n'ai plus d'erreur à cette étape !

par contre mon programme n'éxécute pas la boucle car il bloque à la condition "while"...

Loop While rang_trouve.Address <> cell  <-- erreur 91

pourquoi ca ne fonctionne pas? avez vous une idée ? 

Merci beaucoup :))

0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477 > ccvr
5 août 2022 à 09:40

"ca ne fonctionne pas": Peux-tu expliquer ce que tu veux obtenir et quelles sont les données dans la colonne?

0
ccvr > yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024
5 août 2022 à 09:54

ok je vous explique

0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
4 août 2022 à 15:46

bonjour,

Merci, quand tu partages du code, d'utiliser cette technique: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Regarde en #2 et compare soigneusement la ligne avec Find() et celle avec FindNext().  Tu as ajouté à la seconde trois caractères superflus, qui, je pense, causent le message d'erreur que tu reçois.

0

d'accord, je suis désolée mais je ne vois pas quels sont les caractères superflus...

Comme je "baigne" dans le code je n'arrive pas à voir.

Merci de me les préciser:)

0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477
9 août 2022 à 09:43

Je pense que ton souci, c'est que tu imagines que le FindNext de la ligne 46 va chercher ce que tu as spécifié dans le Find en ligne 22.

En réalité, le FindNext cherche ce qui a été spécifié dans le dernier Find exécuté, qui n'est probablement pas celui de la ligne 22.

0

ha ok je vois ...

et comment je pourrai faire pour justement rechercher la deuxième valeur qui correspond à mon find ligne 22 ? Je nepeux pas utiliser Find Next ?

0
yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024 1 477 > ccvr
9 août 2022 à 10:26

Tu peux refaire un Find, cela convient parfaitement. 
https://docs.microsoft.com/fr-fr/office/vba/api/Excel.Range.Find

0
ccvr > yg_be Messages postés 22731 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 avril 2024
9 août 2022 à 13:35

ok super merci !

je me suis compliquée la vie... car avec Find ca fonctionne

merci beaucoup !!

0