Problème d'indice dans une double boucle

Fermé
wil_2638 - Modifié le 17 juil. 2017 à 21:56
 wil_2638 - 17 juil. 2017 à 22:52
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.


A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
17 juil. 2017 à 22:09
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
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