J'aimerais réaliser 2 boucles imbriquées sur deux feuilles différentes. Je m'explique, j'aimerais que sur la feuille "Projet", si l'information de la colonne B (à partir de la cellule B5 jusque B500) = une des valeurs de la colonne B de la feuille "aide" (entre la cellule B4 et B56) alors que la valeur de la colonne C (à partir de la cellule C5 jusque C500) de la feuille "Projet" soit égale à celle de la colonne A de la feuille "Aide" correspondant à la ligne de la colonne B identique. Voici un exemple: j'aimerais que les valeurs : tableau 1, tableau 6 et tableau 5 de la feuille Projet s'inscrivent automatiquement car France, Allemagne et Suisse interviennent dans la feuille Projet et Aide
Feuille "Projet"
France Tableau1
Allemagne tableau6
Suisse Tableau5
Re : Boucles If imbriquées basées sur deux feuilles différentes
Bonjour.
Il vaut mieux éviter deux boucles imbriquées pour ce genre de choses.
Il est préférable d'utiliser un Dictionary pour retrouver la ligne où se trouve une info selon une identification.
Re : Boucles If imbriquées basées sur deux feuilles différentes
Si tu souhaites ne passer que par VBA, la réponse de Dranreb est excellente pour ton fichier.
Une variante peut-être la suivante :
Code:
Sub Test()
Dim f1 As Worksheet, f2 As Worksheet
Set d = CreateObject("Scripting.Dictionary")
Set f1 = Worksheets("Projet")
Set f2 = Worksheets("Aide")
For Each Cell In f2.Range("B4:B500")
If Cell <> "" Then d(Cell.Value) = Cell.Offset(, -1).Value2
Next Cell
For Each Cell In f1.Range("B4:B500")
If Cell <> "" Then Cell.Offset(, 1).Value = d(Cell.Value)
Next Cell
End Sub
On crée un Dictionary avec comme clé le nom du pays de la feuille Aide et comme Item le nom du tableau.
Sur la feuille Projet, on boucle les valeurs en B comme clé, et on inscrit l'item en colonne C.
Pièces jointes
Mathilde04 - Boucles If imbriquées basées sur deux feuilles différentes.xlsm
Re : Boucles If imbriquées basées sur deux feuilles différentes
Merci de la réponse si rapide!
Le fichier que j'ai posté est un fichier exemple qui est simplifié par rapport à mon fichier réel.
comment faire si je veux maintenant faire une macro qui dit que cette formule doit être appliquée pour toutes les cellules de la colonne B de la feuille Projet (de la colonne B5 à B500). en mettant seulement un for i =5 to 500 cela ne marche pas...
For i = 5 To 500
cells(i,3)=index(Aide!cells(4,1):cells(9,2));EQUIV(B4;Pays;0);1)
End Sub
Re : Boucles If imbriquées basées sur deux feuilles différentes
VB:
Sub Tableau()
With Feuil1.[C5].Resize(Feuil1.[B5000].End(xlUp).Row - 4)
.FormulaR1C1 = "=OFFSET(Pays,MATCH(RC2,Pays,0)-1,-1,1,1)"
.Value = .Value
End With
End Sub