Associer des bouts de phrases suivant une liste de mots placés dans plusieurs colonnes

Bonjour,

J’aimerais automatiser une tâche en VBA.

J’ai 4 colonnes plus ou moins longues avec des mots.

Colonne A a 4 mots
Colonne B a 7 mots
Colonne C a 7 mots
Colonne D a 9 mots

Colonne A le début d’une phrase
Colonne B la suite de la colonne A
Colonne C la suite de la colonne B
Colonne D la suite de la colonne C

J’aimerais créer des phrases à partir de ces propositions, de façon à :

  • ce que tous les mots de la plus longue liste soient utilisés (dans notre cas la colonne D)
  • les colonnes A et C peuvent looper tant que tous les mots de la colonne D ne sont pas utilisés
  • en utilisant que le premier mot de la colonne B pour l’ensemble des combinaisons
  • une fois que toutes les combinaisons ont été utilisées avec le premier mot de la colonne B, on loop avec 2ème mot de la colonne B, puis le 3ème mot de la colonne B etc…

Pour illustrer le chemin pour la première loop est :

1er mot colonne A
1er mot colonne B
1er mot colonne C
1er mot colonne D

2ème mot colonne A
1er mot colonne B
2ème mot colonne C
2ème mot colonne D

3ème mot colonne A
1er mot colonne B
3ème mot colonne C
3ème mot colonne D

4ème mot colonne A (dernier mot de la colonne A, on repart à 1)
1er mot colonne B
4ème mot colonne C
4ème mot colonne D

1er mot colonne A
1er mot colonne B
5ème mot colonne C
5ème mot colonne D

2ème mot colonne A
1er mot colonne B
5ème mot colonne C
5ème mot colonne D

3ème mot colonne A
1er mot colonne B
6ème mot colonne C
6ème mot colonne D

4ème mot colonne A (dernier mot de la colonne A, on repart à 1)
1er mot colonne B
7ème mot colonne C (dernier mot de la colonne C, on repart à 1)
7ème mot colonne D

1er mot colonne A
1er mot colonne B
1er mot colonne C
8ème mot colonne D

2ème mot colonne A
1er mot colonne B
2ème mot colonne C
9ème mot colonne D (dernier mot de la colonne D = fin de cette loop)

On refait la même chose avec le 2ème mot de la colonne B et ainsi de suite.

Le nombre de mot dans chaque colonne pourrait évoluer, il faudrait donc une fonction SI pour voir si la prochaine cellule est vide, alors on repart au début de la colonne.

J’aimerais coller le résultat dans une nouvelle colonne, les résultats les uns à la suite des autres.
Loop VBA création de phrases.xlsx (11,3 Ko)

Bonsoir,
Avec une formule :

INDIRECT("A"&ALEA.ENTRE.BORNES(1;NBVAL(A:A)))&INDIRECT("B"&ALEA.ENTRE.BORNES(1;NBVAL(B:B)))&INDIRECT("c"&ALEA.ENTRE.BORNES(1;NBVAL(B:C)))&INDIRECT("d"&ALEA.ENTRE.BORNES(1;NBVAL(D:D)))

Will-Fread

Bonjour,
Un test par macro
Loop VBA création de phrases.xlsm (18,4 Ko)

1 « J'aime »

Bonjour Will-Fread,

La formule est bien dans excel et non une macro ?

Elle fonctionne mais ne prend pas en compte la colonne C à toutes les propositions

1 « J'aime »

Hello Mimimathy,

Impressionnant ! Ca marche parfaitement, même si je ne comprends pas tous les éléments de ta formule…

Encore un grand merci !
Romain

Re,
Il prend au hasard, les valeurs changent a chaque actualisation.
Will-Fread

77 combinaisions = produit de 2 nombres premiers, donc très particulier …
normallement : 4 * 7 * 7 * 11 = 2156 combinaisons possible
Loop VBA création de phrases.xlsm (56,5 Ko)

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.