Macro sur excel - facile pour des pros

Salut aux pros.

un autre problème, toujours sur excel:
à partir d’une liste de nombre dans une cellule 2.33.21.9.44, peut-on crééer une macro pour afficher chaque valeur dans une cellule différente.
Et vice versa, comment afficher dans une seule cellule les valeurs contenues dans plusieurs autres.

Les points de séparation peuvent être remplacés par un autre symbole.

Merci d’avance bob.

:hello:
je ne suis pas pro mais amateur et cela n’a donc pas été très facile
teste cela:
pour decomposer

lemot = Selection.Value
colonne = Selection.Column + 1
ligne = Selection.Row
debut = 1
longueur = Len(lemot)
For n = 1 To longueur
If Mid(lemot, n, 1) = "." Then
place = n
Cells(ligne, colonne) = Mid(lemot, debut, place - debut)
debut = n + 1
colonne = colonne + 1
End If
Next
Cells(ligne, colonne) = Mid(lemot, debut, longueur - debut + 1)

pour recomposer:

total = ""
For Each c In Selection.Cells
total = total & "." & c.Value
ligne = c.Row
colonne = c.Column
Next
Cells(ligne, colonne + 1) = Mid(total, 2, Len(total) - 1)

a chaque fois se placer sur
la cellule a decomposer dans le premier cas
toutes les cellules a recomposer dans le second cas

salut pierrejean, alors pro et modeste
ça marche nickel sur une ligne, mais peut-on le faire simultanément sur plusieurs lignes.
J’ai essayé avec ta solution, si je sélectionne plusieurs lignes, tous les nombres intègrent la même cellules.
Tu dois te dire que je suis pénible.
Je te remercie pour ta patience.

:hello:
j’avoue que je m’attendais un peu à ta demande
voici donc la version multiligne
pour decomposer:

For Each c In Selection.Cells
lemot = c.Value
colonne = c.Column + 1
ligne = c.Row
debut = 1
longueur = Len(lemot)
For n = 1 To longueur
If Mid(lemot, n, 1) = "." Then
place = n
Cells(ligne, colonne) = Mid(lemot, debut, place - debut)
debut = n + 1
colonne = colonne + 1
End If
Next
Cells(ligne, colonne) = Mid(lemot, debut, longueur - debut + 1)
Next

pour la recomposition:

For Each c In Selection.Cells
colonne1 = c.Column
ligne1 = c.Row
Exit For
Next
For Each c In Selection.Cells
colonnef = c.Column
lignef = c.Row
Next
For laligne = ligne1 To lignef
total = ""
For lacolonne = colonne1 To colonnef
total = total & "." & Cells(laligne, lacolonne)
Next
Cells(laligne, colonnef + 1) = Mid(total, 2, Len(total) - 1)
Next

:slight_smile:

merci pour ta solution, à la prochaine
bob
:clap:

:hello:
petite modification destinée à resoudre le cas de la recomposition si les lignes ne comprennent pas toutes le même nombre de cases (sans cela des points supplementaires apparaissent en fin de valeur)

For Each c In Selection.Cells
colonne1 = c.Column
ligne1 = c.Row
Exit For
Next
For Each c In Selection.Cells
colonnef = c.Column
lignef = c.Row
Next
For laligne = ligne1 To lignef
total = ""
For lacolonne = colonne1 To colonnef
If Cells(laligne, lacolonne) <> "" Then
total = total & "." & Cells(laligne, lacolonne)
End If
Next
Cells(laligne, colonnef + 1) = Mid(total, 2, Len(total) - 1)
Next

:slight_smile: