Masquage de colonne

Bonjour,

J'aimerai faire une petite macro qui masque les colonnes qui contienne la valeur "x" ; cela implique qu'il doit reconnaître l'endroit où il n'y a plus de colonne pour arrêter le processus. Quelqu'un sait m'aider (voir fichier exemple)

4exemple.xlsx (8.56 Ko)

?

Phlippe

Bonjour Philippe, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter)
O.Columns.Hidden = False 'affiche toutes les colonnes de l'onglet (à garder ou à supprimer selon ton cas)
DC = O.Cells(1, Application.Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée DC de la ligne 1 de l'onglet O
For I = 1 To DC 'boucle des colonnes 1 à DC
    If O.Cells(2, I).Value = "x" Then O.Columns(I).Hidden = True 'si la cellule ligne 2 colonne I de la boucle contient "x", masque la colonne
Next I 'prochaine colonne de la boucle
End Sub

c'est impeccable ! merci. Très clair, très didactique, je comprends tout !

Je vais me permettre d'abuser ; si au lieu de compter les colonne, on souhaite compter jusqu'à une certaine colonne, appelée "fin" par exemple, quel serait le code vba ?

Une dernière question, si au lieu de travailler sur la ligne 2, on travaille sur la ligne où est située la cellule sélectionnée, quel serait alors le code ?

Merci d'avance !

Re,

Ça donnerait ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter)
O.Columns.Hidden = False 'affiche toutes les colonnes de l'onglet (à garder ou à supprimer selon ton cas)
DC = O.Rows(1).Find("fin", , xlValues, xlWhole).Column 'définit la colonne de la cellule en ligne 1 comprotant le mot "fin"
For I = 1 To DC 'boucle des colonnes 1 à DC
    If O.Cells(ActiveCell.Row, I).Value = "x" Then O.Columns(I).Hidden = True 'si la cellule ligne de la cellule active colonne I de la boucle contient "x", masque la colonne
Next I 'prochaine colonne de la boucle
End Sub

Bonjour,

Le code fonctionne parfaitement.

Au départ du code :

O.Columns.Hidden = False

permet de visualiser toutes les colonnes de la feuille ; mais j'aimerai que seules les colonnes jusque la colonne "fin" soient visibles ; je pense que je vais devoir utiliser la commande :

Columns("A:F").Select
Selection.EntireColumn.Hidden = True

F étant ma colonne "fin" ; je sais que la position de la cette colonne est égale à DC, mais je n'arrive pas à intégrer la variable DC dans le code... Help

Merci d'avance

Bonjour Philippe, bonjour le forum,

Essaie comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DC As Integer 'déclare la variable DC (Dernière Colonne)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter)
DC = O.Rows(1).Find("fin", , xlValues, xlWhole).Column 'définit la colonne de la cellule en ligne 1 comprotant le mot "fin"
O.Columns.Hidden = False 'affiche toutes les colonnes de l'onglet
O.Range(O.Cells(1, DC + 1), O.Cells(1, Application.Columns.Count)).EntireColumn.Hidden = True 'masque les colonnes de DC jusqu'à la dernière
For I = 1 To DC 'boucle des colonnes 1 à DC
    If O.Cells(ActiveCell.Row, I).Value = "x" Then O.Columns(I).Hidden = True 'si la cellule ligne de la cellule active colonne I de la boucle contient "x", masque la colonne
Next I 'prochaine colonne de la boucle
End Sub

Après il faut que tu arrêtes, ça devient lourd...

Merci pour l'info, et désolé si j'ai été embêtant, mais tes réponses très didactiques me permettent d'élargir mon horizon et génèrent en moi d'autres questions ; j'ai beaucoup progressé sur base de tes réponses.

Merci encore, je risque de solliciter le forum pour d'autres aspects, et j'essaierai alors d'être le plus complet possible en une fois dans ma question. Pour ce sujet, tout est ok désormais.

Philippe

Rechercher des sujets similaires à "masquage colonne"