Faire apparaitre une case à cocher si cellule non vide [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
5 novembre 2013
-
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016
-
Bonjour,


je cherches à écrire une macro qui me permettrait d'afficher une case à cocher uniquement si la cellule à sa gauche n'est pas vide. Je ne sais pas si c'est possible mais bon.



Merci !

15 réponses

Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Bonsoir,

tes case à cocher sont bien des cases de la barre formulaire, pas des activex CheckBox

et cela concerne combien de contrôles (de cases à cocher)

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60511 internautes nous ont dit merci ce mois-ci

Messages postés
13
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
5 novembre 2013

Oui, se sont ceux dans l'onglet développeur sous l'option contrôle de formulaire. Pour ce qui est du nombre, je dirais une vingtaine.


Merci !
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

il est possible d'écrire un code plus technique, mais certainement plus difficile à adapter. en supposant que ta colonne de saisie est le colonne B et que sur la ligne 3 tu crées une case à cocher nommée Case à cocher 3 (mais tu peux les renommer à ta guise
la ligne de code serait
If Target.Address(0, 0) = "B3" And Target <> "" Then Shapes("Case à cocher 3").Visible = True '
If Target.Address(0, 0) = "B3" And Target = "" Then Shapes("Case à cocher 3").Visible = False

si dessous un exemple pour gérer les cellules B3, B4, B5 et B6 pour des cases à cocher nommées Case à cocher 3, Case à cocher 4, Case à cocher 5 et Case à cocher 6
ce code est à placer dans les propriétés feuille (clic droit sur l'onglet de la feuille concernée/Visualiser le code


Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address(0, 0) = "B3" And Target <> "" Then Shapes("Case à cocher 3").Visible = True '
If Target.Address(0, 0) = "B3" And Target = "" Then Shapes("Case à cocher 3").Visible = False
If Target.Address(0, 0) = "B4" And Target <> "" Then Shapes("Case à cocher 4").Visible = True '
If Target.Address(0, 0) = "B4" And Target = "" Then Shapes("Case à cocher 4").Visible = False
If Target.Address(0, 0) = "B5" And Target <> "" Then Shapes("Case à cocher 5").Visible = True '
If Target.Address(0, 0) = "B5" And Target = "" Then Shapes("Case à cocher 5").Visible = False
If Target.Address(0, 0) = "B6" And Target <> "" Then Shapes("Case à cocher 6").Visible = True '
If Target.Address(0, 0) = "B6" And Target = "" Then Shapes("Case à cocher 6").Visible = False
End Sub

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
Messages postés
13
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
5 novembre 2013

Bonjour,

Merci pour cette réponse. Si je comprend bien, je dois coller les lignes que tu as écrites dans "Visualiser le code", fermer le visual basic et lorsque je vais écrire dans la cellule B3, B4, B5 ou B6 une case à cocher va appairaitre ?


Merci encore !
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

il faut commencer par créer tes cases à cocher et repérer leur noms ou les nommer ensuite tu colle ce code dans les propriétés de ta feuille et tu affectes dans le code une case à cocher à une référence de cellule
Messages postés
13
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
5 novembre 2013

Lorsque je ferme la fenêtre du vba, les cases à cocher ne disparaisse. Es ce que je dois les effacer ou ma formule est mal écrite ?

Voici mon classeur : https://www.cjoint.com/?3JjsoZ5uZPI



Merci !
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

plusieur erreur, pour commencer ta première case à cocher n'est pas Case à cocher 1, mais la Case à cocher 274, le nom de la case s'affiche dans la barre d'adresse en haut à gauche de ta feuille lorsque tu fais un clic droit sur la case.

ensuite tu utilise la syntaxe
Private Sub Worksheet_Activate()

ce qui ne va pas avec le code fait pour la syntaxe
Private Sub Worksheet_Change(ByVal Target As Range)

alors que veux tu faire, que la case s'affiche ou se masque lorsque tu interviens colonne F ou faut il faire une boucle pour contrôler chaque cellule de la colonne F et agir en conséquence lorsque tu actives la feuille ou lancer la procédure avec un bouton

Messages postés
13
Date d'inscription
lundi 3 juin 2013
Statut
Membre
Dernière intervention
5 novembre 2013

Wow, merci beaucoup ! Sa fonctionne parfaitement !



Bonne journee
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

Si tes attentes sont satisfaites passe le statut de la discussion en résolu, ou confirme le moi que je le fasse pour toi
Bonjour,

J'ai sensiblement besoin de la même macro, mais j'ai une variante différente.
Je m'explique:
Cette macro fonctionne très bien en temps normal (cad que si j'entre manuellement dans la cellule cible B3 "1" la case à cocher apparaît et que si j'entre manuellement "0" dans la cellule B3, la case à cocher disparaît). Cependant, ma cellule B3 contient une formule "si" qui envoie comme réponse "1" ou "0" et pour une raison que j'ignore cette formule ne fait pas fonctionner la macro, malgré le fait que la formule renvoie le résultat 1 si vrai et 0 si faux.

Auriez-vous une autre solution à proposer?

Merci,
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Bonsoir,

certainement un problème de format, il faudrait avoir ta formule complète et encore mieux le fichier pour voir.
essaye de mettre à la fin de ta formule conditionnelle *1 (multiplier par 1)
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

voici un exemple de ce que j'essaie de faire
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

Oui mais à part que tu n'as pas joint ton fichier, clic sur ce lien, puis sur parcourir pour sélectionner ton fichier, sur créer le lien et coller dans une réponse le lien généré
https://www.cjoint.com/
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

http://www.cjoint.com/c/FBkt0pIKg8f

Merci de ton aide, j'apprivoise le site.
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

Si je comprends bien ta demande, essaye avec ce code

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address(0, 0) = "C3" And Target = 1 Then Shapes("Case à cocher 1").Visible = True '
If Target.Address(0, 0) = "C3" And Target <> 1 Then Shapes("Case à cocher 1").Visible = False
End Sub

si ce n'est pas ce que tu cherches, explique tes attentes
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

Ce n'est pas tout à fait ça.

je remets un fichier avec exactement ce que j'aimerais et avec la bonne macro en fonction de la cellule D5. Je n'arrive pas à comprendre pourquoi la case à cocher n'apparaît pas étant donné que la cellule D5 <>""

https://www.cjoint.com/c/FBkvWeuakHf
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

ton code ne peut fonctionner parce que l'action Worksheet_Change(ByVal Target As Range) qui se fait sur la cellule C3, C5 comme D5 n'est le résultat d'une formule, pas de l'action Change
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,
Supprime la formule en D5 inutile, remplace ton code par celui ci et teste

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [C5] = "Amendement" Then Shapes("Case à cocher 1").Visible = True '
If [C5] <> "Amendement" Then Shapes("Case à cocher 1").Visible = False
End Sub


et si tu veux tester la cellule C3 ce qui est le plus logique parce que c'est cette cellule qui conditionne C5

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If [C3] = 1 Then Shapes("Case à cocher 1").Visible = True '
If [C3] <> 1 Then Shapes("Case à cocher 1").Visible = False
End Sub
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

Fantastique! ça marche à merveille et merci pour le petit cours avec les évènements excel
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

Cependant la touche Ctrl Z ne fonctionne plus
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
RE,

ce n'as rien à voir avec le code, Ctrl et Z correspond à Annuler dernière action et Ctrl et Y correspond à rétablir dernière action
encore une fois le code VBA n'a rien à voir avec ce problème redémarre ton ordi voir
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

https://www.cjoint.com/c/FBlrfbqh4Jf

Je crois que ça avoir avec le code, car lorsque j'enlève la macro mon Ctrl Z fonctionne.... Par exemple dans le fichier, si dans le cellule B8, je mets 10 000$ et que je veux calculer selon un montant de 15 000$ pour ensuite revenir au 10 000$ je ne peux pas le faire avec un Ctrl Z (même Ctrl Y ne fonctionne pas).

J'ai déjà redémarrer l'ordi et testé sur un fichier vierge le Ctrl Z et tout fonctionne. Donc, j'ai du mal à expliquer le pourquoi.
Messages postés
17245
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 octobre 2020
4 286
Re,

Modifie le code comme cela voir
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C3]) Is Nothing Then
If [C5] <> "" Then Shapes("Case à cocher 1").Visible = True '
If [C5] = "" Then Shapes("Case à cocher 1").Visible = False
End If
End Sub
Messages postés
7
Date d'inscription
mercredi 10 février 2016
Statut
Membre
Dernière intervention
11 février 2016

Effectivement cela fonctionne! La seule chose est que je dois sélectionner la case avec mon curseur mais ce n'ai qu'un détail.

Mille fois merci!!!!