Faire une macro avec Excel

bisu325 -  
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaiterai faire la macro suivante, mais je n'y arrive pas :
- J'ai une colonne et dans chaque cellule de cette colonne il y a du texte avec 4 lignes par cellules, j'aimerai mettre chaque ligne de chaque cellule dans d'autres colonnes : ligne1 colonne A, ligne 2 colonne B...

J'enregistre donc ma macro en faisant des copiés collés, mais quand je veux l'exécuter, rien n'est reproduit...

Peut-être faut-il passer par word avec des séparateurs de champs? (mais je ne sais pas comment faire)

Pouvez-vous me dire comment faire SVP?

Merci

2 réponses

michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
bonjour
c'est peut-^tre possible sans macro avec la fonction "convertir" mais
il faudrait voir comment est organisé la cellule avec ses 4 lignes
sinon on passera par vba

pour joindre une pièce
mettre le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
https://www.cjoint.com/
et faire un clic droit sur le lien proposé puis "copier l'adresse du lien" et coller dans le message de réponse

0
gbinforme Messages postés 15481 Date d'inscription   Statut Contributeur Dernière intervention   4 730
 
bonjour

Une macro qui doit faire ce que tu veux.

La colonne avec le texte est la colonne "A" et il est ventilé sur les colonnes B (2) et suivantes. Tu peux bien sûr adapter les colonnes en fonction de ton classeur.

Public Sub ventiler()
Dim lig As Long, col As Integer, deb As Integer, pos As Integer
For lig = 1 To Cells(Rows(1).Cells.Count, 1).End(xlUp).Row
    col = 2 'colonne B début ventilation
    deb = 1: pos = 1
    pos = InStr(deb, Cells(lig, "A"), Chr(10))
    While pos > 0
        Cells(lig, col).Value = Mid(Cells(lig, "A").Value, deb, pos - deb)
        col = col + 1: deb = pos + 1
        pos = InStr(deb, Cells(lig, "A"), Chr(10))
    Wend
    Cells(lig, col).Value = Mid(Cells(lig, "A").Value, deb)
Next lig
End Sub
0