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)
A voir également:
- Besoin d'une formule de concaténation/conditionnelle
- Mise en forme conditionnelle excel formule - Guide
- Formule si ou - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Formule mathématique - Télécharger - Études & Formations
- Excel liste déroulante conditionnelle - Guide
5 réponses
Bonjour,
Combien as tu de lignes dans ton tableau ?
Les noms de villes sont ils toujours groupés ?
Version Excel ?
Michel
Combien as tu de lignes dans ton tableau ?
Les noms de villes sont ils toujours groupés ?
Version Excel ?
Michel
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é:
Michel
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