Blocage sur boucle For each

Bonjour,

Petit blocage dans mon projet vba pouvez-vous m’aider :

J’ai une liste de nom en feuille 2 colonne F la liste commençant à partir de la ligne 3

J’ai une liste de monnaie (ex : EURO) en feuille deux colonne E commençant à partir de la ligne 3

J’ai une liste de nom en feuille 3 colonne A la liste commençant à partir de la ligne 2

J’ai une liste de monnaie (ex : EURO) en feuille deux colonne B commençant a partir de la ligne 2

J’ai une liste de nom en feuille 3 colonne C la liste commençant à partir de la ligne 2

Je cherche à effectuer l’action suivante :

Pour chaque combinaisons de nom et monnaie de ma feuille 2 correspondantes a celle de ma feuille 3 alors

Je veux afficher le nom correspondant de la feuille 3 colonne C en colonne H de ma feuille 2.

Voici mon code mais ça bug je ne comprends pas pourquoi :

Dim FINCLIENT As Range

Dim STIR as Range

Dim Trouve As Range

Dim e As Range

Dim i As Integer

Set FINCLIENT = Worksheets("Sheet2").Range("F3:F4000")

Set STIR = Worksheets("Sheet3").Range("A2:A4000")

For Each e In FINCLIENT

Set Trouve = STIR.Find(e.Value, , xlValues, xlWhole)

If Not Trouve Is Nothing And e.Offset(, -1).Value = Trouve.Offset(, 1).Value Then

e.Offset(, 2).Value = Trouve.Offset(, 2).Value

End If

Next e

Merci a vous.

Bonjour,

et quel est le problème ? reçois-tu un message d'erreur ? le résultat n'est pas le résultat attendu ?

Non je n ai pas de message d'erreur mais :

si dans ma feuille 2 j ai par exemple en liste de nom "gerard "qui apaprait deux fois et pareil dans ma feuille 3 alors ma macro copie colle le nom correspondant de la feuille 3 colonne C en colonne H de ma feuille 2 uniquement pour le premier ''gerard'' de la liste et laisse une case vide pour les autres.

Je loupe quelque chose mais je ne sais pas quoi :/

Bonjour,

l'instruction find ne trouve qu'une seule occurrence. il faut utiliser l'instruction findnext pour trouver les autres occurrences.

Je maitrise pas find next , il faut entrée dans une boucle do while? ou je peux rester aves mon for each?

Bonjour,

voici une façon possible d'utiliser le findnext

    Dim FINCLIENT As Range
    Dim STIR As Range
    Dim Trouve As Range
    Dim e As Range
    Dim i As Integer
    Dim fa As String
    Dim dl As Long
    With Worksheets("sheet2")
        dl = .Cells(Rows.Count, "F").End(xlUp).Row
        Set FINCLIENT = .Range("F3:F" & dl)
    End With
    With Worksheets("Sheet3")
        dl = .Cells(Rows.Count, "A").End(xlUp).Row
        Set STIR = .Range("A2:A" & dl)
    End With

    For Each e In FINCLIENT
        Set Trouve = STIR.Find(e.Value, , xlValues, xlWhole)
        If Not Trouve Is Nothing Then
            fa = Trouve.Address
            Do
                If e.Offset(, -1).Value = Trouve.Offset(, 1).Value Then
                    e.Offset(, 2).Value = Trouve.Offset(, 2).Value
                    Exit Do
                Else
                    Set Trouve = STIR.FindNext(Trouve)
                End If
            Loop Until Trouve.Address = fa
        End If
    Next e
Rechercher des sujets similaires à "blocage boucle each"