- Forums
- Tutoriels
- FAQ
- Blogs
- Chat
- Newsletter
- Emploi
- �tudes
- Droit
- Club
- Office
- Access
- Excel
- Word
- Outlook
- PowerPoint
- SharePoint
- MS Project
- OpenOffice & LibreOffice
- FORUM OFFICE
- FAQ OFFICE
- TUTORIELS OFFICE
- LIVRES OFFICE
- SOURCES VBA
- OFFICE 2010
Navigation
Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter
- Forum
- Logiciels
- Microsoft Office
- Excel
- [XL-2003] concat�nation + s�parateur
Sujet :
Excel
24/02/2010, 14h23 #1
concat�nation + s�parateurBonjour,
Je n'arrive pas � r�soudre un probl�me de concat�nation. Je m'explique : j'ai une ligne de valeurs (1 | 2 | 3 | 4 ...) et je dois obtenir une concat�nation des valeurs dans une seule cellule (1 2 3 4...)
mais avec un arobase entre chaque valeur (1 @ 2 @ 3 @ 4...).Et l�, je bloque...
Quelqu'un aurait-il une id�e ?
Merci d'avance...
24/02/2010, 14h25 #2
Membre habitu�
Exemple si tes cellules sont en A1, B1, C1 et D1 :
24/02/2010, 14h29 #3
merci tranzebou mais je ne peux m'en contenter car cela porte sur un nombre tr�s volumineux de cellules. Autrement dit, j'aurai besoin d'une formule qui dit :
de la cellule A1 � la cellule A1000, il faut me les concat�ner en A1001
et m'ajouter un @ entre chaque valeur de cellules...Une id�e...?
24/02/2010, 14h33 #4
Re,
Par formule soit avec concatenate:=CONCATENATE(A10;"@";B10;"@";C10;"@";D10)
Ou encore=A10&"@"&B10&"@"&C10&"@"&D10
Ou si tu place l'arobase en A1=A10&$A$1&B10&$A$1&C10&$A$1&D10
Mais c'est peut-�tre un peu lourd en fonction du nombre de colonne, sinon il y a toujours une macro qui le ferait...A+
Edit: D�sol� pas rafraichi, donc � mon avis on en arrive � une macro, �a te va ?
N'oubliez pas le
si votre probl�me est solutionn�.24/02/2010, 14h38 #5
Merci Fvandermeulen, tu �claircis ma pens�e. Et oui, tu vois juste en me disant que c'est peut-�tre lourd et donc laborieux et consommateur de temps.
Ainsi, si tu as une id�e de macro, je suis preneur. mais peut-�tre n'est-ce plus une question Excel...?
Merci bien
24/02/2010, 14h45 #6
Re,
On peut continuer sur ce post, c'est pas bien grave...
As tu toujours le m�me nombre de colonne et le m�me nombre de ligne ?
Est-ce une action unique ou r�curente ?
O� veux tu le r�sultat? Dans la premi�re colonne vide ou une fixe ?A+
N'oubliez pas le
si votre probl�me est solutionn�.24/02/2010, 15h05 #7
Membre habitu�
Ah OK ;-)
Bon �a se complique un peu du coup, � part faire quelquechose en VBA je vois pas trop...
Tu as un exemple ci-dessous mais attention je suis loin d'etre un expert.
De + concat�ner 1000 celulles dans une seule le r�sultat risque d'etre illisible et pas sur qu'Excel appr�cie d'avoir des milliers de caract�res dans une cellule...
Enfin juste par curiosit�, quel est la finalit� de cette concat�nation ?1
2
3
4
5
6
7
8
9
10Sub Macro1() Range("A1").Select FORMULE = ActiveCell.Value For COMPTEUR = 1 To 999 ActiveCell.Offset(1, 0).Select FORMULE = FORMULE & "@" & ActiveCell.Value Next ActiveCell.Offset(1, 0).Select ActiveCell.Value = FORMULE End Sub
@+24/02/2010, 15h26 #8
Rebonjour Tranzebou,
Pour info, c'est pour faire un import de donn�es dans une base et cr�er les relations automatiquement. mais, comme je travaille dans une soci�t� importante, je ne peux t'en dire plus... d�sol�...
Je la teste mais avant, je r�ponds � Fvandermeulen.
A+
24/02/2010, 15h28 #9
Re,
Attention Tranzebou, ton offset se fait sur la ligne, alors que d'apr�s ce que j'ai compris c'est par colonne.
Et il vaut mieux �viter les select qui ralentissent le code, sinon l'id�e y est.Voici une proposition qui g�re un nombre de colonne variable par ligne
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23Sub Concatenation() Dim DerLig As Long, DerCol As Long, r As Long, c As Long Dim LaConc As String DerLig = Sheets("NomDeTaFeuille").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'récupère le nombre de ligne remplies sur base de la colonne A For r = 1 To DerLig 'Boucle sur chaque ligne DerCol = Sheets("NomDeTaFeuille").Cells(r, Rows(r).Cells.Count).End(xlToLeft).Column 'récupère le nombre de colonne remplies de la ligne For c = 1 To DerCol If c = DerCol Then LaConc = LaConc & Sheets("NomDeTaFeuille").Cells(r, c) 'Si dernière colonne pas de @ à la fin Else LaConc = LaConc & Sheets("NomDeTaFeuille").Cells(r, c) & "@" 'Concaténation successive End If Next c Sheets("NomDeTaFeuille").Cells(r, DerCol + 1) = LaConc 'On place le résultat dans la 1ère colonne vide LaConc = "" 'Réinitialisation de la concaténation Next r End Sub N'oubliez pas le
si votre probl�me est solutionn�.24/02/2010, 15h24 #10
Fvandermeulen,
J'ai r�colt� les infos dont tu as besoin pour la macro.
As tu toujours le m�me nombre de colonne et le m�me nombre de ligne ?
Non, une ligne peut contenir 260 valeurs et donc faire r�f�rence � 260 cellules. Une autre peut renvoyer � 2 valeurs uniquement.
Au niveau des lignes, il se peut que des coll�gues sp�cialistes en ajoutent. Donc, partons plut�t sur l'id�e que le nombre n'est pas fixe.Est-ce une action unique ou r�curente ?
C'est une action r�currente.O� veux tu le r�sultat? Dans la premi�re colonne vide ou une fixe ?
Dans une colonne fixe. La colonne JA plus pr�cis�ment. Autrment dit, dans la colonne 174.Derni�re petite pr�cision, les colonnes A1 et A2 ne doivent pas �tre prises en compte dans la concat�nation.
Voil�, je te laisse avec ces quelques infos. merci en tout cas de ton aide, car le VBA n'est pour moi qu'un V�ritable Baragouinage pour As...
merci encore...
24/02/2010, 15h59 #11
Re,
Le code revu selon tes infos � savoir on place le r�sultat en colonne 174 et on ne passe pas sur les lignes 1 et 2.
Par contre j'ai pas compris si on doit concat�ner la colonne A donc � voir...Sub Concatenation()
Dim DerLig As Long, DerCol As Long, r As Long, c As Long
Dim LaConc As StringDerLig = Sheets("NomDeTaFeuille").Cells(Columns(1).Cells.Count, 1).End(xlUp).Row 'r�cup�re le nombre de ligne remplies sur base de la colonne A
For r = 3 To DerLig 'Boucle sur chaque ligne '3 car on commence � la ligne 3
DerCol = Sheets("NomDeTaFeuille").Cells(r, Rows(r).Cells.Count).End(xlToLeft).Column 'r�cup�re le nombre de colonne remplies de la ligne
For c = 1 To DerCol 'Changer le 1 avec le num�ro de la premi�re colonne � concat�ner
If c = DerCol Then
LaConc = LaConc & Sheets("NomDeTaFeuille").Cells(r, c) 'Si derni�re colonne pas de @ � la fin
Else
LaConc = LaConc & Sheets("NomDeTaFeuille").Cells(r, c) & "@" 'Concat�nation successiveEnd If
Next cSheets("NomDeTaFeuille").Cells(r, 174) = LaConc 'On place le r�sultat dans la colonne 174
LaConc = "" 'R�initialisation de la concat�nation
Next rEnd Sub
N'oubliez pas le
si votre probl�me est solutionn�.24/02/2010, 16h05 #12
Merci bien pour ta r�ponse. Je la teste et je te fais un retour !
Camzo
- Forum
- Logiciels
- Microsoft Office
- Excel
- [XL-2003] concat�nation + s�parateur
Discussions similaires
R�ponses: 3
Dernier message: 23/10/2009, 11h33
R�ponses: 13
Dernier message: 22/01/2009, 14h27
R�ponses: 5
Dernier message: 20/09/2007, 19h26
R�ponses: 5
Dernier message: 21/01/2003, 17h26
R�ponses: 5
Dernier message: 13/08/2002, 11h30
Partager
Partager
×
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.