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

Jybe

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

job75

XLDnaute Barbatruc
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+
 

Jybe

XLDnaute Nouveau
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...
 

job75

XLDnaute Barbatruc
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

  • Concaténation aléatoire VBA(1).xlsm
    17.7 KB · Affichages: 3

Discussions similaires

Réponses
10
Affichages
215
Réponses
24
Affichages
428
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…