XL 2013 concaténer tous les résultats

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 !

MR.O

XLDnaute Junior
Bonjour,

Je souhaiterais concatener plusieurs données dans une cellule si elle correspondent à une valeur en colonne A.
Ci-joint un exemple,

Merci d'avance pour votre aide,

Cordialement,
 

Pièces jointes

Bonjour Mr O. (ou I, "impoli"?)
Dans ce fil, je vous avais proposé une solution (pour la question posée), mais vraisemblablement, vous venez ici, faire vos courses, et "bye"
Pas top, pour le métier exercé....
Edit, à savoir que les données que vous manipulez, peuvent l'être de façon très efficace par le biais de Power Query
 
Dernière édition:
Re-,
Pas de soucis...
Par contre, dans ce nouveau fichier, est-ce que vous pourriez mettre dans le 2ème onglet les attendus?
Et, si c'est pour traiter le même nombre de données que précédemment, je pense que Power Query pourrait bien vous être utile.
Si je ne me trompe, (et malgré le sous-forum indiqué), votre institution est sous 2016?
 
BonsoirMR.O, bhbh,

Voyez le fichier .xlsm joint et cette fonction VBA :
VB:
Function Concatene(critere, colrecherche As Range, colconcat As Range, separ As String) As String
Dim d As Object, i&
Set colrecherche = Intersect(colrecherche.EntireColumn, colrecherche.Parent.UsedRange.EntireRow)
Set colconcat = Intersect(colconcat.EntireColumn, colconcat.Parent.UsedRange.EntireRow)
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To colrecherche.Rows.Count
    If colrecherche(i) = critere Then
        If colconcat(i) <> "" And Not d.exists(colconcat(i).Value) Then
            d(colconcat(i).Value) = ""
            Concatene = Concatene & separ & colconcat(i)
        End If
    End If
Next
Concatene = Mid(Concatene, Len(separ) + 1)
End Function
Le code doit être placé impérativement dans un module standard.

A+
 

Pièces jointes

Bonjour MR.O, le forum,

Cette fonction est nettement plus rapide car elle utilise des tableaux VBA :
VB:
Function Concatene(critere, colrecherche As Range, colconcat As Range, separ As String) As String
Dim R As Range, tablo1, tablo2, d As Object, i&, x$
Set R = colrecherche.Parent.UsedRange.EntireRow
tablo1 = Intersect(colrecherche.EntireColumn, R).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
tablo2 = Intersect(colconcat.EntireColumn, R).Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(tablo1)
    If tablo1(i, 1) = critere Then
        x = tablo2(i, 1)
        If x <> "" And Not d.exists(x) Then
            d(x) = ""
            Concatene = Concatene & separ & x
        End If
    End If
Next
Concatene = Mid(Concatene, Len(separ) + 1)
End Function
Pour tester j'ai recopié le tableau source A2:J15 sur 210 000 lignes (et rendu la fonction volatile).

Durée du recalcul des 3 formules chez moi sur Win 11 Excel 2019 :

- fichier (1) du post #6 => 7,3 secondes

- ce fichier (2) => 2,2 secondes.

A+
 

Pièces jointes

Bonjour @bhbh,

Depuis votre conseil j'ai commencé à me former à power query, c'est beaucoup plus rapide !!!
Par contre pour faire la même chose que demandé dans ce sujet, je coince, est ce que vous pouvez m'aider ? je crois qu'il faut mettre des formules dans la requête mais je n'ai pas encore compris cette logique.

Merci d'avance,

Cordialement
 
Bonjour,
Désolé, j'avais arrêté mes travaux sur ce fichier...
Voici donc une solution PQ, il manque juste la colonne RACE ISC, ne sachant comment elle se remplit..
Regarde dans l'éditeur avancé de l'éditeur PQ, le but est de Grouper By, et ici, j'ai concaténé pour n'en faire qu'un groupage.
Bonne découverte de PQ, et bon W-E surtout...
PS, j'ai modifié les 2 dernières lignes de la base pour vérification.
 

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ésolu(e)
Microsoft 365 Formule
Réponses
4
Affichages
54
Réponses
17
Affichages
766
Réponses
8
Affichages
113
Réponses
4
Affichages
84
Retour