Comment effacer des colonnes ne contenant pas certaines valeures ?
2 réponses
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".
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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 '-----------------------------------------------
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
'-----------------------------------------------
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 '-----------------------------------------------
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 '---------------------------------------------
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
'---------------------------------------------
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 '---------------------------------------------