Faire apparaitre une case à cocher si cellule non vide

Résolu/Fermé
Thmoney-team Messages postés 13 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 5 novembre 2013 - 8 oct. 2013 à 18:08
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016 - 11 févr. 2016 à 20:09
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

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 8/10/2013 à 18:33
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
Thmoney-team Messages postés 13 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 5 novembre 2013
8 oct. 2013 à 19:49
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 !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 8/10/2013 à 23:01
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.
0
Thmoney-team Messages postés 13 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 5 novembre 2013
9 oct. 2013 à 15:52
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 !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 oct. 2013 à 16:02
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Thmoney-team Messages postés 13 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 5 novembre 2013
9 oct. 2013 à 18:15
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 !
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 oct. 2013 à 19:07
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

0
Thmoney-team Messages postés 13 Date d'inscription lundi 3 juin 2013 Statut Membre Dernière intervention 5 novembre 2013
9 oct. 2013 à 19:46
Wow, merci beaucoup ! Sa fonctionne parfaitement !



Bonne journee
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 oct. 2013 à 19:51
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
0
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,
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 févr. 2016 à 19:52
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)
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
10 févr. 2016 à 20:45
voici un exemple de ce que j'essaie de faire
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 févr. 2016 à 20:50
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/
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
10 févr. 2016 à 20:53
http://www.cjoint.com/c/FBkt0pIKg8f

Merci de ton aide, j'apprivoise le site.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
10 févr. 2016 à 22:18
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
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
10 févr. 2016 à 22:49
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
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 févr. 2016 à 08:11
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
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
Modifié par Mike-31 le 11/02/2016 à 09:39
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
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
11 févr. 2016 à 15:31
Fantastique! ça marche à merveille et merci pour le petit cours avec les évènements excel
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
11 févr. 2016 à 16:03
Cependant la touche Ctrl Z ne fonctionne plus
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 févr. 2016 à 16:51
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
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
11 févr. 2016 à 18:10
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.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
11 févr. 2016 à 18:26
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
0
swande Messages postés 7 Date d'inscription mercredi 10 février 2016 Statut Membre Dernière intervention 11 février 2016
11 févr. 2016 à 20:09
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!!!!
0