Fonction trier concatener range

Bonjour

J'ai cette fonction, qui me concatene un range,Function CONCATENATEMULTIPLE

Je voudrais qu'avant de concatener, elle me trie les valeurs, dans la fonction elle même, pas sur la feuille, le range doit rester intact

Dans la version Function CONCATENATEMULTIPLE_2, j'ai essayé de trier dans un tableau puis réinjecter dans la fonction mais cela ne fonctionne pas

Function CONCATENATEMULTIPLE(Ref As Range, Separator As String) As String
Dim Cell As Range
Dim Result As String
For Each Cell In Ref
Result = Result & Cell.Value & Separator
Next Cell
CONCATENATEMULTIPLE = Left(Result, Len(Result) - 1)
End Function

merci

Bonjour,

Une approche en utilisant l'objet arraylist et la fonction Sort intégrée nativement :

Function CONCATENATEMULTIPLE_2(Ref As Range, Separator As String) As String
  Dim valuesList As Object
  Set valuesList = CreateObject("System.Collections.ArrayList")

  ' copie des variables dans un objet arraylist, qui dispose d'une fonction Sort = Trier
  Dim val As Variant
  For Each val In Ref.Value2
    valuesList.Add val
  Next val

  ' tri
  valuesList.Sort

  ' lecture des valeurs, triées dans l'ordre
  Dim result As String
  For Each val In valuesList
    result = result & val & Separator
  Next val
  CONCATENATEMULTIPLE_2 = Left(result, Len(result) - 1)
End Function

PS : pas besoin de rentrer vos UDF via CTRL+MAJ+ENTR puisqu'elles retournent une valeur unique.

Impeccable, merci pour les explications, connaissait pas

Je vous en prie, n'oubliez pas de marquer le post en résolu.

Rechercher des sujets similaires à "fonction trier concatener range"