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

XL 2013 Concaténation (coller des valeurs de plusieurs cellules en une seule)

Clément_1728

XLDnaute Nouveau
Bonjour à tous, voici mon problème :

je souhaite concaténer des valeurs de coordonnées X,Y

Pour cela, je dispose d'une colonne A contenant les coordonnées X, et Y dans une colonnes B, sous la forme suivante :

A B

0.97375 46.05626
0.97145 46.02315
etc etc

Le but est d'avoir dans la cellule C1 la forme suivante : 0.97375 46.05626,0.97145 46.02315
En prenant en compte les séparateurs (espace et virgule)

J'ai bien entendu cherché avant de poster mais je n'ai rien trouvé de concluant. Cela est-il faisable ?
Merci à vous
 
Solution
Bonjour,
Vous allez donner les hypothèses au compte goutte ?
Car le post 4 supposait les post #2 et #3 étaient corrects, mais juste le besoin de passer en VBA.

Donc avec cette nouvelle donnée, essayez ça :
VB:
Sub Concatene()
Dim i As Integer, Valeur As String
Valeur = ""
For i = 1 To Application.CountIf(Range("A:A"), "*") ' à adapter
    Valeur = Valeur & Cells(i, 1) & " " & Cells(i, 2) & ","
Next i
    Cells(1, 3) = Mid(Valeur, 1, Len(Valeur) - 1) ' Suppression de la dernière virgule
End Sub

Clément_1728

XLDnaute Nouveau
Bonjour,

Merci pour vos retours, je précise que je souhaite faire ça en VBA puis insérer cette concaténation dans une boucle for, car mes coordonnées peuvent aller jusqu'à A15 et B15 par exemple voir plus.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Bonjour Clément, Yoyo,
Alors essayez ça :
VB:
Sub Concatene()
Dim i As Integer, Valeur As String
For i = 1 To Application.CountIf(Range("A:A"), "*") Step 2 ' à adapter
    Valeur = Cells(i, 1) & " " & Cells(i, 2) & "," & Cells(i + 1, 1) & " " & Cells(i + 1, 2)
    Cells(i, 3) = Valeur ' si rangement en colonne C
Next i
End Sub
En supposant qu'on doit traiter toute la colonne A et que le résultat est à mettre en colonne C.
Sinon adapter.
Et si on veut un rangement sans "trous" dans la colonne C :
VB:
Sub Concatene()
Dim i As Integer, Valeur As String
For i = 1 To Application.CountIf(Range("A:A"), "*") Step 2 ' à adapter
    Valeur = Cells(i, 1) & " " & Cells(i, 2) & "," & Cells(i + 1, 1) & " " & Cells(i + 1, 2)
    Cells((i + 1) / 2, 3) = Valeur ' si rangement en colonne C
Next i
End Sub
 
Dernière édition:

Clément_1728

XLDnaute Nouveau
Merci pour ton retour j'essaie ça

Ton premier code fonctionne mais ne garde qu'en mémoire les deux dernières lignes dans la cellule C1

Je teste le second, comme je souhaite avoir dans C1 quelque chose de la forme suivante :

C1 = A1 B1,A2 B2,A3 B3.... An Bn (n étant la dernière ligne à traiter du tableau)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Vous allez donner les hypothèses au compte goutte ?
Car le post 4 supposait les post #2 et #3 étaient corrects, mais juste le besoin de passer en VBA.

Donc avec cette nouvelle donnée, essayez ça :
VB:
Sub Concatene()
Dim i As Integer, Valeur As String
Valeur = ""
For i = 1 To Application.CountIf(Range("A:A"), "*") ' à adapter
    Valeur = Valeur & Cells(i, 1) & " " & Cells(i, 2) & ","
Next i
    Cells(1, 3) = Mid(Valeur, 1, Len(Valeur) - 1) ' Suppression de la dernière virgule
End Sub
 

Clément_1728

XLDnaute Nouveau
Desolé Sylvanu, je pensais avoir expliqué le problème assez précisément, je penserai à être plus précis dorénavant.

En tout cas merci beaucoup, ton dernier post, c'est exactement ce qu'il me fallait. ça marche parfaitement !
 

badraaliou4

XLDnaute Occasionnel
VB:
Sub Concent()
Dim n As Integer
Dim EmailGroup As String
n = 3
EmailGroup = Sheets("feuil1").Range("a2").Value
Do While Sheets("feuil1").Range("a" & n).Value <> ""
   EmailGroup = EmailGroup & "; " & Sheets("feuil1").Range("a" & n).Value
   n = n + 1
Loop
Sheets("feuil1").Range("a1") = EmailGroup
End Sub
 

Discussions similaires

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