Supprimer colonnes selon une liste de champ

Bonjour,

Je cherche un moyen de supprimer toutes les colonnes qui ne font pas partie d'une liste.

La liste en question contient le nom des en-tête de colonnes que je veux conserver.

La liste peut être verticale ou horizontale ( aucune préférence).

Prendre en considération que la liste peut être beaucoup plus longue.

Merci d'avance pour votre aide

Bonjour Benibeno, bonjour le forum,

En ligne ou en colonne ? Le code va être complètement différent. Mais ce qui me gêne la plus c'est la liste dans l'onglet liste qui devrait être présentée d'un seule et même manière car, là aussi, le code va changer. Actuellement pour répondre à ton problème il faudrait 4 codes différents. J'ai un peu la flemme là... Quand tu auras fait ton choix et proposé une question unique je te proposerai un code...

Bonjour ThauThème,

La liste peut être en colonne. De mon côté, cela n'a aucune importance.

Simplement faire le choix de la solution qui vous semble la plus simple.

Merci de votre aide!

Bonjour à tous,

une tentative ici

les noms à supprimer doivent être rigoureusement pareils aux titres des colonnes !

P.

Bonjour Benibeno, Patrick, bonjour le forum,

Nos post se sont croisés Patrick...

Essaie comme ça :

Sub Macro1()
Dim D As Worksheet 'déclare la variable D (onglet data)
Dim L As Worksheet 'déclare la variable L (onglet liste)
Dim TEST As Boolean 'déclare la variable TEST

Set D = Worksheets("data") 'définit l'onglet D
Set L = Worksheets("liste") 'définit l'onglet L
'boucle 1 : inversée sur toutes les colonnes éditées de l'onglet D (en partant de la dernière jusqu'à la première)
For J = D.Cells(1, Application.Columns.Count).End(xlToLeft).Column To 1 Step -1
    For I = 2 To L.Range("A" & Application.Rows.Count).End(xlUp).Row 'boucle 2 : sur tous les éléments de la liste
        If D.Cells(1, J).Value = L.Cells(I, 1).Value Then 'condition : si l'en-tête de la colonne est égal à l'élément de la liste
            TEST = True 'définit la variable TEST
            Exit For 'sort de al boucle 2
        End If 'fin de la condition
    Next I 'prochain élément de la boucle 2
    If TEST = False Then D.Columns(J).Delete 'si TEST est [Faux] supprime la colonne J de l'onglet D
    TEST = False 'réinitialise la variable TEST
Next J 'prochaine colonne de la boucle 1
End Sub

et pas de news depuis le 20/07....

P.

Bonjour,

Désolé pour le délai de réponse!

Merci pour vos exemples, elles fonctionnent à merveille

Benibeno

Rechercher des sujets similaires à "supprimer colonnes liste champ"