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 :

Ajout de colonne [XL-365]


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
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut Ajout de colonne
    Bonjour à toutes et à tous,

    Dans un tableau (généré via un TCD) dont les en-têtes de colonnes sont affichées en fonction de la présence de données dans la colonne, y a t-il une macro, ou un code VBA qui permet d'ajouter une ou plusieurs en-tête(s) manquante(s) ?

    En prenant les en-têtes de colonnes suivantes
    Nom : T1.PNG
Affichages : 131
Taille : 6,5 Ko

    Comment à l'aide d'un bouton déclenchant une macro ou un code, insérer automatiquement les colonnes D, et E ?
    Sachant que si le tableau présente les en-têtes suivantes
    Nom : T2.PNG
Affichages : 114
Taille : 7,3 Ko

    il faudrait pouvoir insérer automatiquement les colonnes B, D, E, F

    (Dans l'idéal, si quelqu'un a une idée de code qui se baserait sur des intitulés de colonne placés sur un onglet séparé de façon à ce que ce soit adaptable à n'importe quel tableau quels que soient les libellés des en-têtes, ce serait génial)

    Un ENORME MERCI par avance pour toute idée (voire mieux macro ou code VBA), parceque je me casse la tête depuis quelques jours entre les filtres élaborés et les fonctions Index/Equiv...

    Cordialement.

    Jeff

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 569
    Par défaut
    Bonjour

    A quoi ressemble la source du TCD ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut
    Bonjour 78Chris,

    J'ai plusieurs onglets du genre
    Nom : T3.PNG
Affichages : 100
Taille : 11,9 Ko

    Mais quand les colonnes sur les onglets ne contiennent pas de donnée (comme février à décembre sur la copie ci-dessus), le TCD n'affiche que la ou les colonnes renseignées (janvier) alors que je voudrais récupérer l'intégralité des dcolonnes.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Salut,

    C'est faisable via Power Query, en utilisant des jointures a droite ou à gauche selon les cas.
    Par contre, il va falloir ségréger tes données, un tableau source qui ressemble déjà à un TCD (avec des entêtes de ligne et de colonne) est difficilement exploitable.

    Exemple ci-joint:
    Exemple.xlsx

  5. #5
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    tu peux essayer par exemple :

    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
    Sub test()
    AjusteColonnes Feuil2.Rows(1), Array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    End Sub
     
    Sub AjusteColonnes(MesTitres As Range, Attendus As Variant)
    Dim I As Long
    Dim J As Long
    J = MesTitres.Cells(MesTitres.Columns.Count).End(xlToLeft).Column 'dernière colonne
    For I = UBound(Attendus) To 0 Step -1 'on balaie tous les attendus à partir de la fin (à cause des insert...)
        If MesTitres.Cells(J) = Attendus(I) Then
            ' tout va bien, on passe à la colonne précédente
            J = J - 1
        Else
            ' il faut insérer (après la colonne courante)
            MesTitres.Cells(J + 1).EntireColumn.Insert
            MesTitres.Cells(J + 1).Value = Attendus(I)
            ' et on enchaine
        End If
    Next I
    End Sub
    où feuille2.rows(1) représente la plage contenant les en-têtes.

    Mais j'ai un doute sur l'énoncé du problème... Quand tu dis "Généré via un TCD" est-ce qu'il s'agit du TCD lui-même (auquel cas on ne pourra pas insérer de colonnes) ou d'une feuille générée à partir d'un TCD (par copier/coller ou autre) auquel cas il faut surement repenser ça.
    Si par exempte tu utilises Powerquery à la place d'un TCD, tu pourras forcer facilement les colonnes (par exemple en faisant un UNION avec jeu de donnée vide contenant les 12 mois)

  6. #6
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut
    Merciii Tête de chat,

    Le "tableau final" est effectivement un copier/coller du TCD sur un onglet "final". Je vais tester ton code, même si, étant débutant total en VBA, je ne suis pas très à l'aise pour "repenser" l'ensemble du tableau... et encore moins à l'aise avec Powerquery :-)

    mais déjà un ENORME MERCI pour ce code :-)

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 524
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 524
    Par défaut
    Je te conseille de privilégier Power Query, même s'il y a une certaine courbe d'apprentissage.
    C'est natif, et sans code (du moins, le code est généré automatiquement), donc moins sujet aux erreurs.

  8. #8
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2020
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2020
    Messages : 26
    Par défaut
    Merciii Deedolith,

    Je vais effectivement tenter de restructurer tout le tableau d'origine pour minimiser au maximum le code.

    Un ENORME MERCIII également à toi pour cette piste.

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

Discussions similaires

  1. [JTable] ajouter une colonne de checkbox
    Par nawel dans le forum Composants
    Réponses: 3
    Dernier message: 04/05/2005, 14h07
  2. [ADO.Net][VB.NET] Comment ajouter une colonne Integer à un DataTable ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/04/2005, 12h08
  3. [C#] Ajout de colonne dans un DataGrid
    Par pc152 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/09/2004, 17h17
  4. ajout de colonnes sur une selection
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/08/2004, 17h44

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