XL 2013 VBA - Concatener lignes ordre alphabétique sur 5 colonnes

mmalzert

XLDnaute Occasionnel
Bonjour le forum,

Je cale sur un problème peut etre basique mais je ne trouve rien sur le net qui pourrait m'aider.
Je cherche - en vba - à concatener plusieurs colonnes selon un tri alphabétique.
Je pensais à :
  • extraire les 5 colonnes concernées
  • les transposer
  • les trier croissant
  • les concatener
  • récupérer la valeur de la concatenation
  • réinjecter sur la bonne colonne
  • supprimer le filtre temporaire
Procéder comme cela fonctionnerait mais je ne garanti pas la rapidité de la macro sur plusieurs centaines / milliers de lignes.
Je pense qu'il est possible d'utiliser la fonction Array mais j'avoue ne pas être encore à l'aise avec.

En pièce jointe un exemple avec le résultat attendu.

Merci à tous ceux qui voudront bien m'aider.
 

Pièces jointes

  • tablo vba tri lignes alpha.xlsm
    9.7 KB · Affichages: 21

Dranreb

XLDnaute Barbatruc
Bonjour.

Avec une fonction perso dans un module standard :
VB:
Option Explicit

Function Conclas(ByVal R As Range) As String
Dim TE(), C As Long, Z As String, TS() As String, PMax As Long, P As Long
TE = R.Value
For C = 1 To UBound(TE, 2)
   Z = TE(1, C)
   If Z <> "" Then
      PMax = PMax + 1: ReDim Preserve TS(1 To PMax)
      For P = PMax To 2 Step -1
         If TS(P - 1) < Z Then Exit For
         TS(P) = TS(P - 1): Next P
      TS(P) = Z: End If: Next C
ConClas = Join(TS, " - ")
End Function
En L2, à propager sur 2 lignes :
Code:
=Conclas(G2:K2)
 
Haut Bas