IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Répartir le contenu d'une cellule sur plusieurs lignes [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 78
    Points
    78
    Par défaut Répartir le contenu d'une cellule sur plusieurs lignes
    Bonjour,

    Soit un tableau dont une colonne dont certaines cellules contenant une série de chiffres séparées par des ,
    ex : ligne1 2524, 2525, 2526

    Je cherche à obtenir
    ligne1 2524
    ligne2 2525
    ligne3 2526

    les lignes2 et 3 ayant été insérées.

    Je n'arrive pas à adapter les macros approchantes trouvées sur le forum à ce cas.(à moins que cela soit faisable avec les formules ?)
    Merci de votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Bonjour

    Voici un code : sépare les nombres séparés par "," et écrit dans les autres cellules

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ExtractionNombres()
        Dim Tableau() As String
        Dim i As Integer
        x = Cells(1, 1).Value
        Tableau = Split(x, ", ")
     
        For i = 0 To UBound(Tableau)
              Cells(i + 1, 1).Value = Tableau(i)
        Next i
    End Sub

  3. #3
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    les valeurs de la colonne A sont réparties à partir de la colonne B :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test1()
        Dim C As Range, Item As Variant, Ctr As Integer
        For Each C In Range([A1], Cells(Rows.Count, 1).End(xlUp))
            Ctr = 1
            For Each Item In Split(C.Value, ", ")
                Ctr = Ctr + 1
                Cells(C.Row, Ctr) = Item
            Next Item
        Next C
    End Sub

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 78
    Points
    78
    Par défaut
    merci de vos réponses.
    Le premier code fonctionne sur la premiere ligne rencontrée avec plusieures occurences dedans mais je suis incapable de reproduire le truc pour les suivantes

    Le seconde separe bien les valeurs...mais en colonne or j'essaie de les avoir en ligne.

    Dans la piece jointe, en feuille1 les données de départ, en feuille 2 les données que je souhaiterais à l'arrivée.
    Merci
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub test1()
        Dim C As Range, Item As Variant, Ligne As Long, Plage As Range, Ctr As Integer
        Ligne = 0
        With Sheets("Feuil1")
            Set Plage = .Range(.[B1], .Cells(.Rows.Count, 2).End(xlUp))
        End With
        With Sheets("Feuil2")
            For Each C In Plage
                Ctr = C.Offset(, -1).Value
                If C.Value <> "" Then
                    For Each Item In Split(C.Value, ", ")
                        Ligne = Ligne + 1
                        If Ctr <> 0 Then
                            .Cells(Ligne, 1) = Ctr
                            Ctr = 0
                        End If
                        .Cells(Ligne, 2) = Item
                    Next Item
                End If
            Next C
        End With
    End Sub

  6. #6
    Membre expert Avatar de QuestVba
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2012
    Messages
    2 477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2 477
    Points : 3 865
    Points
    3 865
    Par défaut
    Bonjour,

    Ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub ExtractionNombres()
        Dim Tableau() As String
        Dim i As Integer
     
        Sheets("feuil1").Activate
        Range("a1").Activate
     
        Do
     
            x = ActiveCell.Value
            Tableau = Split(x, ", ")
     
            For i = 0 To UBound(Tableau)
                ActiveCell.Value = Tableau(i)
                ActiveCell.Offset(rowoffset:=1, columnoffset:=0).Activate
                If i <> UBound(Tableau) Then Selection.EntireRow.Insert
            Next i
     
        Loop Until ActiveCell = ""
     
    End Sub

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 191
    Points : 78
    Points
    78
    Par défaut
    merci !
    C'est parfait.
    Ensuite, il me reste qques manip à faire pour remplir mon tableau initial qui comporte bcp plus de colonnes.
    Merci encore.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Répartir le contenu d'une cellule sur plusieurs lignes
    Par Sandrineboubou dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/02/2019, 09h45
  2. répartir le contenu d'une colonne sur plusieurs colonnes
    Par thierry.drot dans le forum Excel
    Réponses: 1
    Dernier message: 28/10/2012, 11h12
  3. [XL-2007] Séparer le contenu d'une cellule en plusieurs lignes
    Par Mimosa777 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/12/2011, 17h36
  4. Réponses: 4
    Dernier message: 22/01/2008, 16h59
  5. [TStringGrid] Une cellule sur plusieurs lignes.
    Par Caine dans le forum Delphi
    Réponses: 15
    Dernier message: 28/03/2007, 12h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo