Lister toutes les colonnes

Bonjour,

Y a t-il un moyen automatique de lister toutes les colonnes de toutes les feuilles d'un classeur Google Sheet, en les classant par feuille ?

Sinon, est ce faisable sous Excel ?

Est il possible également de le faire pour tous les fichier Sheets d'un dossier dans Drive ? Avec classement par classeur et par feuille ?

Même question pour Excel...

Mon problème : j'ai une centaine de reportings dont je dois récupérer les noms de colonne...

Help

Merci

Bonjour

Avec Excel la réponse est OUI !

Lol !

Et comment fait on ?

Bonjour

Pourquoi

Lol !

Et comment fait on ?

Excel et VBA je sais faire mais pas deviner ce que tu ne dis pas ?

Y a-t-il une ligne unique qui permet d'identifier les colonnes utiles/remplies ?

Les classeurs sont ils tous identiques au moins dans la forme (même si le nombre de colonnes change) ?

As tu un classeur exemple représentatif à proposer ?

Les noms des colonnes sont sur la ligne 1.

Les classeurs ont des nombres de feuilles variables mais toutes les feuilles sont remplies.

Nombre de colonnes variable.

Données confidentielles, je. Et peux pas partager de fichier.

Merci pour ton aide précieuse

Bonjour

Sur ce Forum comme sur beaucoup d'autres il y a des tas de fichiers contenant des informations confidentielles qui transitent, mais il est plus difficile de travailler sans un exemple représentatif de la situation, du contexte que de fournir un fichier donnant la forme et la présentation générale des éléments à prendre en compte :

Point 6 de https://forum.excel-pratique.com/viewtopic.php?f=2&t=13

6. Pensez à joindre un fichier pour faciliter la compréhension du problème et augmenter les chances de vous faire aider (taille maximale autorisée : 1mo). N'oubliez pas de retirer toutes les informations confidentielles avant de joindre votre fichier !

Bref la réponse peut (en considération des éléments connus) être quelque chose du genre

Sub ParcoursColonnesDesOnglets()
Dim ligRef          '   La ligne de reference des "entetes" de colonnes
Dim colDeb, colFin  '   La 1ere et Dere colonne

Dim cptOnglet       '   Compteur pour parcourir les onglets du classeur en cours
Dim tabOnglets()    '   Tableau pour recevoir les onglets du classeur en cours

Dim cptColonne      '   Compteur pour parcourir les colonnes de l'onglet en cours
Dim tabColonnes()   '   Tableau pour recevoir les entetes de colonnes de l'onglet en cours

Dim ligAct          '   Ligne courante pour l'ecriture des informations collectees

    ligAct = 0  '   Pour l'instant a 0 (zero)
    ligRef = 1  '   A adapter eventuellement
    colDeb = 1  '   A adapter eventuellement
    '   Calcul de la derniere colonne
    '   =>  Columns.Count       Donne la derniere colonne dans la feuille utilisee
    '                           Donc toujours valable qque soit la verions utilisee !
    '   =>  End(xlToLeft)       Retourne "vers la gauche" (to left) jusqu'a la prochaine colonne NON vide
    '                           Fonctionne comme [CTRL-FlecheGauche]
    colFin = .Cells(ligRef, Columns.Count).End(xlToLeft).Column

    '   Il faut donner les dimensions le tableau des onglets
    ReDim tabOnglets(1 To Sheets.Count)     ' Sheets.Count  donne le nombre d'onglets dans un classeur

    '   Parcours des onglets
    For cptOnglet = 1 To Sheets.Count
        '   Prise en compte de l'onglet en cours sans deplacement physique par Excel
        With Sheets(cptOnglet)
            '   Le tableau des entetes de colonnes se dimensionne automatiquement
            tabColonnes = Range(.Cells(ligRef, colDeb), .Cells(ligRef, colFin))
        End With

        '   !!! Trouver ici le moyen de quoi faire des informations colllectees
        '       Au fur et à mesure du parcours des onglets
        '
        '   Quelque chose du genre :
        With Worksheets("OuMettreLeResultat")
            '   Ecrire le nom de l'onglet en cours en colonne 1
            .Cells(ligAct + 1, 1) = Sheets(cptOnglet).Name
            '   Ecrire le tableau des entetes en colonne 2
            '       Resize permet de "redimensionner" la cellule en fonction des coordonnes du tableau
            '           Il faut inverser (avec WorksheetFunction.Treanpose) le tableau
            '           parce qu'Excel considere un "range" comme etant constitué
            '               d'abord de LIGNES (1ere dimension du tableau)
            '               et ensuite de COLONNES(2eme dimension du tableau)
            '           MAIS lorsque le range ne contient qu'un seule LIGNE le "range" est inversé par Excel
            .Cells(ligAct + 2, 2).Resize(UBound(tabColonnes, 2), UBound(tabColonnes, 1)) = WorksheetFunction.Transpose(tabColonnes)
            '   Actualiser la derniere ligne ecrite
            '   Meme principe pour la ligne que pour colFin -> xlUp vers le haut depuis la dere ligne Excel (Rows.count)
            ligAct = .Cells(Rows.Count, 2).End(xlUp).Row
        End With

    Next

End Sub

Merci mais ça ne fonctionne pas

Erreur de compilation

Référence incorrecte ou non qualifiée

colFin = .Cells(ligRef, Columns.Count).End(xlToLeft).Column

Bonjour

Sans Exemple, j'ai fait le programme à la volée... Il peut donc subsister quelques erreurs !

Et j'ai bien dit quelque chose du genre

Il faut que tu adaptes un peu le code à ton (tes) cas

En particulier l'erreur provient du fait que .CELLS fait référence à quelque chose de non qualifié, autrement dit il lui manque un nom d'onglet.

Il faut donc autour du .CELLS qui génère l'erreur mettre un WITH WORKSHEETS("nomOngletALire") / END WITH

Rechercher des sujets similaires à "lister toutes colonnes"