Suppression colonnes sous conditions

Bonsoir,

Je cherche un code qui me permettrais de supprimer des colonnes sous conditions.

Je voudrais dans le fichier joint, que si les en-têtes de colonnes ne contiennent pas "ELEMENT", "VILLE" et "COMMENTAIRES" qu'elles soit supprimées.

Si le code pouvait en plus être commenté afin que je comprenne, ce serait super génial.....

Merci beaucoup

Sandrine

Excel 2010

23classeur1.xlsx (11.63 Ko)

J'ai trouvé un code qui va à merveille dans un post qui date de 2012 et qui marche à merveille. En plus il est commenté.....

Sub SupColonne2()
Dim NomCol
Dim I As Integer, Colonne As Integer, NbCol As Integer

  Application.ScreenUpdating = False                  ' Bloque le rafraîchissement écran
 NomCol = Array("ELEMENT", "VILLE", "COMMENTAIRES")      ' On vire les colonnes qui n'ont pas un de ces mots : en majuscules
 NbCol = Cells(1, Columns.Count).End(xlToLeft).Column    ' Nombre de colonnes à traiter
 For Colonne = NbCol To 1 Step -1                    ' Parcourt toutes les colonnes de la fin vers la début
   For I = 0 To UBound(NomCol)                       ' Pour chaque colonne
     If UCase(Cells(1, Colonne)) = NomCol(I) Then    ' On vérifie si son nom est dans la liste
       Exit For                                      ' Si oui on quitte la boucle
     End If
    Next I
    If I > UBound(NomCol) Then                        ' On a vérifié le nom de la colonne avec la liste des noms et pas d'égalité
     Columns(Colonne).Delete                      ' Donc on supprime la colonne
   End If
  Next Colonne
End Sub

Bonsoir Sandrine,

ah, la vie de famille qui t'interrompt à tout bout de champ!

Je n'ai pas pris le temps de lire ton 2eme post mais voilà ma réponse à intégrer, sans autre indication, dans un bouton de commande.

Private Sub CmdNettoyage_Click()
'
iFlag = Range("AAA1").End(xlToLeft).Column
'
For x = iFlag To 1 Step -1
    If Trim(LCase$(Cells(1, x))) <> "ville" And Trim(LCase$(Cells(1, x))) <> "commentaires" And Trim(LCase$(Cells(1, x))) <> "element" Then
        'iFlag2 = Cells(Rows.Count, x).End(xlUp).Row
        Range(Cells(1, x), Cells(Rows.Count, x)).Delete shift:=(xlToLeft)
    End If
Next
'
End Sub

C'est fort similaire, forcément! Le tout est de savoir si d'autres données (importantes?) sont placées en-dessous de ton tableau à nettoyer (raison de la ligne de code sous apostrophe).

Bien à toi.

+

Merci d'avoir quand même pris le temps de me répondre. Mais je crois que je vais conserver ma 1ère solution et garder très précieusement ta solution au cas où.

Rechercher des sujets similaires à "suppression colonnes conditions"