Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2011, 15h20   #1
Membre du Club
 
Inscription : mars 2008
Messages : 216
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 216
Points : 58
Points : 58
Par défaut Séparer le contenu d'une cellule en plusieurs lignes

Salut a tous,

j'aimerais savoir comment faire a l'aide d'une macro pour separer le contenu d'une cellule dans une colonne contenant des virgules en plusieurs lignes.

Exemple :
Colonne A |Colonne B
Animal | Lapin, Lion, Chat, Chien
Voiture | Audi, BMW
Fruits | Pomme

Resultats:

Colonne A | Colonne B
Animal | Lapin
Animal | Lion
Animal | Chat
Animal | Chien
Voiture | Audi
Voiture | BMW
Fruits | Pomme

Merci de votre aide d'avance
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 15h50   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Voici un code qui fait ce que tu veux. J'ai essayé de le commenter pour que tu puisses l'adapter à ton problème précis.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Option Explicit
 
Public Sub SeparationEnLignes()
    Dim feuilleSource As Worksheet
    Dim feuilleCible As Worksheet
    Dim iSource, iCible, i As Integer
    Dim currentA, currentB As String
    Dim currentSplit() As String
 
    Set feuilleSource = Worksheets("Feuil1") 'A modifier, la feuille contenant les données originales
    Set feuilleCible = Worksheets("Feuil2") 'A modifier, la feuille où l'on veut le résultat
 
    'Initialisation des compteurs de lignes
    iSource = 1
    iCible = 1
 
    Do While feuilleSource.Cells(iSource, "A").Value <> "" 'Tant qu'il y a qq chose en colonne A
        currentA = feuilleSource.Cells(iSource, "A").Value
        currentB = feuilleSource.Cells(iSource, "B").Value
 
        'On décompose la chaine par les virgules
        currentSplit = Split(currentB, ",")
 
        'Pour chaque élément, on l'écrit dans la feuille cible
        For i = 0 To UBound(currentSplit)
            feuilleCible.Cells(iCible, "A").Value = currentA
            feuilleCible.Cells(iCible, "B").Value = LTrim(currentSplit(i)) 'En enlevant les espaces à gauche
            iCible = iCible + 1
        Next i
 
        iSource = iSource + 1
    Loop
End Sub
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 16h03   #3
Membre du Club
 
Inscription : mars 2008
Messages : 216
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 216
Points : 58
Points : 58
Merci enormement ZebreLoup.. Je suppose que si je souhaite les separer dans differentes colonnes au lieu des differentes lignes, ce code est adaptable ? Je vais essayer cela.

Merci encore
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 16h33   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Si tu veux mettre ça en colonne, il y aura encore plus simple, la fonction de conversion d'Excel (sous 2003 : Données -> Convertir...) ou son équivalent vba TextToColumns
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 17h36   #5
Membre du Club
 
Inscription : mars 2008
Messages : 216
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 216
Points : 58
Points : 58
Merci enormement
Mimosa777 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h14.


 
 
 
 
Partenaires

Hébergement Web