Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Concaténer plusieurs données

Isere38

XLDnaute Nouveau
Bonjour à tous...
Je me casse la tête à essayer de trouver une formule adéquate mais mes modestes connaissances en excel ne me permettent pas de trouver la solution.
Je souhaite concaténer plusieurs informations : pour expliquer un peu :
il s'agit de propriétaires de parcelles. Prenons un exemple :
j'ai une parcelle qui a 4 propriétaires différents. J'ai créé 4 lignes différentes qui ont, dans une colonne, le même numéro de parcelles mais pas le même propriétaire. Je souhaite créer un champ pour concaténer les noms et prénoms de mes propriétaires en fonction de la parcelle et avoir ainsi quelque chose qui ressemble à ça :
NOM1/PRENOM1, NOM2/PRENOM2, NOM3/PRENOM3, NOM4/PRENOM4
Je ne sais pas si j'ai été très claire... Je vous joins un fichier Excel d'exemple. La colonne que je cherche à remplir automatiquement est C_UAF.
Demandez moi plus de précisions si besoin !
Merci d'avance !
Isere38 est déconnecté Envoyer un message privé Réponse avec citation
 

Pièces jointes

  • exemple_EXCEL_concatener.xlsx
    9.9 KB · Affichages: 82

Robert

XLDnaute Barbatruc
Repose en paix
Re : Concaténer plusieurs données

Bonjour Isère et bienvenu(e), bonjour le forum,

Si une macro peut convenir, essaie le code ci-dessous :
Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim nb As Byte 'déclare la variable nb (NomBre)
Dim nom As String 'déclare la variable nom

With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
    dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
    Set pl = .Range("A2:A" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    nb = Application.WorksheetFunction.CountIf(pl, cel.Value) 'définit le nombre d'occurrences de la valeur de la cellule cel dans la plage pl
    If cel.Offset(1, 0).Value = cel.Value Then 'condition : si la valeur de la cellule en dessous est égale à la valeur de de la cellule cel
        nom = IIf(nom = "", cel.Offset(0, 1).Value, nom & ", " & cel.Offset(0, 1).Value) 'définit le nom
    Else 'sinon
        nom = IIf(nom = "", cel.Offset(0, 1).Value, nom & ", " & cel.Offset(0, 1).Value) 'définit le nom
        cel.Offset(-(nb - 1), 2).Value = nom 'place le nom sur la première ligne
        nom = "" 'réinitialise le nom
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
 

Isere38

XLDnaute Nouveau
Re : Concaténer plusieurs données

Je n'ai qu'une seule chose à dire : MERCI ! J'y étais finalement arrivée par des moyens détournés mais le résultat n'était pas aussi satisfaisant !
Bonne journée !
Magali
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Concaténer plusieurs données

Bonjour Magali, Papou, bonjour le forum,

Désolé Magali d'utiliser ton fil pour cela mais je ne pouvais pas ne pas répondre...
Je profite donc pour vous souhaiter à toi et à ce Cher Papou une très bonne Année 2013. Que les vent de la Santé soufflent fort et gonflent les voiles de l'Amour pour nous amener tout droit vers les destinations du Bonheur, de la Paix, et de la Bonne Humeur.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…