Macro masquer colonnes - valeur cellule
Résolu
gber1
Messages postés
42
Date d'inscription
Statut
Membre
Dernière intervention
-
Mike-31 Messages postés 18407 Date d'inscription Statut Contributeur Dernière intervention -
Mike-31 Messages postés 18407 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous,
J'aimerais que quelqu'un me réfère une macro qui me permettrait de masquer des colonnes en fonction de la valeur d'une cellule de la feuille.
Par exemple, j'ai une feuille qui possède un tableau de 30 colonnes représentant des années, l'année 1 débutant à la colonne Q.
Je voudrais que les colonnes des années supérieures à la valeur de la cellule H13 soient masquées. Donc si la valeur de H13 est de 8, je voudrais que les colonnes Y à AT soient cachées.
Merci de bien vouloir m'aider
Gilles
J'aimerais que quelqu'un me réfère une macro qui me permettrait de masquer des colonnes en fonction de la valeur d'une cellule de la feuille.
Par exemple, j'ai une feuille qui possède un tableau de 30 colonnes représentant des années, l'année 1 débutant à la colonne Q.
Je voudrais que les colonnes des années supérieures à la valeur de la cellule H13 soient masquées. Donc si la valeur de H13 est de 8, je voudrais que les colonnes Y à AT soient cachées.
Merci de bien vouloir m'aider
Gilles
A voir également:
- Vba masquer colonne sous condition
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Excel cellule couleur si condition texte - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
7 réponses
Salut,
Colles ce code dans un module et associe le à un bouton
Sub colonne ()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Feuil1.Cells(1, col)
If .Value > [H13] Then Columns(col).Hidden = True
End With
Next col
Application.ScreenUpdating = True
End Sub
Colles ce code dans un module et associe le à un bouton
Sub colonne ()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Feuil1.Cells(1, col)
If .Value > [H13] Then Columns(col).Hidden = True
End With
Next col
Application.ScreenUpdating = True
End Sub
Re,
non, le code que je t'ai donné est applicable dans toutes les feuilles, il suffit de le coller dans un module (Alt et touche F11) ou clic droit sur l'onglet de feuille concernée/Visualiser le code, Insérer un module et coller le code
Sub colon()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Feuil1.Cells(1, col)
If .Value > [H13] Then Columns(col).Hidden = True
End With
Next col
Application.ScreenUpdating = True
End Sub
ensuite à partir de la barre d'outils formulaire (affichage/Barre d'outils/Formulaire) créer un bouton et Associer à la macro
ou encore avec la barre contrôle du Visual Basic créer un commanButton
dans ce cas le contrôle du bouton sera dans les propriétés de la feuille, coller le nom de la macro "colon" exemple
Private Sub CommandButton1_Click()
colon
End Sub
ou tu optes pour un déclenchement automatique lorsque la valeur de la cellule H13 change, dans ce cas , dans la propriété de la feuille tu colles ce code qui fait référence à la macro colon
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$13" Then
colon
End If
End Sub
tu répètes l'option retenue dans la propriété de tes feuilles, qui utiliseront le même code "colon"
si tu as besoin d'un exemple on verra ça demain
non, le code que je t'ai donné est applicable dans toutes les feuilles, il suffit de le coller dans un module (Alt et touche F11) ou clic droit sur l'onglet de feuille concernée/Visualiser le code, Insérer un module et coller le code
Sub colon()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Feuil1.Cells(1, col)
If .Value > [H13] Then Columns(col).Hidden = True
End With
Next col
Application.ScreenUpdating = True
End Sub
ensuite à partir de la barre d'outils formulaire (affichage/Barre d'outils/Formulaire) créer un bouton et Associer à la macro
ou encore avec la barre contrôle du Visual Basic créer un commanButton
dans ce cas le contrôle du bouton sera dans les propriétés de la feuille, coller le nom de la macro "colon" exemple
Private Sub CommandButton1_Click()
colon
End Sub
ou tu optes pour un déclenchement automatique lorsque la valeur de la cellule H13 change, dans ce cas , dans la propriété de la feuille tu colles ce code qui fait référence à la macro colon
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$H$13" Then
colon
End If
End Sub
tu répètes l'option retenue dans la propriété de tes feuilles, qui utiliseront le même code "colon"
si tu as besoin d'un exemple on verra ça demain
Re,
Pour joindre un fichier, s'il ne contient pas de note confidentielles soit dans un post ou dans un message perso en cliquant sur le pseudo du membre à qui tu souhaites l'envoyer
clic sur ce lien/Parcourir pour sélectionner le fichier/Créer le lien/Autoriser l'accès et colle le lien généré en haut de la feuille
Pour joindre un fichier, s'il ne contient pas de note confidentielles soit dans un post ou dans un message perso en cliquant sur le pseudo du membre à qui tu souhaites l'envoyer
clic sur ce lien/Parcourir pour sélectionner le fichier/Créer le lien/Autoriser l'accès et colle le lien généré en haut de la feuille
Re,
Excuse, j'ai oublié de mettre le lien.
Donc clic sur ce lien
https://www.cjoint.com/
et /Parcourir pour sélectionner le fichier/Créer le lien/Autoriser l'accès et colle le lien généré en haut de la feuille
soit sur un post ou sur un message privé, dans ce cas clic sur le pseudo du membre à qui tu souhaites l'envoyer et message privé
Excuse, j'ai oublié de mettre le lien.
Donc clic sur ce lien
https://www.cjoint.com/
et /Parcourir pour sélectionner le fichier/Créer le lien/Autoriser l'accès et colle le lien généré en haut de la feuille
soit sur un post ou sur un message privé, dans ce cas clic sur le pseudo du membre à qui tu souhaites l'envoyer et message privé
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Voici la partie de mon fichier pour lequel je voudrais cette macro.
https://www.cjoint.com/?fedXuTa5h1
(J'espère que le lien fonctionnera !)
Gilles
Voici la partie de mon fichier pour lequel je voudrais cette macro.
https://www.cjoint.com/?fedXuTa5h1
(J'espère que le lien fonctionnera !)
Gilles
Re,
Remplace le code sur le module par celui ci
Sub colon()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Cells(8, col)
If .Value > [H13] Then Columns(col).Hidden = True
End With
Next col
Application.ScreenUpdating = True
End Sub
Par contre si tu souhaites afficher les colonnes, il y a un problème avec la Validation que tu as limité à 20, ce qui limite l'utilisation de la macro à 20
le code si dessus masque toute le colonnes de Q à At si en H13 il n'y a aucune valeur, si tu saisis 20 s'affichent les colonnes dont la valeur est inférieure ou égale à 20 et le colonnes avec valeur supérieure à 20 reste masquées et ne peuvent et inaccessible du à la validation
ou on ajoute une ligne par exemple si H13 est vide on affiche toute les lignes, avec ce code
Sub colon()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Cells(8, col)
If .Value > [H13] Then Columns(col).Hidden = True
If [H13] = "" Then Columns(col).Hidden = False
End With
Next col
Application.ScreenUpdating = True
End Sub
ou tu modifies la Validation et tu sélectionnes Avertissement à la place d'Arrêt sur l'onglet Alerte d'erreur
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Remplace le code sur le module par celui ci
Sub colon()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Cells(8, col)
If .Value > [H13] Then Columns(col).Hidden = True
End With
Next col
Application.ScreenUpdating = True
End Sub
Par contre si tu souhaites afficher les colonnes, il y a un problème avec la Validation que tu as limité à 20, ce qui limite l'utilisation de la macro à 20
le code si dessus masque toute le colonnes de Q à At si en H13 il n'y a aucune valeur, si tu saisis 20 s'affichent les colonnes dont la valeur est inférieure ou égale à 20 et le colonnes avec valeur supérieure à 20 reste masquées et ne peuvent et inaccessible du à la validation
ou on ajoute une ligne par exemple si H13 est vide on affiche toute les lignes, avec ce code
Sub colon()
'MasquerColonnes
Dim i As Variant
Application.ScreenUpdating = False
[Q1:AT1].EntireColumn.Hidden = False
For col = 17 To 47
With Cells(8, col)
If .Value > [H13] Then Columns(col).Hidden = True
If [H13] = "" Then Columns(col).Hidden = False
End With
Next col
Application.ScreenUpdating = True
End Sub
ou tu modifies la Validation et tu sélectionnes Avertissement à la place d'Arrêt sur l'onglet Alerte d'erreur
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
mais ça ne fonctionne pas. Je n'ai peut-être pas été assez précis !
Mon fichier contient 40 onglets et je voudrais que chacun des onglets soit indépendant un de l'autre, de telle sorte que la cellule H13 d'un onglet déclenche le masquage des colonnes de cet onglet.
Donc je crois que je ne peux pas mettre la macro dans un module et je ne veux pas associer celle-ci à un bouton mais plutôt au contenu de cellule H13.
J'espère être compréhensible
Gilles