Macro qui garde uniquement les colonnes suivant un mot précis

Bonjour,

Je me sers actuellement de cette macro qui me permet de supprimer certaines colonnes qui comporte comme nom d'entête :

  • entreprise
  • ville
  • région
Dim dCol As Long, Col As Long
  Dim tColSup, Flg As Boolean

  ' Liste des colonnes à supprimer
  tColSup = Split("entreprise,ville,région", ",")

  ' Avec la feuille
  With ActiveSheet

    ' Dernière colonne
    dCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    ' Pour chaque colonne
    For Col = dCol To 1 Step -1

      ' Vérifier si nom de colonne trouvé dans celles à supprimer
      Flg = Not IsError(Application.Match(.Cells(1, Col).Value, tColSup, 0))

      ' Si c'est le cas on supprime
      If Flg Then .Cells(1, Col).EntireColumn.Delete Shift:=xlToLeft

    Next Col
  End With

End Sub

Je voudrais désormais créer "l'inverse" de cette macro pour garder uniquement les colonnes qui ont comme entête :

  • civilité
  • nom
  • prénom

Je ne sais pas si c'est possible mais si oui j'aurais grandement besoin de votre aide car je suis débutant en VBA.

Merci d'avance pour votre aide,

Loïc

Bonjour,

A tester :

Sub SuppressionColonnes()

Dim dCol As Long, Col As Long

  With ActiveSheet

    dCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
    For Col = dCol To 1 Step -1
        Select Case .Cells(1, Col)
               Case "civilité", "nom", "prénom"

               Case Else
                    .Cells(1, Col).EntireColumn.Delete
        End Select
    Next Col
  End With

End Sub

Bonjour Eric,

Ta macro fonctionne parfaitement, un grand merci pour ton efficacité et ta réponse très rapide !!

Bonne journée,

Loïc

Rechercher des sujets similaires à "macro qui garde uniquement colonnes suivant mot precis"