Faire une macro avec Excel

Fermé
bisu325 - Modifié par bisu325 le 16/09/2011 à 10:12
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 16 sept. 2011 à 10:33
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


A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 sept. 2011 à 10:31
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 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 711
16 sept. 2011 à 10:33
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