Masquer Colonnes si cellule contient un mot/ d'après formule
Résolu/Fermé
dadou
-
Modifié par pijaku le 18/07/2014 à 13:20
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 21 juil. 2014 à 11:01
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 21 juil. 2014 à 11:01
A voir également:
- Masquer Colonnes si cellule contient un mot/ d'après formule
- Formule si et - Guide
- Formule excel - Guide
- Formule google sheet si contient ✓ - Forum Excel
- Piratage facebook changer mot de passe - Guide
- Excel si cellule contient partie texte ✓ - Forum Excel
7 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
18 juil. 2014 à 13:26
18 juil. 2014 à 13:26
Bonjour,
La procédure ne se déclenche pas car la cellule A1 ne change pas. Elle reste avec sa formule.
Si tu veux, dans ton exemple, que WorkSheet_Change se déclenche, il te faut traiter le changement de cellule, non pas dans A1, mais dans A2...
Comme ceci :
Ou alors utilise un autre événement de ta feuille.
Par exemple :
La procédure ne se déclenche pas car la cellule A1 ne change pas. Elle reste avec sa formule.
Si tu veux, dans ton exemple, que WorkSheet_Change se déclenche, il te faut traiter le changement de cellule, non pas dans A1, mais dans A2...
Comme ceci :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2")) Is Nothing Then '<====ICI A2 au lieu de A1 Columns("B:D").Hidden = IIf(Target.Offset(-1, 0) = "oui", True, False) '<== ICI ajout de l'Offset pour "cibler" A1 End If End Sub
Ou alors utilise un autre événement de ta feuille.
Par exemple :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Merci pour ta réponse assez rapide !
Cependant en changeant la 1ere phrase je n'y arrive pas, quel serait ton code en "entier" pour que l'exemple que j'ai donné fonctionne ?
Cependant en changeant la 1ere phrase je n'y arrive pas, quel serait ton code en "entier" pour que l'exemple que j'ai donné fonctionne ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
18 juil. 2014 à 13:49
18 juil. 2014 à 13:49
Je crois que tu est un peu perdu avec Target...
Dans l'événement
A partir de là, ta procédure fonctionne avec le code que je t'ai donné :
Dans l'événement
Ok?
Donc pour ton cas, supposons que la cellule "quittée" est A2, cela donne :
Note : les codes sont identiques car Target est la même. Mais on pourrait également supposer que la Target du second exemple soit B26. Auquel cas :
Dans l'événement
WorkSheet_Change, que tu as choisi, Target est la cellule dont tu changes la valeur par saisie. Autrement dit, avec une formule en A1 : =Si(A2=VRAI;"oui";"non"), la cellule susceptible de changer de valeur par saisie est la cellule A2.
A partir de là, ta procédure fonctionne avec le code que je t'ai donné :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2")) Is Nothing Then '<====ICI A2 au lieu de A1 Columns("B:D").Hidden = IIf(Target.Offset(-1, 0) = "oui", True, False) '<== ICI ajout de l'Offset pour "cibler" A1 End If End Sub
Dans l'événement
Worksheet_SelectionChange, Target correspond à la cellule que tu quittes, soit en validant par Entrée, soit par Tab, soit... Elle se déclenche à chaque fois que tu sélectionnes une autre cellule. Et Target est la cellule quittée.
Ok?
Donc pour ton cas, supposons que la cellule "quittée" est A2, cela donne :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2")) Is Nothing Then '<====ICI A2 au lieu de A1 Columns("B:D").Hidden = IIf(Target.Offset(-1, 0) = "oui", True, False) '<== ICI ajout de l'Offset pour "cibler" A1 End If End Sub
Note : les codes sont identiques car Target est la même. Mais on pourrait également supposer que la Target du second exemple soit B26. Auquel cas :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range("B26")) Is Nothing Then '<====ICI B26 au lieu de A1 Columns("B:D").Hidden = IIf(Target.Offset(-25, -1) = "oui", True, False) '<== ICI ajout de l'Offset pour "cibler" A1 End If End Sub
Merci de ton éclairement, j'avais pas vu ton code dans son intégralité.
Cependant, le VRAI correspond à une "case à cocher" donc c'est pas une donner par saisie en faite ... (quand je décoche ça devient donc FAUX)
Au final, mon idée est de masquer les colonnes BCD quand je coche cette case.
Je pensais que faisant une formule SI toute bête et un code VBA ca pouvait le faire ..
Mais au final je n'ai aucune saisie dans mon fichier.
Ca devient compliquer ?
Cependant, le VRAI correspond à une "case à cocher" donc c'est pas une donner par saisie en faite ... (quand je décoche ça devient donc FAUX)
Au final, mon idée est de masquer les colonnes BCD quand je coche cette case.
Je pensais que faisant une formule SI toute bête et un code VBA ca pouvait le faire ..
Mais au final je n'ai aucune saisie dans mon fichier.
Ca devient compliquer ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
18 juil. 2014 à 14:37
18 juil. 2014 à 14:37
Tu n'aurais pas pu le dire plus tôt.................
Il suffit d'affecter une macro à ta case à cocher (clic droit sur la case et Affecter une macro)
dont voici le code :
Il suffit d'affecter une macro à ta case à cocher (clic droit sur la case et Affecter une macro)
dont voici le code :
Sub Caseàcocher1_Cliquer() Columns("B:D").Hidden = IIf([A1] = "oui", True, False) End Sub
PARFAIT !!! Merci beaucoup
On peut avoir plus simple si on le fait avec la cellule A2 où se trouve VRAI ou FAUX en fonction de la case cochée ou non ?
Ca évite de créer une cellule avec une FORMULE SI ?
On peut avoir plus simple si on le fait avec la cellule A2 où se trouve VRAI ou FAUX en fonction de la case cochée ou non ?
Ca évite de créer une cellule avec une FORMULE SI ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
18 juil. 2014 à 14:59
18 juil. 2014 à 14:59
Ben oui.
Sub Caseàcocher1_Cliquer() Columns("B:D").Hidden = IIf([A2] = "VRAI", True, False) End Sub
Ca ne veut pas marcher ! j'avais essayer ...
Pas grave je garde la cellule intermédaire avec la formule SI.
Merci bien, bonne journée.
Pas grave je garde la cellule intermédaire avec la formule SI.
Merci bien, bonne journée.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
18 juil. 2014 à 16:06
18 juil. 2014 à 16:06
Pas testé...
Ceci fonctionne :
Ou plus simple encore :
Ceci fonctionne :
Sub Caseàcocher1_Cliquer() Columns("B:D").Hidden = IIf([A2] = True, True, False) End Sub
Ou plus simple encore :
Sub Caseàcocher1_Cliquer() Columns("B:D").Hidden = [A2] End Sub
J'ai réussi à le faire pour ma 50aine de case, maintenant je peux créer une case à cocher pour cocher/décocher toutes ces cases ?
J'ai essayé le prendre la plage des 50cases où s'est marqué VRAI/FAUX mais ca décoche uniquement la 1ere case..
Un code VBA ?
J'ai essayé le prendre la plage des 50cases où s'est marqué VRAI/FAUX mais ca décoche uniquement la 1ere case..
Un code VBA ?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 743
21 juil. 2014 à 11:01
21 juil. 2014 à 11:01
Bonjour,
Cette question est ici Hors Sujet.
Il convient de la reformuler, soit en cherchant si elle n'a pas déjà été posée auparavant, soit en créant un nouveau sujet.
Cette question est ici Hors Sujet.
Il convient de la reformuler, soit en cherchant si elle n'a pas déjà été posée auparavant, soit en créant un nouveau sujet.