Vba excel combinaisons...
Résolu
amaya1
Messages postés
4
Statut
Membre
-
amaya1 Messages postés 4 Statut Membre -
amaya1 Messages postés 4 Statut Membre -
Bonjour,
J'ai un tableau Excel dans lequel je considère (par exemple)
A B C D E F
1 0 1 4 7 8 9
2 7 8 x x 1 0
3 x x x x 6 7
4 x x x x 5 3
Les croix représentent des cellules vides.
Les colonnes vont de paire, je peux donc avoir 2, 4 , 6, 8... colonnes sachant que leq colonnes 1 et 2 ont le même nombre de lignes comme les 3 et 4, etc...
De plus le nombre de lignes est nécessairement une puissance de 2 (1,2,4,8...)
Je cherche à écrire un programme en vba excel permettant de donner l'ensmble des combinaisons possibles
Avec mon exemple j'aimerais avoir en sortie :
0 1 4 7 8 9
0 1 4 7 1 0
0 1 4 7 6 7
0 1 4 7 5 3
7 8 4 7 8 9
7 8 4 7 1 0
7 8 4 7 6 7
7 8 4 7 5 3
(peu importe l'ordre des lignes).
Si quelqu'un peut m'aider, me car je galère !!!!
Merci ;-)
J'ai un tableau Excel dans lequel je considère (par exemple)
A B C D E F
1 0 1 4 7 8 9
2 7 8 x x 1 0
3 x x x x 6 7
4 x x x x 5 3
Les croix représentent des cellules vides.
Les colonnes vont de paire, je peux donc avoir 2, 4 , 6, 8... colonnes sachant que leq colonnes 1 et 2 ont le même nombre de lignes comme les 3 et 4, etc...
De plus le nombre de lignes est nécessairement une puissance de 2 (1,2,4,8...)
Je cherche à écrire un programme en vba excel permettant de donner l'ensmble des combinaisons possibles
Avec mon exemple j'aimerais avoir en sortie :
0 1 4 7 8 9
0 1 4 7 1 0
0 1 4 7 6 7
0 1 4 7 5 3
7 8 4 7 8 9
7 8 4 7 1 0
7 8 4 7 6 7
7 8 4 7 5 3
(peu importe l'ordre des lignes).
Si quelqu'un peut m'aider, me car je galère !!!!
Merci ;-)
A voir également:
- Vba excel combinaisons...
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
2 réponses
Bonsoir,
voilà un code qui fonctionne. Tu sélectionnes ton tableau avant de lancer la macro.
je te laisse l'étudier
cordialement
voilà un code qui fonctionne. Tu sélectionnes ton tableau avant de lancer la macro.
je te laisse l'étudier
cordialement
Sub combi() Dim tablo As Range, maxind(), ind(), i, j, k, l, n, decal, tot, f Set tablo = Selection() n = tablo.Columns.Count / 2: l = tablo.Rows.Count ReDim maxind(n), ind(n) decal = 15 For j = 1 To n 'nb occurences par paire de colonnes For i = 1 To l If tablo(i, 2 * j) = "" Then ind(j) = i - 1: Exit For Else If i = l Then ind(j) = l End If Next Next For j = 1 To n 'produit des nbres d'occurrences des paires de colonnes de j+1 à n maxind(j) = 1 For i = j + 1 To n maxind(j) = maxind(j) * ind(i) Next Next tot = maxind(1) * ind(1) 'nbre de lignes du tableau résultat maxind(0) = tot For j = 1 To n For f = 1 To tot / maxind(j - 1) 'utile pour répéter les lignes jusqu'à tot lignes For i = 1 To ind(j) For k = 1 To maxind(j) Cells((i - 1) * maxind(j) + (f - 1) * maxind(j - 1) + k, 2 * j - 1 + decal) = tablo(i, 2 * j - 1) Cells((i - 1) * maxind(j) + (f - 1) * maxind(j - 1) + k, 2 * j + decal) = tablo(i, 2 * j) Next Next Next Next End Sub
Bonjour,
C’est parfait, j’ai réussi à comprendre ton raisonnement et à l’adapter à tous mes cas ! Merci beaucoup, je crois qu’il m’aurait fallu très longtemps pour trouver l’astuce !
J’en profite pour te poser d’autres questions sur vba :
- Comment créer une nouvelle feuille (worksheet) qui est la copie d’une feuille déjà existante ?
- Comment faire pour empêcher toute modification de l’utilisateur dans une cellule définie (ou un tableau) ?
- Comment faire pour qu’une valeur soit définie pour tout le projet ? En fait, je souhaite récupérer la valeur d’une textbox (j'ai créé un UserForm) dans une variable n puis quand j’exécute une autre procédure sub je cherche à avoir toujours n=ce qu’il y avait dans la TextBox. En effet pour l'instant je suis contrainte d'écrire dans chaque sub : n = TextBox1.Value
- Comment déterminer le temps de calcul d’une procédure ?
Merci d'avance !
C’est parfait, j’ai réussi à comprendre ton raisonnement et à l’adapter à tous mes cas ! Merci beaucoup, je crois qu’il m’aurait fallu très longtemps pour trouver l’astuce !
J’en profite pour te poser d’autres questions sur vba :
- Comment créer une nouvelle feuille (worksheet) qui est la copie d’une feuille déjà existante ?
- Comment faire pour empêcher toute modification de l’utilisateur dans une cellule définie (ou un tableau) ?
- Comment faire pour qu’une valeur soit définie pour tout le projet ? En fait, je souhaite récupérer la valeur d’une textbox (j'ai créé un UserForm) dans une variable n puis quand j’exécute une autre procédure sub je cherche à avoir toujours n=ce qu’il y avait dans la TextBox. En effet pour l'instant je suis contrainte d'écrire dans chaque sub : n = TextBox1.Value
- Comment déterminer le temps de calcul d’une procédure ?
Merci d'avance !