Problème d'indice dans une double boucle

Bonjour,

j'effectue une petite macro qui fonctionne avec deux boucles
j'essaye de parcourir deux fichiers sur deux feuilles
lorsque les conditions sont remplis, je copy le contenu de la feuille 1 celulle "AD"&i
puis je l'affecte à la cellule C2 de la feuille 3
le problème est que avec les indices(AD&i) je n'arrive pas a affecter le contenu la feuille 1 cellule AD&i à la cellule C2 feuille 3

alors que sans indice exemple AD3 cella fonctionne

Sub test()

Dim i, j As Integer



For i = 2 To 7

     For j = 2 To 7
     If Worksheets("feuil1").Range("c" & i).Value = Worksheets("feuil2").Range("c" & j).Value And Worksheets("feuil1").Range("D" & i).Value = Worksheets("feuil2").Range("D" & j).Value  then

    

    Worksheets("feuil3").Range("C2").Value = Worksheets("feuil1").Range("AD" & i).Value
    
   
     
     Else: Worksheets("feuil3").Range("B1") = "A"
     End If
     
     
     Next
  



Next

End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.


2 réponses

  1. Bonsoir Wil, bonsoir le forum,

    Le problème avec ta boucle qui revoie sur des adresses fixes B1 et C2 c'est que ça sera toujours la dernière valeur qui vérifie la condition en C2 et la dernière valeur qui ne vérifie pas la condition en B1. Autrement dit, pourquoi une boucle puisque les anciennes données sont écrasée ?

    Si j'ai bien compris ce que tu voudrais, j'écrirais comme ça :

    Sub TEST()
    Dim O1 As Worksheet
    Dim O2 As Worksheet
    Dim O3 As Worksheet
    Dim I As Byte
    Dim J As Byte
    Dim TEST As Boolean
    
    Set O1 = Worksheets("Feuil1")
    Set O2 = Worksheets("Feuil2")
    Set O3 = Worksheets("Feuil3")
    For I = 2 To 7
        For J = 2 To 7
            If O1.Range("c" & I).Value = O2.Range("c" & J).Value And O1.Range("D" & I).Value = O2.Range("D" & J).Value Then
                LI = I: TEST = True: Goto suite
            End If
        Next J
    Next I
    suite:
    If TEST = True Then
        O3.Range("C2").Value = O1.Range("AD" & LI).Value
    Else
        O3.Range("B1") = "A"
    End If
    End Sub


    0
    1. bonjour

      j'ai simplifié mes conditions pour faire simple
      je te remercie de ton aide mes je ne comprends pas trop ton explication
      dans mon test j'ai fais en sorte que la condition Worksheets("feuil1").Range("B" & i) = Worksheets("feuil2").Range("B" & j)
      se vérifie une seule fois
      Je veux comparer la cellule B2 de la feuille 1 au cellule B2 jusqu'à B7 de la feuille 3.
      puis répèter la même action pour la cellule B3 de la feuille 1

      Sub test()

      Dim i, j As Integer

      For i = 2 To 7

      For j = 2 To 7
      If Worksheets("feuil1").Range("B" & i) = Worksheets("feuil2").Range("B" & j) Then

      Worksheets("feuil3").Range("C2").Value = Worksheets("feuil1").Range("AD"&i).Value

      Else: Worksheets("feuil3").Range("B1") = "A"
      End If

      Next
      0