Macro masquer colonnes - valeur cellule
Résolu/Fermé
gber1
Messages postés
42
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
22 février 2012
-
2 mai 2010 à 20:21
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 4 mai 2010 à 22:21
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 - 4 mai 2010 à 22:21
A voir également:
- Vba masquer colonne sous condition
- Déplacer une colonne excel - Guide
- Excel cellule couleur si condition texte - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
- Colonne word - Guide
7 réponses
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
2 mai 2010 à 21:46
2 mai 2010 à 21:46
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
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
2 mai 2010 à 23:36
2 mai 2010 à 23:36
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
gber1
Messages postés
42
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
22 février 2012
1
3 mai 2010 à 00:24
3 mai 2010 à 00:24
Merci de t'occuper de moi Mike-31
Je crois avoir suivi ta procédure mais j'ai probablement mal fait quelque chose puisque ça ne fonctionne pas.
J'aimerais t'envoyer mon fichier mais je ne sais pas comment joindre un fichier à un "post"
Je crois avoir suivi ta procédure mais j'ai probablement mal fait quelque chose puisque ça ne fonctionne pas.
J'aimerais t'envoyer mon fichier mais je ne sais pas comment joindre un fichier à un "post"
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
3 mai 2010 à 08:37
3 mai 2010 à 08:37
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
gber1
Messages postés
42
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
22 février 2012
1
3 mai 2010 à 17:24
3 mai 2010 à 17:24
Excuses mon ignorance mais lorsque je clique sur ton pseudo (Mike-31), je suis dirigé sur ton profil d'où je ne vois pas où je peux faire "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 "
Bye
Gilles
Bye
Gilles
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
3 mai 2010 à 19:51
3 mai 2010 à 19:51
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
gber1
Messages postés
42
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
22 février 2012
1
4 mai 2010 à 03:51
4 mai 2010 à 03:51
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
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
Modifié par Mike-31 le 4/05/2010 à 11:05
Modifié par Mike-31 le 4/05/2010 à 11:05
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.
gber1
Messages postés
42
Date d'inscription
mercredi 10 septembre 2008
Statut
Membre
Dernière intervention
22 février 2012
1
4 mai 2010 à 21:31
4 mai 2010 à 21:31
Merci mille fois, pour tous tes bons conseils.
Tout fonctionne à merveille, encore merci
Gilles
Tout fonctionne à merveille, encore merci
Gilles
Mike-31
Messages postés
18346
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 novembre 2024
5 104
4 mai 2010 à 22:21
4 mai 2010 à 22:21
Re,
Content de t'avoir rendu service.
J'y pense dans la cellule H13, à la place de mettre une restriction limitant la saisie à 20, tu peux faire une liste de validation dans source saisis
=$Q$8:$AJ$8
Content de t'avoir rendu service.
J'y pense dans la cellule H13, à la place de mettre une restriction limitant la saisie à 20, tu peux faire une liste de validation dans source saisis
=$Q$8:$AJ$8
2 mai 2010 à 22:52
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