Excel - Liste avec condition message
issan
-
issan -
issan -
Bonjour,
j'aurais besoin de savoir comment imposer un commentaire, boite de dialogue ou quelque chose dans le genre à une valeur d'une liste déroulent.
plus précisemment :
dans la cellule en A1 : liste proposant le choix de mettre oui ou non
dans la cellule en B1 : heure de début
dans la cellule en C1 : heure de fin
le but est que lorsque l'on choisit de mette OUI dans la premiere cellule, un message indique à l'utilisateur de ne pas oublier de remplir les champs heure de debut et de fin. et lorsque NON est choisit, pas besoin de message.
J'espère avoir été assez claire dans la description de mon problème.
à bientôt , et merci d'avance pour ceux et celles qui prendront le temps de m'aider.
j'aurais besoin de savoir comment imposer un commentaire, boite de dialogue ou quelque chose dans le genre à une valeur d'une liste déroulent.
plus précisemment :
dans la cellule en A1 : liste proposant le choix de mettre oui ou non
dans la cellule en B1 : heure de début
dans la cellule en C1 : heure de fin
le but est que lorsque l'on choisit de mette OUI dans la premiere cellule, un message indique à l'utilisateur de ne pas oublier de remplir les champs heure de debut et de fin. et lorsque NON est choisit, pas besoin de message.
J'espère avoir été assez claire dans la description de mon problème.
à bientôt , et merci d'avance pour ceux et celles qui prendront le temps de m'aider.
A voir également:
- Excel - Liste avec condition message
- Liste déroulante excel - Guide
- Excel cellule couleur si condition texte - Guide
- Excel liste déroulante en cascade - Guide
- Recuperer message whatsapp supprimé - Guide
- Word et excel gratuit - Guide
5 réponses
Bonjour Issan,
Pour la liste déroulante, je suppose que tu as utilisé la Validation.
Pour le message d'alerte, tu peux utiliser le code suivant (à coller dans la fenêtre de code de la feuille concernée : clic droit sur l'onglet / Visualiser le code).
Pour la liste déroulante, je suppose que tu as utilisé la Validation.
Pour le message d'alerte, tu peux utiliser le code suivant (à coller dans la fenêtre de code de la feuille concernée : clic droit sur l'onglet / Visualiser le code).
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address(False, False) = "A1" Then
If UCase(.Value) = "OUI" Then
MsgBox "Mettre à jour l'heure de début et l'heure de fin"
End If
End If
End With
End Sub
Tu as bien compris, sauf que l'évènement BeforeSave existe pour le classeur, mais pas pour une feuille.
Mais tu pourras utiliser (quand tu quittes la feuille)
ou alors (avant d'enregistrer le classeur, dans ThisWorkbook)
A suivre...
Mais tu pourras utiliser (quand tu quittes la feuille)
Private Sub Worksheet_Deactivate()
ou alors (avant d'enregistrer le classeur, dans ThisWorkbook)
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
A suivre...
Salut ivan-hoe,
J'ai mis le code Worksheet_change, mais quand je veux le faire tourner, excel me propose de donner un nom a la macro si je donne un nom il me l ouvre dans une feuille de module.
le code je l'ai bien entendu inscit sur la feuille de code correpondant a ma feuille active.
je suis perdue......
J'ai mis le code Worksheet_change, mais quand je veux le faire tourner, excel me propose de donner un nom a la macro si je donne un nom il me l ouvre dans une feuille de module.
le code je l'ai bien entendu inscit sur la feuille de code correpondant a ma feuille active.
je suis perdue......
Salut,
je ne saisis pas bien le problème. Comment lances-tu ta procédure ? en provoquant l'évènement, c'est-à-dire en mettant "oui" ou "non" dans A1 ?
A suivre...
je ne saisis pas bien le problème. Comment lances-tu ta procédure ? en provoquant l'évènement, c'est-à-dire en mettant "oui" ou "non" dans A1 ?
A suivre...
re-bonjour Ivan-hoe,
c'est bon j'ai reussi a faire ce que je voulais.
J'ai juste utiliser Private Sub Workbook_beforesave et dedans j'y ai mis une condition en utilisant IF.
le seul truc c'est que je ne me suis pas servie de Private Sub Worksheet_Change, je pense que je n'ai pas bien compris le fonctionnement de cette routine.
Mais bon, comme j'arrive a mes fins ca va.
en tout cas je te remercie pour ton aide, et peut etre a bientot, si j'ai un nouveau probleme
ciao
Issan
c'est bon j'ai reussi a faire ce que je voulais.
J'ai juste utiliser Private Sub Workbook_beforesave et dedans j'y ai mis une condition en utilisant IF.
le seul truc c'est que je ne me suis pas servie de Private Sub Worksheet_Change, je pense que je n'ai pas bien compris le fonctionnement de cette routine.
Mais bon, comme j'arrive a mes fins ca va.
en tout cas je te remercie pour ton aide, et peut etre a bientot, si j'ai un nouveau probleme
ciao
Issan
Encore un probleme en fait !!!!!
parce que lorsque je veux sauvegarder le fichier et que les conditions ne sont pas remplies, il m'envoie la boite de dialogue comme prevu,
mais comme j'utilise la routine Private Sub Workbook_beforesave , cela ne m'empeche pas de le sauvegarder dans l'etat non desire mais m' informe seulement qu'il faut remplir les champs demande.
Donc, ce qui m'interresse est que
- d'une part l'utilisateur soit informer qu'il faut qu'il remplisse les cellules demandees,
- d'autre part, que si il ne le fait pas, le fichier ne peut etre sauvegarder et ferme en l'etat.
j'espere avoir ete assez precise sur le probleme qui me peocupe.
j'ai une hypothese sur la solution : rentrer mes conditions dans la routine Private Sub Workbook_beforeclose ?
De plus, sachant que mon fichier contient plusieurs pages, est-il possible que lorsque le message indiquant de remplir les cellules, la feuille concernee s'ouvre. je suppose qu'il suffit de rqjouter dans le code : avant MsgBox le fait d'ouvrir cette feuille ?
Desolee, ce probleme ne semble pas avoir de fin..... lol
parce que lorsque je veux sauvegarder le fichier et que les conditions ne sont pas remplies, il m'envoie la boite de dialogue comme prevu,
mais comme j'utilise la routine Private Sub Workbook_beforesave , cela ne m'empeche pas de le sauvegarder dans l'etat non desire mais m' informe seulement qu'il faut remplir les champs demande.
Donc, ce qui m'interresse est que
- d'une part l'utilisateur soit informer qu'il faut qu'il remplisse les cellules demandees,
- d'autre part, que si il ne le fait pas, le fichier ne peut etre sauvegarder et ferme en l'etat.
j'espere avoir ete assez precise sur le probleme qui me peocupe.
j'ai une hypothese sur la solution : rentrer mes conditions dans la routine Private Sub Workbook_beforeclose ?
De plus, sachant que mon fichier contient plusieurs pages, est-il possible que lorsque le message indiquant de remplir les cellules, la feuille concernee s'ouvre. je suppose qu'il suffit de rqjouter dans le code : avant MsgBox le fait d'ouvrir cette feuille ?
Desolee, ce probleme ne semble pas avoir de fin..... lol
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Issan,
Regarde bien dans l'aide : Workbook.BeforeSave admet un argument Cancel. Il faut que tu lui affectes la valeur True pour que le classeur ne soit pas enregistré.
Pour activer la feuille de saisie, effectivement, il suffirait de rajouter une instruction Sheets("AAA").Activate
A suivre...
Regarde bien dans l'aide : Workbook.BeforeSave admet un argument Cancel. Il faut que tu lui affectes la valeur True pour que le classeur ne soit pas enregistré.
Pour activer la feuille de saisie, effectivement, il suffirait de rajouter une instruction Sheets("AAA").Activate
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If la condition n'est pas remplie then
Sheets("feuille_de_saisie").Activate
msgbox "vous ne pouvez pas enregistrer patati patata"
Cancel = True
End if
End sub
A suivre...
aujourd'hui je suis parvenue à surmonter en partie ce probleme en utilisant la fonction VLOOKUP, mais je prefere autant qu'une boite de dialogue s'ouvre, cela est plus propre.
mon superieur veut en plus qu'à cela j'ajoute l'impossibilité de sauvegarder le fichier si le contenu du message n'est pas respecté.
si j'ai bien compris, j'ai juste à insérer ce que tu m'as indiqué dans Private Sub Worksheet_beforesave ?
merci encore Ivan-hoe !