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 :

Macro tri une colonne de données par catégories


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut Macro tri une colonne de données par catégories
    Bonjour,

    Voila je m'explique, j'ai un fichier excel avec 1 seul colonne comme suit :
    1. Vide
    2. Vide
    3. Vide
    4. Vide
    5. NOM Prenom
    6. Adresse
    7. Ville
    8. Nom Prenom
    9. Adresse
    10. Ville
    11. NOM Prenom
    12. Adresse
    13. Ville
    14. Nom Prenom
    15. Adresse
    16. Ville
    17. NOM Prenom
    18. Adresse
    19. Ville
    20. Nom Prenom
    21. Adresse
    22. Ville
    23. Vide
    24. Vide
    25. Vide
    26. Vide
    27. NOM Prenom
    28. Adresse
    29. Ville
    30. Nom Prenom
    31. Adresse
    32. Ville
    33. .....
    J'aurais besoin de faire 3 colonnes, le 1er avec Nom Prenom, la 2eme avec l'adresse, la 3eme la ville.

    Pour être précis, tous les 18 lignes j'ai 4 lignes vides.

    Je ne pense pas que cela soit compliqué mais quelqu'un peut-il m'aider a faire un code pour cela ?

    Merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en l'absence de précisions, j'ai pris pour règles du jeu :

    - les données sources sont dans une feuille
    - les données réagencées arrivent dans une autre
    - les deux plages sont sur la colonne A

    je te laisse modifier selon tes besoins.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub Arrange()
     
    Dim Wb As Workbook
     
    Dim ShSource As Worksheet
    Dim ShDest As Worksheet
     
    Dim CellSource As Range
    Dim Celldest As Range
     
    Dim Cpt as Integer
     
    Set Wb = ThisWorkbook
    Set ShSource = Wb.Worksheets("LaFeuilleOùSontTesLignes")
    Set ShDest = Wb.Worksheets("LaFeuilleOùExporterLeTri")
     
     
    Cpt = 0
    For Each CellSource In ShSource.Range("A1", "A" & ShSource.UsedRange.Rows.Count)
        If CellSource <> "" Then
            If Cpt = 0 Then
                Set Celldest = ShDest.Range("A65535").End(xlUp)(2)
                Celldest = CellSource
                Cpt = Cpt + 1
            ElseIf Cpt = 1 Then
                    Celldest.Offset(0, 1) = CellSource
                    Cpt = Cpt + 1
            ElseIf Cpt = 2 Then
                    Celldest.Offset(0, 2) = CellSource
                    Cpt = 0
            End If
        End If
    Next CellSource
    End Sub
    Edit : correction terminologique, ce n'est pas un tri mais un agencement

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut
    Merci pour la réponse, sa me donne une erreur :

    L'indice n'appartient pas a la sélection

    a la ligne : Set ShSource = Wb.Worksheets("LaFeuilleOùSontTesLignes")

    Sinon j'ai effectivement 1 feuille avec 1 seul colonne utilisé comme montré en haut et j'aimerais créer une seconde feuille avec un trie sur les 3 colonnes.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour, bonjour,

    cela n'a rien à voir avec un tri !

    Ce serait plus facile à partir d'un classeur exemple en pièce jointe (.xls / .xlsx) …

    Si les données proviennent d'une importation, mieux vaut travailler directement depuis le fichier d'import …

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonsoir

    Est effectivement employé à tort le mot "tri", mais ça ne reste qu'une considération terminologique.

    Chez moi, le code est conforme à la demande, il suffit maintenant de modifier selon tes besoins. Il prend tout ce qu'il y a dans la colonne A, et le restitue par ligne avec les trois champs spécifiés, sans se préoccuper des espaces.

    Mais il est vrai que je suis également partisan du travail en Amont, plutôt qu'en Aval, ça évite de passer par deux procédures (import / "agencement") quand une seule suffit

    La macro plante parce que les noms de feuilles que j'ai mis dans le code sont des exemples, il suffit d'indiquer les feuilles de ton choix.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Par défaut
    Merci pour vos réponse, le code fonctionne parfaitement, effectivement fallait juste modifier ce qui était en rouge avec mes feuilles !

    Mais en amont je ne peux rien faire, a la base c'est un fichier pdf de plus de 400 pages que j'ai convertie en xls qui contenait 400 feuilles.
    J'avais réussi a tout regroupé mais en 1 seul feuilles d'une colonne.

    Maintenant c'est bon j'ai mes 3 colonnes ^^

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/02/2008, 17h20
  2. Supprimer une colonne avec valeurs par défaut
    Par SlashOwnsU dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/09/2006, 10h10
  3. [C#/SQL Server 2005] Comment créer une base de donnée par le code ?
    Par FraktaL dans le forum Accès aux données
    Réponses: 4
    Dernier message: 09/09/2006, 17h27
  4. création d'une base de donnée par programme
    Par lassad dans le forum Bases de données
    Réponses: 9
    Dernier message: 18/10/2005, 16h36

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