M
Moa
Guest
Bonjour à tous !
Voilà, je cherche à faire une macro, qui me donnerait toutes les combinaisons possibles de trois lettres mais sur plusieurs lignes.
J'explique :
En A1 = A, A2 = B, A3 = C.
Là c'est assez simple :
ABC, ACB, BAC, BCA, CAB, CBA
Mais ce que je cherche à faire est plus complexe :
Je voudrais arrivé à faire la même chose, mais en partant de trois colonnes sur dix lignes et en ayant le choix, de ne pas remplir une cellule.
Exemple :
En A1 = A, en B1 = B, en C1 = C
En A2 = A, en B2 = B
En A3 = A, en B3 = B, en C3 = C
En A4 = A
en A5 = A,...................en C5 = C
Et j"aimerais qu'excel me donne
AAAAA, AAAAC, AABAA, AABAC.......
Pas facile..héhé
En fait j'ai trouvé sur le net une macro, qui fait à peu près cela mais sur une une seule ligne, et voici ce qu'elle fait :
En A1 = A, en B1 = B, en C1 = C ( donc tout sur la même ligne)
Résultat : ABC, ACB, BAC, BCA, CAB, CBA.
Je vous donne cette macro :
Option Base 1
Dim Combine(10)
Sub RunCombinaison()
For Each Chif In Selection
i = i + 1
Combine(i) = Chif
Next
CalculCombine Combine, i, 0
End Sub
Sub CalculCombine(Combine As Variant, Result, Traitement)
Application.ScreenUpdating = False
Dim Combine2(10)
If Result < 1 Then
Selection.Offset(1, 0).Activate
Selection.Value = Combine
Else
For i = 1 To Result
z = Combine(i)
For j = 1 To Result + Traitement - 1
Combine2(j) = Combine(j + (j >= i) * -1)
Next j
Combine2(j) = z
CalculCombine Combine2, Result - 1, Traitement + 1
Next i
End If
End Sub
En fait elle donne la possibilité de faire le calcul de A1 à H1, soit sur huit valeurs.
J'ai donc éssayé de la comprendre et de la modifier, pour mon cas, mais mes faibles connaissances en Vba, ne peuvent m'aider à résoudre ce problème.
Aussi si l'un d'entre vous c'est déjà posé ce genre de question et a trouvé une solution.....merci à lui de me faire part de sa connaissance.
Merci d'avance de votre aide
@ +
Moa
Voilà, je cherche à faire une macro, qui me donnerait toutes les combinaisons possibles de trois lettres mais sur plusieurs lignes.
J'explique :
En A1 = A, A2 = B, A3 = C.
Là c'est assez simple :
ABC, ACB, BAC, BCA, CAB, CBA
Mais ce que je cherche à faire est plus complexe :
Je voudrais arrivé à faire la même chose, mais en partant de trois colonnes sur dix lignes et en ayant le choix, de ne pas remplir une cellule.
Exemple :
En A1 = A, en B1 = B, en C1 = C
En A2 = A, en B2 = B
En A3 = A, en B3 = B, en C3 = C
En A4 = A
en A5 = A,...................en C5 = C
Et j"aimerais qu'excel me donne
AAAAA, AAAAC, AABAA, AABAC.......
Pas facile..héhé
En fait j'ai trouvé sur le net une macro, qui fait à peu près cela mais sur une une seule ligne, et voici ce qu'elle fait :
En A1 = A, en B1 = B, en C1 = C ( donc tout sur la même ligne)
Résultat : ABC, ACB, BAC, BCA, CAB, CBA.
Je vous donne cette macro :
Option Base 1
Dim Combine(10)
Sub RunCombinaison()
For Each Chif In Selection
i = i + 1
Combine(i) = Chif
Next
CalculCombine Combine, i, 0
End Sub
Sub CalculCombine(Combine As Variant, Result, Traitement)
Application.ScreenUpdating = False
Dim Combine2(10)
If Result < 1 Then
Selection.Offset(1, 0).Activate
Selection.Value = Combine
Else
For i = 1 To Result
z = Combine(i)
For j = 1 To Result + Traitement - 1
Combine2(j) = Combine(j + (j >= i) * -1)
Next j
Combine2(j) = z
CalculCombine Combine2, Result - 1, Traitement + 1
Next i
End If
End Sub
En fait elle donne la possibilité de faire le calcul de A1 à H1, soit sur huit valeurs.
J'ai donc éssayé de la comprendre et de la modifier, pour mon cas, mais mes faibles connaissances en Vba, ne peuvent m'aider à résoudre ce problème.
Aussi si l'un d'entre vous c'est déjà posé ce genre de question et a trouvé une solution.....merci à lui de me faire part de sa connaissance.
Merci d'avance de votre aide
@ +
Moa