Concaténation d'une même cellule VBA

Bonjour,

Je cherche à trouver une méthode simple permettant de prendre une plage de cellule et faire une concaténation au sein même de la cellule grâce à une macro.

Exemple :

A B

1540 1 540

2585 2 585

Pour une certaine raison je ne veux pas utiliser la fonction format dans VBA.

J'ai donc décidé de faire comme cela :

Sub concatener()

If Len(Range("a3")) = 8 Then

Cells(3, 2).Value = Mid(Range("a3"), 1, 2) & " " & Mid(Range("a3"), 3, 3) & " " & Mid(Range("a3"), 6, 3)

ElseIf Len(Range("a3")) = 7 Then

Cells(3, 2).Value = Mid(Range("a3"), 1, 1) & " " & Mid(Range("a3"), 2, 3) & " " & Mid(Range("a3"), 5, 3)

End If

If Len(Range("a4")) = 8 Then

Cells(4, 2).Value = Mid(Range("a4"), 1, 2) & " " & Mid(Range("a4"), 3, 3) & " " & Mid(Range("a4"), 6, 3)

ElseIf Len(Range("a4")) = 7 Then

Cells(4, 2).Value = Mid(Range("a4"), 1, 1) & " " & Mid(Range("a4"), 2, 3) & " " & Mid(Range("a4"), 5, 3)

End If

End Sub

Le problème c'est que cela est long sur plusieurs lignes... Y a t-il une façon de simplifier cela ?

Vous trouverez ci-joint un exemple.

Amicalement vôtre.

5concatenation.xlsm (21.32 Ko)

Bonjour Frosier,

Tu peux commencer par créer une boucle afin de pas a a voir à faire la manip pour tous tes "Range".

Bonjour Frosier,

Tu peux commencer par créer une boucle afin de pas a a voir à faire la manip pour tous tes "Range".

Comment fais-tu cela ? Ma boucle serait : tant que la cellule A n'est pas vide alors on fait l'opération, mais je ne sais pas l'écrire (amateur sur VBA)...

Merci par avance !

Tu peux essayer comme ceci:

Sub test()
    Dim sh As Worksheet, derlgn&

    Set sh = Worksheets("Nom_de_ta_Feuil")
    derlgn = sh.Range("A" & Rows.Count).End(xlUp).Row

    For i = 3 To derlgn
        plage = Range("a" & i)
        If Len(plage) = 8 Then
        Cells(3, 2).Value = Mid(plage, 1, 2) & " " & Mid(plage, 3, 3) & " " & Mid(plage, 6, 3)
    ElseIf Len(Range("a3")) = 7 Then
        Cells(3, 2).Value = Mid(plage, 1, 1) & " " & Mid(plage, 2, 3) & " " & Mid(plage, 5, 3)
    End If

End Sub

Sub test() Dim sh As Worksheet, derlgn& Set sh = Worksheets("Nom_de_ta_Feuil") derlgn = sh.Range("A" & Rows.Count).End(xlUp).Row For i = 3 To derlgn plage = Range("a" & i) If Len(plage) = 8 Then Cells(3, 2).Value = Mid(plage, 1, 2) & " " & Mid(plage, 3, 3) & " " & Mid(plage, 6, 3) ElseIf Len(Range("a3")) = 7 Then Cells(3, 2).Value = Mid(plage, 1, 1) & " " & Mid(plage, 2, 3) & " " & Mid(plage, 5, 3) End If End Sub

Cette formule me copie la valeur d'A4 sur B3 avec le bon format. Il faudrait que A3 soit copié dans B3, etc...

Pardon j'ai oublié l'incrémentation:

Sub test()
    Dim sh As Worksheet, derlgn&

    Set sh = Worksheets("Nom_de_ta_Feuil")
    derlgn = sh.Range("A" & Rows.Count).End(xlUp).Row

    For i = 3 To derlgn
        plage = Range("a" & i)
        If Len(plage) = 8 Then
        Cells(i, 2).Value = Mid(plage, 1, 2) & " " & Mid(plage, 3, 3) & " " & Mid(plage, 6, 3)
    ElseIf Len(Range("a3")) = 7 Then
        Cells(i, 2).Value = Mid(plage, 1, 1) & " " & Mid(plage, 2, 3) & " " & Mid(plage, 5, 3)
    End If

End Sub

Merci pour ton aide si précieuse !!

Rechercher des sujets similaires à "concatenation meme vba"