OVH Cloud OVH Cloud

Comment effacer des colonnes ne contenant pas certaines valeures ?

2 réponses
Avatar
Emilie56
Bonjour,
Je suis debutante en macro et je bloque actuellement sur une question.
est-il possible de suprrimer une colonne ne contenant pas une valeure sur la premiere ligne ?

Je m'explique,
J'ai une document source aui peut varier et aui possede beaucoup de colonnes, moi je ne veux afficher que certaines colonnes qui contiennent dqns leur premiere ligne par exemple "TOTO" ou "TATA".

Merci d'avance

2 réponses

Avatar
MichD
Bonjour,

Voici un petit exemple comment "supprimer" toutes les colonnes qui n'ont pas sur la première ligne de la feuille de calcul
les expressions "toto" ou "tata".

Dans la procédure, tu dois adapter le nom de l'onglet de la feuille si ce dernier n'est pas "Feuil1". Si ce nom d'onglet
n'existe pas dans ton classeur, une erreur sera générée.

'-----------------------------------------------
Sub test()
Dim Rg As Range, C As Range, A As Long

Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1") ' Adapte le nom de l'onglet de la feuille.
Set Rg = .Range("A1:A" & .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column)
End With
For A = Rg.Count To 1 Step -1
If Rg(1, A) <> "toto" And Rg(1, A) <> "tata" Then
Rg(1, A).EntireColumn.Delete
End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-----------------------------------------------
Avatar
MichD
Et supposons qu'au lieu d'avoir seulement 2 expressions comme "toto" et "titi", tu en as plusieurs dont tu veux conserver le
contenu de leur colonne, tu peux utiliser cette macro:

'---------------------------------------------
Sub test()
Dim Rg As Range, C As Range, A As Long
Dim Arr(), X As Variant

'Liste des expressions dont la colonne doit être sauvegardée.
'Tu peux y ajouter autant d'expression que tu désires.
'Les valeurs numériques ne doivent pas être en guillemets.
Arr = Array("toto", "titi", "tutu", "tata")

Application.ScreenUpdating = False
Application.EnableEvents = False
With Worksheets("Feuil1")
Set Rg = .Range("A1:A" & .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column)
End With
For A = Rg.Count To 1 Step -1
X = Application.Match(Rg(1, A).Value, Arr, 0)
If Not IsNumeric(X) Then
Err.Clear
Rg(1, A).EntireColumn.Delete
End If
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'---------------------------------------------