Besoin d'une formule de concaténation/conditionnelle
Sawk_
Messages postés
3
Statut
Membre
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour
Je suis entrain de travailler sur un fichier excel ou j'ai des noms de commune dans une première colonne qui se répètent, (par exemple Paris en ligne 2 et Paris en ligne 3), un numéro unique (code SAP) dans une seconde colonne, correspondant à un centre de soin unique
Par exemple
C1 C2 C3
Paris 400001 centre-hospitalier-Delta
Paris 400002 centre-hospitalier-Victor
Lyon 400003 centre-hospitalier-zulu
Lyon 400004 centre-hostitalier-charlie
Je souhaite une formule qui me permettre, dans une 4Ième colonne, d'afficher les deux numéros en colonne deux, dans la première ligne, séparée par un espace pour obtenir la chose suivante
C1 C2 C3 C4
Paris 400001 centre-hospitalier-Delta 400001 400002
Paris 400002 centre-hospitalier-Victor
Lyon 400003 centre-hospitalier-zulu 400003 400004
Lyon 400004 centre-hostitalier-charlie
En gros, une formule qui puisse, sortir les deux numéros de la colonne deux d'une même ville(conditionnelle donc) en colonne 1, pour les placer cote a cote dans la première ligne de la commune en colonne 4, séparés par un espace.
Si quelqu'un peut me proposer une solution, je lui en serais très redevable (celà fait quelques temps que je fais toujours ces milles lignes à la main, et si une formule pouvait résoudre ce problème ce serait des heures de travail gagnées)
Je suis entrain de travailler sur un fichier excel ou j'ai des noms de commune dans une première colonne qui se répètent, (par exemple Paris en ligne 2 et Paris en ligne 3), un numéro unique (code SAP) dans une seconde colonne, correspondant à un centre de soin unique
Par exemple
C1 C2 C3
Paris 400001 centre-hospitalier-Delta
Paris 400002 centre-hospitalier-Victor
Lyon 400003 centre-hospitalier-zulu
Lyon 400004 centre-hostitalier-charlie
Je souhaite une formule qui me permettre, dans une 4Ième colonne, d'afficher les deux numéros en colonne deux, dans la première ligne, séparée par un espace pour obtenir la chose suivante
C1 C2 C3 C4
Paris 400001 centre-hospitalier-Delta 400001 400002
Paris 400002 centre-hospitalier-Victor
Lyon 400003 centre-hospitalier-zulu 400003 400004
Lyon 400004 centre-hostitalier-charlie
En gros, une formule qui puisse, sortir les deux numéros de la colonne deux d'une même ville(conditionnelle donc) en colonne 1, pour les placer cote a cote dans la première ligne de la commune en colonne 4, séparés par un espace.
Si quelqu'un peut me proposer une solution, je lui en serais très redevable (celà fait quelques temps que je fais toujours ces milles lignes à la main, et si une formule pouvait résoudre ce problème ce serait des heures de travail gagnées)
5 réponses
-
Bonjour,
Combien as tu de lignes dans ton tableau ?
Les noms de villes sont ils toujours groupés ?
Version Excel ?
Michel -
milles lignes, les noms de ville sont en effet toujours groupées, et c'est excel 2010
-
re,
Solution par macro VBA , OK ?
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
J'ai annulé le post de 14:41 car je m'étais mélangé les pinceaux entre les variables cptr et Index
https://www.cjoint.com/?3CCrWVR4AsI
600 lignes durée: >= 0,03 secondes (Ram 512 Mo, Proc 3 ghz)
la cellule A2 nommée origine permet de déplacer le tableau où on veut sans avoir d'effet sur la macro
le code rectifié:Option Explicit Sub concatener_sap() Dim Deb_lig As Byte, Deb_col As Byte, Der_lig As Integer, Tablo() Dim Cptr As Integer, Ville As String, Concat As String, Index As Integer Dim start As Single start = Timer Application.ScreenUpdating = False With Sheets(1) '----- initialisations Deb_lig = .Range("origine").Row Deb_col = .Range("origine").Column Der_lig = .Columns(Deb_col).Find("*", , , , , xlPrevious).Row 'mémorisation en mémoire RAM des données Tablo = .Range(.Cells(Deb_lig, Deb_col), .Cells(Der_lig, Deb_col + 3)).Value '------concaténation des sap dans la colonne 4 de tablo For Cptr = 1 To UBound(Tablo) Ville = Tablo(Cptr, 1) Index = Cptr Concat = "" While Tablo(Cptr, 1) = Ville Concat = Concat & " " & Tablo(Cptr, 2) Tablo(Index, 4) = Trim(Concat) '.Cells(Index + 1, "D") = Concat 'essai If Cptr = UBound(Tablo) Then Exit For Cptr = Cptr + 1 Wend Cptr = Cptr - 1 Next '-----restitution du tableau avec les concaténations .Range("origine").Resize(UBound(Tablo), 4) = Tablo .Range(.Cells(Deb_lig, Deb_col), .Cells(Der_lig, Deb_col + 3)).Borders.Weight = xlThin .Columns(Deb_col + 3).AutoFit End With Application.ScreenUpdating = False MsgBox "durée des concaténations: " & Timer - start & " sec." End Sub
Michel