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

Lister des combinaisons sur plusieurs colonnes

  • Initiateur de la discussion Initiateur de la discussion AudreyR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AudreyR

XLDnaute Nouveau
Bonjour,

je cherche à faire une liste de combinaisons sur Excel qui s'afficherait sur plusieurs colonnes. Il y aurait 7 colonnes avec un nombre d'entrées différentes pour chaque colonne:

Col 1: 3 entrées
Col 2: 14 entrées
Col 3: 2 entrées
Col 4: 13 entrées
Col 5: 4 entrées
Col 6: 3 entrées
Col 7: 8 entrées

Le sujet a déjà été lancé ici mais la macro comportait beaucoup moins de combinaisons et je ne sais pas comment modifier la macro déjà proposée.

Merci d'avance!
 
Re
Pendant que nous y sommes tu peux peut être nous dire ou on pèche les combinaisons

A moins qu'il ne s'agisse de les créer dans ce cas nous préciser le modus de la genèse

De même la macro que tu évoques pourrait être utile
 
Hello
j'ai repris ton fichier de l'autre post

la macro que tu avais déjà, pourrait etre modifiée pour aller jusqu'à 7 colonnes... sauf que.. ca va durer des plombes.
donc, autre solution avec des tables..


voir PJ

et attention.. si tu es en version Excel 97 ca ne va pas aller.. car il est limité à 65636 lignes...
 

Pièces jointes

Bonjour,

je voudrais une seconde fois solliciter votre aide. J'ai 2 autres listes de combinaisons à faire, l'une mène à une liste de 9408 combinaisons, et la deuxième à 645120 combinaisons. Est-ce que les nouvelles versions de Excel permettent de lister la deuxième? Et si oui, comme la fois précédente, je ne suis pas en mesure de faire la macro. Merci d'avance!
 

Pièces jointes

Hello
THE solution que je cherche depuis un moment pour s'affranchir du nombre de colonnes..
VB:
Sub col2a2()
Dim TabCol1(), TabCol2() As Variant
Dim TabloInter() As Variant
Dim tabloFinal() As Variant
Dim Dimension() As Variant

Sheets("Feuil3").UsedRange.ClearContents
With ActiveSheet
    NbCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 'récupère le nombre de colonnes
    nbLignemax = .UsedRange.Rows.Count 'taille de la zone de data
    TabData = .Range("A1").Resize(nbLignemax, NbCol).Value 'on récupère tout le tablo de données

    ReDim Dimension(1 To NbCol) 'tablo 1D contenant les dimensions de chaque colonne
    nbligne = 1 'initialisation du nombre total de combinaisons

    For i = 1 To NbCol 'sur chaque colonne
        Dimension(i) = Cells(Rows.Count, i).End(xlUp).Row  'on compte le nombre d'éléments de la colonne
        nbligne = nbligne * Dimension(i) 'calcul du nombre final de combinaisons
    Next i
  
'on set la première colonne
    If Dimension(1) = 1 Then
        TabCol1 = Range("A1").Value
    Else
        TabCol1 = .Range("A1:A" & Dimension(1)).Value
    End If

    For i = 1 To NbCol - 1
        If Dimension(i + 1) = 1 Then  'Cas Particulier d'un SEUL élément ==> Table impossible...?..
            Element = Cells(1, i + 1)
            ReDim TabloInter(1 To (UBound(TabCol1)), 1)
            j = 1
            For A = 1 To UBound(TabCol1)
                TabloInter(j, 1) = TabCol1(A, 1) & "-" & Element
                j = j + 1
            Next A
        '************
        Else
            TabCol2 = .Range("A1").Offset(0, i).Resize(Dimension(i + 1)).Value 'on set la colonne 2
  
            ReDim TabloInter(1 To (UBound(TabCol1)) * (Dimension(i + 1)), 1)
            j = 1
            For A = 1 To UBound(TabCol1)
                For b = 1 To UBound(TabCol2)
                    TabloInter(j, 1) = TabCol1(A, 1) & "-" & TabCol2(b, 1)
                    j = j + 1
                Next b
            Next A
            'ReDim TabCol1(1 To UBound(TabloInter), 1)
            'TabCol1 = TabloInter
        End If
        ReDim TabCol1(1 To UBound(TabloInter), 1)
        TabCol1 = TabloInter
Next i
                      
End With

If UBound(TabloInter) > Rows.Count Then
    MsgBox "Trop de lignes, il faut Separer"
    Sheets("Feuil3").Range("A1").Resize(UBound(TabloInter) / 2, 2) = TabloInter
Else
    Sheets("Feuil3").Range("A1").Resize(UBound(TabloInter), 2) = TabloInter
End If

Sheets("Feuil3").Activate
Columns("B:B").Select
    Selection.TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
        :="-", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
        1)), TrailingMinusNumbers:=True
End Sub

Bon.. j'ai encore des choses à changer..
le cas d'une colonne avec un SEUL element.. ce qui empeche apparemment d'utiliser un tablo
j'ai déjà traité le cas lorsque une des colones 2 3 4 ... ne contient qu'un seul element
mais j'ai pas traité le cas ou c'est DES la première colonne qu'il n'y a qu'un élément

Puis traiter le cas ou il y a plus de combinaison de nombres de lignes possible dans excel (pour l'instant si ca dépasse (ta Deuxième feuille), je n'affiche que la moitié

puis traiter la fin pour séparer les éléments selon le caractère "-"
 
Me revoici avec la solution "Quasi finale"==> j'ai encore un pb d'indice.....Grrrr.. que j'ai du mal avec ces redim tablo, resize ubound .. 1 to ubound.....

Bref..
tu peux quand meme tester le fichier joint
pour le "Premier cas".. ca passe nickel.. et c'est assez rapide (1seconde environ)
par contre. pour le "Deuxième" cas.. c'est beaucoup plus long. et il me manque juste une dernière combinaison..
 

Pièces jointes

Salut @pierrejean
il me semble que tu es assez familier avec les tableaux (me trompe je??)
Si c'est bien le cas, peux tu stp jeter un oeil au dernier fichier pour voir si tu trouves mon problème d'indice..
la toute dernière combinaison (cas feuille "Deuxième") est manquante..
je ne sais pour l'instant pas, si elle est manquante dans le tablo ou seulement à l'affichage...
Merci :-D
 
Re

Bon voila j'y suis aussi arrivé
Mais tu es meilleur au point de vue vitesse !!
Il semble que l'on ait suivi le même raisonnement mais interprété de façon différente
Tu pourras noter l'utilisation du tablo en tant que tableau de tableaux
On peut remarquer que le 'calcul' est extrêmement rapide contrairement à l’écriture
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
344
Réponses
6
Affichages
181
Réponses
9
Affichages
175
Réponses
22
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…