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 :

Trier l'ordre des colonnes en fonction de leur nom [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Par défaut Trier l'ordre des colonnes en fonction de leur nom
    Bonjour tout le monde,

    alors voila mon problème : j'ai un tableau excel avec une dizaine de colonnes remplies de données. J'aimerai faire une macro permettant de mettre les colonnes dans l'ordre.
    Par exemple, je veux que la colonne Nom qui est à la position 4 se trouve à la position 1, et cela en le codant en VBA en ayant seulement pour indication le nom de la colonne.

    J’espère avoir été clair, merci de votre aide !

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je peux te proposer ce code issu de ma bibliothèque personnelle.

    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
    36
    37
    38
    39
    40
    41
    42
     
    Option Explicit
     
    Public Sub inversion_colonnes()
     
    Dim tblo_ordre As Variant
    Dim ub As Byte
     
    tblo_ordre = Array("J", "H", "U", "A", "B", "O", "C", "F", "G", "I", "D", "E", "N", "K", "L", "M", "P", "Q", "R", "S", "T")
    ub = UBound(tblo_ordre)
     
    Dim derlign As Byte
     
    With Worksheets("lawks")
            derlign = .Cells(.Rows.Count, 2).End(xlUp).Row
    End With
     
    Dim i As Integer, j As Byte
    Dim tblo() As Variant
     
    Application.ScreenUpdating = False
     
    For i = 1 To derlign
            For j = 1 To ub
                    ReDim Preserve tblo(1 To j)
                    'tblo(j) = Worksheets("Données_brutes").Cells(i, Range(tblo_ordre(j) & "1").Column)
                    With Worksheets("lawks")
                            tblo(j) = .Cells(i, .Range(tblo_ordre(j) & "1").Column)
                    End With
                    ''Debug.Print tblo(j)
            Next j
            With Worksheets("lawks").Range("A" & i)
                    With .Resize(1, ub)
                            .Value = tblo
                            .EntireColumn.AutoFit
                    End With
                    '.NumberFormat = "0"
            End With
            Erase tblo
    Next i
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Par défaut
    Merci MarcelG, mais je ne comprend pas bien que tu as mis dans ton tblo_ordre ?

    Pour ce que tu as dis Menhir, pour moi l'ordre est est ordre que je dois respecter, c'est à dire que je reçois des tableaux excel et le but de la macro est de mettre les colonnes dans le l'ordre que je me suis fixé. Voici un exmple :
    Nom Prenom Age Sex Tel
    Ce tableau est mon "modèle" de base, mais je reçois des tableaux par exemple dans cet ordre :
    Age Tel Nom Sex Prenom

    Donc je dois remettre ce tableau sous la forme du premier..

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Clément,

    tblo_ordre reporte l'ordre des colonnes une fois celles-ci déplacées, autrement dit l'ordre dans lequel tu souhaites voir tes données disposées.

    Ainsi, dans mon exemple,
    -la colonne "J", après déplacement, sera la 1ere colonne ("A")
    -la colonne "H", après déplacement, sera la 2ème colonne ("B")
    -la colonne "U", après déplacement, sera la 3ème colonne ("C")

    Tu peux donc appliquer ce tableau à ton cas ("C","E"....), si la colonne "C" est, dans le bon ordre, la 1ère colonne, "E" la 2ème, etc....

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 14
    Par défaut
    Ah je vois ce que tu as compris mais c'est pas ça, le tri ne doit pas se faire en fonction du nom de colonne "B", "F"..., mais en fonction de la première cellule de la colonne, qui est le titre.

    Merci d'ailleurs pour tes réponses rapides.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour

    Et que donne la simple utilisation de l'enregistreur de macros ?
    L'as-tu essayée ? Fais-le.

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par ClémentJard1 Voir le message
    alors voila mon problème : j'ai un tableau excel avec une dizaine de colonnes remplies de données. J'aimerai faire une macro permettant de mettre les colonnes dans l'ordre.
    C'est quoi pour toi "dans l'ordre" ?
    Classées par ordre alphabétique en fonction du contenu des entêtes ?

    Par exemple, je veux que la colonne Nom qui est à la position 4 se trouve à la position 1, et cela en le codant en VBA en ayant seulement pour indication le nom de la colonne.
    Ce que tu appelles le "nom de la colonne", est-ce un nom de cellule (au sens où l'entend Excel) ou le contenu des cellules d'entête ?
    Lorsqu'on a le "nom" de la colonne, comment savoir à quelle position la placer.

    Pour déplacer une colonne, tu peux utiliser la méthode Cut pour l'enlever de sa position source puis Insert pour la placer à sa position de destination.
    Lire ceci :
    https://msdn.microsoft.com/fr-fr/lib...4(v=office.15)
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Columns(4).Cut
    Columns(1).Insert

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/02/2014, 15h09
  2. agir sur l'ordre des colonnes ?
    Par Merfolk dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 03/08/2006, 16h58
  3. [C#] ordre des colonnes dans un datagrid
    Par enfants dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/06/2006, 01h35
  4. Ordre des Colonnes d'une requête
    Par dlh1222 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 23h43
  5. Rajout colonne - changer l'ordre des colonnes ?
    Par Coptere dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/09/2005, 10h56

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