Supprimer colonne ne contenant pas

Résolu
mat91_92 -  
 mat91_92 -
Bonjour a tous,

J'aimerais supprimer toutes les colonnes de ma feuille excel dont les titres (noms des colonnes sur la ligne 1) ne sont pas "link", "title", "pagemappersonlocation", "pagemapPersonRole", "Pagemappersonorg"

Je n'arrive pas à trouver la bonne macro ni adapter celle qui s'y rapprochent.

Merci d'avance!

M.

3 réponses

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour,

    Tu fais une boucle sur tes colonnes (en parant de la dernière)
     ' Boucle de la colonne  nbColonnes  jusqu'à la colonne N°1
     ' nbColonnes  = Nombre de colonnes de ton tableau.
     for i=1 to nbColonnes Step -1
      '// la suite du code
    
    
      Next 'Fin de la boucle
    

    et pour chaque colonne tu regardes si le titre est égale à une des valeurs que tu veux supprimer.
    If titre = "link" or titre="title" ...  Then
    

    Si oui... tu supprime la colonne
       Columns(i).EntireColumn.Delete
    
    0
    1. mat91_92
       
      Salut Jordane,

      Tout d'abord merci pour ta réponse. Peux être que je ne suis pas clair. J'ai un document avec enormement de colonne et je veux en garder que 5. Je voudrais pouvoir, via une macro, supprimer toutes les colles SAUF celles ayant pour titre "link", "title", "pagemappersonlocation", "pagemapPersonRole", "Pagemappersonorg"
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Un exemple à adapter
    http://www.cjoint.com/c/FDspu1gx7SQ

    Cdlmnt
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Je voudrais pouvoir, via une macro, supprimer toutes les colles SAUF celles ayant pour titre "link", "title", "pagemappersonlocation", "pagemapPersonRole",
    OK, tu avais une seule ligne à modifier

    ' liste des titres des colonnes à garder
    Const listetitres = "titre2,titre4,titre8"

    Const lititres = 1
    Const codeb = 1

    Public Sub OK()
    Dim co As Long, cofin As Long
    Application.ScreenUpdating = False
    cofin = Cells(lititres, Columns.Count).End(xlToLeft).Column
    For co = cofin To codeb Step -1
    If InStr(1, listetitres, Cells(lititres, co).Value) = 0 Then Columns(co).Delete
    Next co
    End Sub

    Cdlmnt
    0
    1. mat91_92
       
      Ca fonctionne niquel! Merci!
      0