Besoin d'une formule de concaténation/conditionnelle
Fermé
Sawk_
Messages postés
3
Date d'inscription
jeudi 28 mars 2013
Statut
Membre
Dernière intervention
28 mars 2013
-
Modifié par Sawk_ le 28/03/2013 à 11:01
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 28 mars 2013 à 17:53
michel_m Messages postés 16593 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 23 mars 2023 - 28 mars 2013 à 17:53
A voir également:
- Besoin d'une formule de concaténation/conditionnelle
- Formule excel - Guide
- Formule de politesse mail anglais - Guide
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Excel
- Mise en forme conditionnelle excel - Guide
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
5 réponses
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
Modifié par michel_m le 28/03/2013 à 11:12
Modifié par michel_m le 28/03/2013 à 11:12
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
Sawk_
Messages postés
3
Date d'inscription
jeudi 28 mars 2013
Statut
Membre
Dernière intervention
28 mars 2013
28 mars 2013 à 11:18
28 mars 2013 à 11:18
milles lignes, les noms de ville sont en effet toujours groupées, et c'est excel 2010
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
28 mars 2013 à 12:33
28 mars 2013 à 12:33
re,
Solution par macro VBA , OK ?
Solution par macro VBA , OK ?
Sawk_
Messages postés
3
Date d'inscription
jeudi 28 mars 2013
Statut
Membre
Dernière intervention
28 mars 2013
28 mars 2013 à 13:02
28 mars 2013 à 13:02
re michel, oui, ca serait ok!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
michel_m
Messages postés
16593
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
23 mars 2023
3 292
Modifié par michel_m le 28/03/2013 à 17:54
Modifié par michel_m le 28/03/2013 à 17:54
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