Excel - Liste avec condition message

Fermé
issan - 20 mai 2008 à 20:00
 issan - 23 mai 2008 à 08:46
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.
A voir également:

5 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
21 mai 2008 à 09:23
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).

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
0
Merci, je vais essayer ça demain au boulot.

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 !
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
21 mai 2008 à 22:22
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)
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...
0
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......
0
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 mai 2008 à 10:41
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...
0
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
0
issan > issan
22 mai 2008 à 16:21
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
0

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

Posez votre question
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
23 mai 2008 à 08:07
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
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...
0
Merci beaucoup Ivan-hoe,

c'est bon tout fonctionne bien comme il faut.

je te remercie d'avoir pris le temps de me repondre.

a bientot.

Issan
0