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

XL 2019 Concaténation aléatoire de cellules texte

  • Initiateur de la discussion Initiateur de la discussion Jybe
  • 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 !

Jybe

XLDnaute Nouveau
Bonjour,
Petit défi :
Je cherche à concaténer les cellules texte de 3 colonnes de façon aléatoire
 
Bonjour Jybe,

Si les textes son en colonnes A B C à partir de la ligne 2 :

- entrez dans chacune des 3 cellules D2 E2 F2 la formule =ALEA()

- entrez en G2 la formule :
VB:
=INDEX(A2:C2;RANG(D2;D2:F2))&INDEX(A2:C2;RANG(E2;D2:F2))&INDEX(A2:C2;RANG(F2;D2:F2))
- tirez la plage D2:G2 vers le bas

- touche F9 pour obtenir un nouveau tirage.

A+
 
Bonjour job,
Merci pour ta réponse et ta réactivité
J'ai fait tout comme tu dis (je me suis relu plusieurs fois pour être sûr) mais j'obtiens sur chaque ligne la concaténation de 3 fois la même cellule...
 
Une solution par fonction VBA qui permet d'éviter les colonnes intermédiaires :
VB:
Function ConcatAlea$(plage As Range)
Application.Volatile
Dim a(), b(), i&
ReDim a(plage.Count - 1) 'base 0
ReDim b(UBound(a))
Randomize
For i = 0 To UBound(a)
    a(i) = Rnd
    b(i) = plage(i + 1)
Next
tri a, b, 0, UBound(a)
For i = 0 To UBound(a)
    ConcatAlea = ConcatAlea & b(i)
Next
End Function

Sub tri(a, b, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
    Do While a(g) < ref: g = g + 1: Loop
    Do While ref < a(d): d = d - 1: Loop
    If g <= d Then
      temp = a(g): a(g) = a(d): a(d) = temp
      temp = b(g): b(g) = b(d): b(d) = temp
      g = g + 1: d = d - 1
    End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub
Le code doit impérativement être placé dans un module standard.

Voyez le fichier .xlsm joint, la fonction est utilisée en D2 avec la formule =ConcatAlea(A2:C2)

Le nombre de colonnes à concaténer peut être quelconque.
 

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
0
Affichages
156
  • Question Question
Réponses
2
Affichages
93
  • Question Question
Microsoft 365 comptage d'heures
Réponses
6
Affichages
517
Réponses
30
Affichages
549
Réponses
2
Affichages
133
Réponses
2
Affichages
104
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…