Excel: concaténer des valeurs différentes
saend
-
JvDo Messages postés 2012 Statut Membre -
JvDo Messages postés 2012 Statut Membre -
Bonjour,
Je souhaite concaténer des valeurs dans une plage de données, mais uniquement les valeurs différentes (en éviter les doublons, donc !)
Exemple; dans ma colonnne A j'ai :
A1: pierre
A2: ciseau
A3: pierre
A4: caillou
je voudrais concaténer tout ca en B2 comme suit:
B2: pierre-ciseau-caillou (et donc ignorer le doublon de la cellule A3)!
c'est un exemple bien sur, après je devrai adapter la formule à chaque plage de données concernée (parfois 2 cellules, parfois 10, etc.) Ma feuille excel fait 15.000 lignes !
Est-ce possible ? (je précise que je me débrouille sous excel mais suis pas non plus une pro des macros, etc. !!)
Merci d'avance !
Je souhaite concaténer des valeurs dans une plage de données, mais uniquement les valeurs différentes (en éviter les doublons, donc !)
Exemple; dans ma colonnne A j'ai :
A1: pierre
A2: ciseau
A3: pierre
A4: caillou
je voudrais concaténer tout ca en B2 comme suit:
B2: pierre-ciseau-caillou (et donc ignorer le doublon de la cellule A3)!
c'est un exemple bien sur, après je devrai adapter la formule à chaque plage de données concernée (parfois 2 cellules, parfois 10, etc.) Ma feuille excel fait 15.000 lignes !
Est-ce possible ? (je précise que je me débrouille sous excel mais suis pas non plus une pro des macros, etc. !!)
Merci d'avance !
A voir également:
- Excel: concaténer des valeurs différentes
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Excel trier par ordre croissant chiffre - Guide
1 réponse
Bonjour
On pourrait le faire avec une matricielle-doliprane, mais avec 15000 lignes, tu aurais largement le temps d'aller papoter devant la machine à café
avec une tite macro
Michel
On pourrait le faire avec une matricielle-doliprane, mais avec 15000 lignes, tu aurais largement le temps d'aller papoter devant la machine à café
avec une tite macro
Sub transposer_uniques()
Dim dico As Object, derlig As Integer, cptr As Integer, ref As String, liste
derlig = Columns("A").Find("*", , , , , xlPrevious).Row
Set dico = CreateObject("scripting.dictionary")
For cptr = 1 To derlig
ref = Cells(cptr, "A")
If Not dico.exists(ref) Then dico.Add ref, 1
Next
liste = dico.keys
Range("B2") = Join(liste, "-")
End Sub
Michel
par contre, en l'occurrence c'était un exemple mais mon cas ne se limite pas à concaténer des donnees en colonne A, mais sur pls colonnes différentes, donc plutot en colonne "-1". Est il possible d'adapter la macro pour qu'elle agisse sur les données de la colonne d'avant sans fixer le n° de la colonne?
1/ Pourquoi ne pas l'avoir écrit au 1° post ? :-((
2/ nouvelle demande incompréhensible
:(
donc: j'ai donné l'exemple pour le cas où mes données à concaténer sont en colonne A, mais j'ai plusieurs plages de données à concaténer, qui sont dans différentes colonnes, et je les concatène dans la colonne à droite de celle où se trouvent les données!
Le nombre de lignes n'est pas fixe non plus :-(
En résumé: parfois je dois concaténer les cellules A1 à A4 (et le résultat de la concaténation va en cellule B1) comme ds mon exemple initial, et parfois je cherche à concaténer les cellules F6 à F14 en cellule G6... etc... je sais c pas simple.... en tout cas j'espère avoir été plus claire et te remercie pour ton aide!!
bonnes fêtes !
Saend : as-tu un moyen d'identifier les colonnes à traiter et les lignes de début et de fin des zones à concaténer sans doublon?
Sans une telle identification, même avec une fonction vba avec sélection de la zone à traiter, tu vas passer un sacré temps avec tes 15.000 lignes!
Par défaut, et en reprenant la solution de michel_m, voici la fonction que tu peux utiliser :
Function concat_zone(vZone As Range) As String Dim dico As Object, vCell As Range, liste Set dico = CreateObject("scripting.dictionary") For Each vCell In vZone If Not dico.exists(vCell.Value2) Then dico.Add vCell.Value2, 1 Next liste = dico.keys concat_zone = Join(liste, "-") End FunctionCordialement