PB de variable avec Find Next

Fermé
Franck - 18 sept. 2017 à 18:13
eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 - 18 sept. 2017 à 18:57
Bonjour,

j'utilise la fonction FindNext,

mais je rencontre un problème quand je déclare un nouvel object en court de procédure :

l'utilisation de Set cel1 me fait perdre la déclaration de C,
Mais je ne comprend pas pourquoi ?

            For Each Cel In WsMacro.Range(Cells(15, 6), Cells(DerligneMacro, 6))


'Cherche Cel dans base de données
Set C = WsBase.Columns(2).Find(Cel, LookIn:=xlValues)

'Si C = Cel
If Not C Is Nothing Then
WsTravail.Cells(DerligneOF + 1, 2).Value = "OR : " & Cel
WsTravail.Cells(DerligneOF + 2, 2).Value = "Article : " & C.Offset(0, 5).Value
WsTravail.Cells(DerligneOF + 3, 2).Value = "Désignation : " & C.Offset(0, 6).Value
WsTravail.Cells(DerligneOF + 1, 3).Value = "A"
WsTravail.Cells(DerligneOF + 2, 3).Value = "B"
WsTravail.Cells(DerligneOF + 3, 3).Value = "C"
WsTravail.Cells(DerligneOF + 4, 3).Value = "D"

FirstAddress = C.Address

Do
Set Cel1 = WsTravail.Columns(2).Find("OF : " & Cel.Value, LookIn:=xlValues)
Cel1.End(xlToRight).Offset(0, 1).Range("A1").Value = C.Offset(0, 8).Value 'Report de la phase
Cel1.End(xlToRight).Offset(1, 0).Range("A1").Value = C.Offset(0, 10).Value 'Report du poste
Cel1.End(xlToRight).Offset(2, 0).Range("A1").Value = C.Offset(0, 9).Value 'Report du statut OP
Cel1.End(xlToRight).Offset(3, 0).Range("A1").Value = C.Offset(0, 22).Value ' Report des Heures

Set C = WsBase.Columns(2).FindNext(C)
Loop While Not C Is Nothing And C.Address <> FirstAddress

End If
Next Cel


Merci d'avance

1 réponse

eriiic Messages postés 24595 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 2 septembre 2024 7 234
18 sept. 2017 à 18:57
Bonjour,

utilise plutôt .find avec le paramètre after:=
Méfie-toi aussi du paramètre lookat que tu ne définis pas.
Il sera initialisé à la dernière valeur utilisée, même manuellement dans la boite Ctrl+f ce qui peut fausser tes résultats si ce n'est pas le bon.
eric
0