Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 double boucle sur 2 tableaux différents ?

Novice avance !?

XLDnaute Occasionnel
bonjour,
je débute dans l'utilisation des Array et je me possais la question à savoir s'il était possible de faire une double boucle sur 2 tableaux différents ? Ce dont je ne suis pas sûr. Si tel est le cas j'ai une solution plus longue et je ferais avec !?

1ère boucle : les Lignes_Possibles soit 6 , 7 ou 8
2ème boucle à l'intérieur de celle-ci sur les Valeures_Possibles_ en utilisant les Lignes_Possibles pour déterminer quelle Valeurs_Possibles_ est traitée soit quelque chose du genre Valeurs_Possibles(Lignes_Possibles) dans l'idéal ?!

en testant Valeurs_Possibles(Lignes_Possibles) je m'aperçois que Lignes_Possibles est affublé de " " d'une part et que cela se complique encore plus pour
Code:
If Cells(i, 3) Like Valeurs_Possibles_6(v) Then F = True )



VB:
Sub test
Dim Valeurs_Possibles_6 As Variant, Valeurs_Possibles_7s As Variant, Valeurs_Possibles_8 As Variant
Dim Lignes_Possibles As Variant
Dim F As Boolean
Dim v As Long, w As Long

Valeurs_Possibles_6 = Array("MADL6", "MOSCA3", "MAGN76", "ARCH12", "CROI0", "TSARA3", "MAGNA0", "ETOIL3")
Valeurs_Possibles_7 = Array("ARIAT9", "MARIE1", "GASIN2", "UNIVE7", "PORTT4", "UNIVE1", "ABATT4", "MARIE5")
Valeurs_Possibles_8 = Array("PASTE1", "PALAI9", "MEDEH5", "GOIRA5", "LASPL6", "THIER1", "MEDEP1", "RISSO2")

Lignes_Possibles = Array("6", "7", "8")

derligne = Range("A" & Rows.Count).End(xlUp).Row

For w = 0 to Ubound(Lignes_Possibles)
    For i = derligne To 2 Step -1
            F = False
                For v = 0 To UBound(Valeurs_Possibles_6)    ' possibilité de remplacer ce 6 par la variable Array des Lignes_Possibles ?
                    If Cells(i, 3) Like Valeurs_Possibles_6(v) Then F = True )    ' possibilité de remplacer ce 6 par la variable Array des Lignes_Possibles ?

                Next v
            If F = False Then Rows(i).Delete
    Next i
Next w

End Sub


merci d'avance pour votre éclairage à ce sujet
 
Dernière édition:
Solution
Cela va dans mon sens, voici une version évolutive. Pour ajouter une ligne il suffit d'ajouter une colonne au tableau "tb_lignes" qui se trouve sur la feuille "Listes" qui peut être masquée et sécurisée par code.

Novice avance !?

XLDnaute Occasionnel
merci
il faudrait alors que je génère dans un 1er temps les tableaux intermédiaires via code.
Cela me semble plus contraignant.

Je réalise que le seul code fourni n'aide pas. Je vais prendre le temps de générer un fichier excel test avec des données se rapprochant le plus de la réalité pour faciliter la visualisation de la problématique

Désolé du contre-temps
 

yal

XLDnaute Occasionnel
Je ne vois pas pourquoi il faudrait générer les tableaux intermédiaires par code. Pour le moment vous les codez en dur dans la macro.
VB:
Valeurs_Possibles_6 = Array("MADL6", "MOSCA3", "MAGN76", "ARCH12", "CROI0", "TSARA3", "MAGNA0", "ETOIL3")
Valeurs_Possibles_7 = Array("ARIAT9", "MARIE1", "GASIN2", "UNIVE7", "PORTT4", "UNIVE1", "ABATT4", "MARIE5")
Valeurs_Possibles_8 = Array("PASTE1", "PALAI9", "MEDEH5", "GOIRA5", "LASPL6", "THIER1", "MEDEP1", "RISSO2")

Ce serait plus facile à maintenir s'il étaient sur une feuille. Pas besoin de modifier le code si les valeurs doivent évoluer.
 

Novice avance !?

XLDnaute Occasionnel
Je ne serais pas l'utilisateur final. Ce code sera dans une application qu'une tierce personne utilisera pour dans un 1er temps charger un fichier de données brutes regroupant différentes lignes de bus ( ligne 6, ligne 7, ligne 8 mais également à terme d'autres lignes comme la 12 ou la 18 etc...)
Et une fois sélectionné ce fichier il devra simplement cliquer sur exécuter pour lancer le traitement
 

yal

XLDnaute Occasionnel
Cela va dans mon sens, voici une version évolutive. Pour ajouter une ligne il suffit d'ajouter une colonne au tableau "tb_lignes" qui se trouve sur la feuille "Listes" qui peut être masquée et sécurisée par code.
 

Pièces jointes

  • Classeur1 yal v1.xlsm
    21.6 KB · Affichages: 3
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…