Bonjour à tous,
Voici quelques techniques (Excel 365) pour répéter une séquence plusieurs fois.
La plus simple, mais non dynamique consiste simplement à écrire les 4 valeurs et ensuite les recopier vers le bas :
Pour du dynamique, une idée serait de générer une suite, par exemple pour 4 éléments, 1;2;3;4;1;2;3;4;1;2;3;4... qui va ensuite être combinée avec la fonction index ou la fonction choisir.
Ca nous donne ceci pour 20 000 lignes, donc 5 000 répétitions.
=MOD(SEQUENCE(20000;1;0;1);4)+1
La fonction SEQUENCE génère une série de nombre, ici 0;1;2;3;4;5...20 000
La fonction MOD retourne le reste de la division, donc ca nous donne 0;1;2;3;0;1;2;3;0;1;2;3... et on ajoute un pour avoir la série qui nous intéresse.
De là, on peut ajouter une fonction comme celle-ci :
=INDEX({"a";"b";"c";"d"};MOD(SEQUENCE(20000;1;0;1);4)+1)
ou encore
=CHOISIR(MOD(SEQUENCE(20000;1;0;1);4)+1;"a";"b";"c";"d")
Et si la suite se trouve dans une plage de cellule, ca nous donne ceci :
=INDEX(A1:A4;MOD(SEQUENCE(20000;1;0;1);4)+1)
Suite à une longue discussion avec Rick, voici les améliorations apportées à la fonction :
En passant la plage en variable, on aurait :
=LET(r;A1:A4;INDEX(r;MOD(SEQUENCE(LIGNES(r)*5000;;0);LIGNES(r))+1))
Et en passant le nombre de répétitions en variable, on aurait :
=LET(r;A1:A4;nRepetitions;5000;INDEX(r;MOD(SEQUENCE(LIGNES(r)*nRepetitions;;0);LIGNES(r))+1))
Et enfin, il ne manque plus que la transformation en Lambda pour avoir une formule universelle :
=LAMBDA(r;nRepetitions;INDEX(r;MOD(SEQUENCE(LIGNES(r)*nRepetitions;;0);LIGNES(r))+1))(A1:A4;5000)
Et pour l'utiliser directement dans un nom (par exemple L.REPETER.PLAGE), et en affinant le nom des paramètres :
=LAMBDA(Plage_A_Recopier;Nombre_Repetitions;INDEX(Plage_A_Recopier;MOD(SEQUENCE(LIGNES(Plage_A_Recopier)*Nombre_Repetitions;;0);LIGNES(Plage_A_Recopier))+1))
Plus précisément, via Formules, Gestionnaire de Noms, Nouveau...Et vous faites deux copier-coller.
Et une fois le nom créé, la formule est super simple d'utilisation :
=L.REPETER.PLAGE(A1:A4;5000)
Si vous voulez avoir une explication détaillée, mettre en pratique et comprendre en profondeur ces fonctions, rejoignez moi ici pour ce séminaire (replay disponible) :
Amusez vous bien !!!