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

Problème de bouclage avec findNext

manu_tella

XLDnaute Junior
Bonjour à tous,

J'utilise dans un code la fonction find et find next.
dans la boucle j’intègre une passe de check sur l'existence d'une variable dans une feuille...
ce contrôle semble perturber ma boucle findnext et je n'arrive pas a comprendre pourquoi.
je ne suis qu'un amateur, l'erreur va peut etre vous sauter aux yeux

lorsque je supprime le check et que regarde avec des espions tout semble bien se passermais dès que j’intègre le check, le passage sur la ligne Set c = Sheets("Matrice").Rows(line).FindNext(c) donne c = "nothing"

je ne peux malheureusement pas donner le fichier car il est confidentiel

d'avance merci pour votre aide précieuse

voici un extrait du code,

VB:
Sub macro_manu()

Dim dmfi As String
Dim REQ, REQ_Status As String
Dim nb_REQ As Integer
Dim plage_req As Range
Dim I As Integer
Dim line, col As String
Dim Plage As Range, cell As Range
Dim trouve As Range
Dim c As Range
Dim feuille1 As Sheets
Dim croix As String
Dim j As String
Dim VAL, VAL_Status As String

dmfi = UserForm2.Frame3.ComboBox1.Value

I = 2
j = 10
k = 3


Set plage_req = Sheets("Matrice").Columns(3)

    Do While Sheets("Existing_links").Cells(I, 1) <> ""
        If Sheets("Existing_links").Cells(I, 1) = dmfi Then
        nb_REQ = nb_REQ + 1
        REQ = Sheets("Existing_links").Cells(I, 2)
        Sheets("DMFI_export").Cells(j, 1) = REQ
        REQ_Status = Sheets("Existing_links").Cells(I, 3)
        Sheets("DMFI_export").Cells(j, 2) = REQ_Status
        line = plage_req.Cells.Find(what:=REQ, lookat:=xlWhole).Row

            Set c = Sheets("Matrice").Rows(line).Find(what:="x", lookat:=xlWhole)
                            If c Is Nothing Then
                            'MsgBox ("la REQ " & REQ & " n'est pas couverte")
                            non_couverte = non_couverte + 1
                            Else
                            FirstAddress = c.Address
                                    Do
                                    VAL = Sheets("Matrice").Cells(3, c.column)
                                    VAL_Status = Sheets("Matrice").Cells(6, c.column)
                                        Set trouve = Sheets("DMFI_export").Rows(8).Find(VAL, LookIn:=xlValues)
                                            If trouve Is Nothing Then
                                            Sheets("DMFI_export").Cells(8, k) = VAL
                                            Sheets("DMFI_export").Cells(9, k) = VAL_Status
                                            Sheets("DMFI_export").Cells(j, k) = "x"
                                            nb_VAL = nb_VAL + 1
                                            k = k + 1
                                        Else
                                            nk = trouve.column
                                            Sheets("DMFI_export").Cells(8, nk) = VAL
                                            Sheets("DMFI_export").Cells(9, nk) = VAL_Status
                                            Sheets("DMFI_export").Cells(j, nk) = "x"
                                            nb_VAL = nb_VAL + 1
                                        End If
                                     Set c = Sheets("Matrice").Rows(line).FindNext(c)
                                     Loop While Not c Is Nothing And c.Address <> FirstAddress
                            End If
DoneFinding:
       j = j + 1
       End If
I = I + 1
    Loop
   
End Sub
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour à tous,

.Find ne peut être exécuter qu'une seule fois en même temps, tu le perds avec ton 2nd .find sur une autre plage.
A place du .findnext utilise à nouveau .find mais avec le paramètre After:=c, ce qui le remettra sur les rails.
eric
 
Dernière édition:

Discussions similaires

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