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

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
 

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

Statistiques des forums

Discussions
315 088
Messages
2 116 089
Membres
112 658
dernier inscrit
doro 76