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. 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
    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