Boite de dialogue

Résolu/Fermé
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 - 15 sept. 2009 à 19:18
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 - 13 oct. 2009 à 23:51
Bonjour à tous,

Voilà j'ai tableur excel où il y a une cellule (par exemple T8) qui se rempli automatiquement à certaines conditions donc soit elle reste vide soit il y a un nombre dedans genre 4500.
j'aimerai qu'une boite de dialogue s'ouvre automatiquement quand cette cellule contient un nombre pour afficher le message suivant : "remplissez la date de la séance."

Comment dois-je faire ?

j'ai cru comprendre qu'il fallait utiliser userform dans vba pour mettre la boite de dialogue en forme mais quel est la procédure pour appeler cette boite de message ?

Merci d'avance de votre aide.
A voir également:

18 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
15 sept. 2009 à 22:49
Bonsoir,
Est que ces solutions te conviennent?
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
16 sept. 2009 à 11:04
Merci pikaju pour cette première réponse,

Ce que je souhaite faire correspond exactement au post vers lequel tu m'as renvoyé.
Par contre les solutions trouvées ne me conviennent pas trop. Je souhaiterai vraiment qu'une boite de dialogue s'ouvre quand ma cellule se remplit.

En fait, dans ma cellule (par exemple T8) j'ai une formule comme ceci :
SI(SOMME (B5:B9)=0;"";SOMME (B5:B9))

Ainsi la cellule T8 ne se remplit que quand la valeur est différente de 0.

Maintenant, j'aimerai qu'à chaque fois que cette cellule se remplit automatiquement, qu'une boite de dialogue apparaissent avec le message suivant : "Remplissez la date de la séance".

Ou alors, l'idéal serait que dans la boite de dialogue qui apparait j'ai le message suivant : "date de la séance :" et une case pour remplir dans cette boite de dialogue la date que je souhaite et qui serait ensuite renvoyée dans une (ou plusieurs) cellule.

Est-ce que cela est faisable ?

Merci de votre aide.
Boris.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
16 sept. 2009 à 12:51
C'est faisable, pas si facile que cela. J'explique : vous voulez que lorsque T8 est complétée (automatiquement) apparaisse une boite de dialogue. Facile :
Clic droit sur l'onglet de la feuil : sélectionner Worksheet dans le menu déroulant (milieu haut) et selectionchange dans celui de droite en haut. ça donne :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Pour faire apparaitre une boite de dialogue permettant à l'utilisateur d'interagir sur le document (cela s'appelle une InputBox), il faut déclarer une variable et lui affecter la valeur de l'InputBox :
Dim result as String
result = InputBox("date de la séance :", "Date")

Le test maintenant : Si T8 est non vide, lancer la boite de dialogue et placer son résultat en B10 :
If [T8] <> "" Then
result = InputBox("date de la séance :", "Date")
[B10] = result

Le problème est que l'inputbox va apparaitre tout le temps (selectionchange = à chaque fois que l'utilisateur change de cellule...). Pour pallier à cela il faut, lorsque l'on inscrit le résultat en B10 pour la 1ère fois, compléter avec un 1 par ex une autre cellule pour pouvoir la tester. Ici j'ai choisit C10 :
Dim result As String
If [T8] <> "" Then 'si T8 est différente de rien alors
If [C10] = 1 Then 'Si C10 = 1 (donc il ne s'agit plus de la 1ère fois) alors
Exit Sub ' on quitte la macro
Else ' sinon (s'il s'agit de la 1ère fois)
result = InputBox("date de la séance :", "Date") 'affiche la boite de dialogue
[B10] = result 'complète la cellule B10 avec la valeur de l'InputBox
[C10] = 1 'inscrit 1 en C10
End If
End If

Il n'y a plus qu'à inscrire ce code entre les deux lignes qui "commandent" cette macro, ce qui nous donne :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [T8] <> "" Then
If [C10] = 1 Then
Exit Sub
Else
result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "(merci de mettre cette date au format : jj/mm/aaaa"), "Date")
[B10] = result
[C10] = 1
End If
End If
End Sub
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
16 sept. 2009 à 13:12
Ok merci pour ta patience et cette aide précieuse,

La seule chose que je ne comprends pas c'est ceci :

"Clic droit sur l'onglet de la feuil : sélectionner Worksheet dans le menu déroulant (milieu haut) et selectionchange dans celui de droite en haut. ça donne :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub"


Quand je fais un clic droit sur l'onglet de ma feuille, j'ai le chois entre renommer, déplacer ou copier...mais je n'ai pas Worksheet.

Est-ce que j'ai mal compris la procédure à suivre ?
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
16 sept. 2009 à 13:26
Ok,
Bon en cherchant bien en fait j'ai compris où il fallait écrire le code.

Par contre maintenant, il faut bien que je crée mon Inputbox (ma boite de dialogue), non ?

Comment dois-je faire : je dois insérer un useform, c'est ça ?

Après je sais créer un useform très basique avec un message texte et un boutton genre "quitter" mais ke ne sais pas comment faire pour créer la case à côté de mon texte "date de la séance :" où je devrai remplir la date qui sera renvoyée automatiquement en B10.

Merci de votre aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
16 sept. 2009 à 14:20
J'avais oublié... Clic droit/visualiser le code. Pardon. Une fois que vous avez fait cela, une fenêtre Visual Basic s'ouvre. Vous copiez/collez le code que je vous ai décrit précédemment :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [T8] <> "" Then
If [C10] = 1 Then
Exit Sub
Else
result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "(merci de mettre cette date au format : jj/mm/aaaa"), "Date")
[B10] = result
[C10] = 1
End If
End If
End Sub

Vous fermez la fenêtre VB et c'est tout. Vous avez une InputBox et tout fonctionne... Pas besoin de userform, votre inputbox est ici :
result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "(merci de mettre cette date au format : jj/mm/aaaa"), "Date")
Essayez, vous verrez
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 sept. 2009 à 14:42
Y a t'il un "1" en C10?
Sinon, envoyez nous votre fichier ici que l'on y jette un oeil...
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
16 sept. 2009 à 14:51
Non, il n'y a pas de "1" en C10.
Ce "1" devrait s'écrire automatiquement normalement, non ?
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
16 sept. 2009 à 14:55
De pls, quand je visualise le code, la ligne :

"result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "(merci de mettre cette date au format : jj/mm/aaaa"), "Date")"

est inscrite en rouge, est-ce normal ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
16 sept. 2009 à 14:58
Non ce n'est pas normal. Joint nous ton fichier stp grâce à cjoint...
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
16 sept. 2009 à 15:24
Bon voici mon fichier joint, je ne sais pas si ça va marcher c'est la première fois que je fias ça.

Alors en fait, il s'agit sur la feuille "modèle" de faire apparaître la boite de dialogue lorsque la cellule G26 se rempli automatiquement et de renvoyer le résultat (la date) dans la celule D26 et pourquoi pas si possible en D53 et en D80.
Il est possible de servir de la case J19 pour faire apparaître le 1.

Bon sinon j'ai oublié de préicser : quand je copie la procédure dans VBA, la ligne "result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "(merci de mettre cette date au format : jj/mm/aaaa"), "Date")" se met en rouge et le message suivant apparaît : Erreur de compilation : Erreur de syntaxe".

L'erreur vient surment de là.

Merci beaucoup.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 sept. 2009 à 15:39
pas de fichier joint...
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
16 sept. 2009 à 15:46
Une fois que j'ai créé mon lien, comment dois-je faire pour le joindre ici ?

Je clique sur insérer un lien et je copie le lien http ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 sept. 2009 à 15:59
Tu créées ton lien
le copies
ici tu fais répondre et colles le lien dans le corps du message
0

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

Posez votre question
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
16 sept. 2009 à 18:23
Bon donc normalement ceci donc fonctionner : https://www.cjoint.com/?jqpSWeZGBp

Merci de votre aidi.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 sept. 2009 à 18:43
Essaye ceci... Ma faute, une histoire de parenthèse. Je t'ai rajouté un bout de code (en gras ci dessous) pour dire que si tu annules l'Inputbox il ne fasse rien.
Le code complet :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [G26] <> "" Then
If [J19] = 1 Then
Exit Sub
Else
result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "merci de mettre cette date au format : jj/mm/aaaa", "Date")
If result = "" Then
Exit Sub
End If

[D26] = result
[J19] = 1
End If
End If
End Sub
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
16 sept. 2009 à 19:27
Ok merci beaucoup, ça semble parfait.

Si toutefois je voulais que la date s'inscrive aussi en même temps dans les cellules D53 et D80, comment devrai-je faire ?

Est-ce que cela peut fonctionner :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [G26] <> "" Then
If [J19] = 1 Then
Exit Sub
Else
result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "merci de mettre cette date au format : jj/mm/aaaa", "Date")
If result = "" Then
Exit Sub
End If
[D26] = result
[D53] = result
[D80] = result

[J19] = 1
End If
End If
End Sub
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
16 sept. 2009 à 19:45
Bon je viens d'essayer ce que je proposais et ça fonctionne nickel, merci beaucoup.

Juste une petite dernière finition ;-)
N'y-a-t-il pas moyen d'écrier "oui" dans la cellule J19 à la place du "1" ?

J'ai essayé ceci, mais ça ne fonctionne pas :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [G26] <> "" Then
If [J19] = oui Then
Exit Sub
Else
result = InputBox("date de la séance :" & Chr(10) & Chr(10) & "merci de mettre cette date au format : jj/mm/aaaa", "Date")
If result = "" Then
Exit Sub
End If
[D26] = result
[D53] = result
[D80] = result
[J19] = oui
End If
End If
End Sub

Car j'aurai rajouté éventuellement en J18 un cellule avec écrit "date complétée :" et donc il aurait pu s'inscrire "oui" quand c'était bon plutôt que d'avoir un "1" dans une cellule sans savoir d'où il vient.
Je sais je suis trop perfectionniste...désolé.

En tout cas merci encore.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
16 sept. 2009 à 20:43
[J19] = "oui"
si tu mets un mot sous VBA sans les guillemets, il le considère comme une variable. Pour "écrire" quelque chose, mets des guillemets... Tu peux si tu veux écrire:
[J19] = "Date déjà complétée"
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
16 sept. 2009 à 21:37
Vraiment mille mercis, c'est super !!
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
12 oct. 2009 à 11:31
Bonjour je fais remonter l'un de mes messages car j'ai une petite modif à faire :

J'avais bien réussi donc à créer ma boite de dialogue suite à vos messages ci-dessus.
Seulement, je souhaiterai maintenant avoir la posiibilité d'ouvrir plusieurs boites de dialogues sur la même page.

Comme c'est boites de dialogues seront les mêmes que ce que j'ai déjà créé, j'ai fait un copier/coller de la procédure et j'ai changé les noms des cellules à prendre en compte.

Mais cela ne fonctionne pas car il semnle qu'il y ait un souci de désignation :
le souci semble provenir de cette ligne :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Quelqu'un peut-il m'aider ?
Merci d'avance.
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
12 oct. 2009 à 15:00
Personne ne peut m'aider :-( car je suis vraiment dans la galère.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 oct. 2009 à 15:21
Salut,
Peux tu placer ici tout ton code? Entre les lignes : Private Sub Worksheet_SelectionChange(ByVal Target As Range) et End sub que l'on puisse voir ce qui ne va pas.
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
12 oct. 2009 à 16:08
Voici le code complet que j'ai :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [P25] <> "" Then
If [D7] = "Séance n°1" Then
Exit Sub
Else
result = InputBox("jour de la séance :" & Chr(10) & Chr(10) & "merci de mettre le jour de la séance au format : Jour", "Jour")
If result = "" Then
Exit Sub
End If
[O7] = result
[D7] = "Séance n°1"
End If
End If
End Sub


Quand je tape ceci dans le code de la page (clic droit sur l'onglet => visualiser le code => je copie ce code), cela fonctionne très bien.

Seulement maintenant, j'aimerai que sur cette même page excel, je puisse ouvrir une autre boite de dialogue qui répondrai à ce code (la même boite de dialogue mais qui ne répond pas aux mêmes cellules) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [P50] <> "" Then
If [D32] = "Séance n°2" Then
Exit Sub
Else
result = InputBox("jour de la séance :" & Chr(10) & Chr(10) & "merci de mettre le jour de la séance au format : Jour", "Jour")
If result = "" Then
Exit Sub
End If
[O32] = result
[D32] = "Séance n°2"
End If
End If
End Sub


Seulement je tape donc ce second code à la suite du premier j'ai un message qui me met qu'il y a un problème avec la boite dialogue suivante :

Errueur de compilation :
Nom ambigu détecté : Worksheet_SelectionChange


Que dois-je donc changer ?
Merci de votre aide.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
12 oct. 2009 à 16:26
Tu ne peux avoir qu'un seul : Private Sub Worksheet_SelectionChange(ByVal Target As Range) Donc il faut mettre tes 2 procédures entre Private sub et end sub.
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
12 oct. 2009 à 16:32
Ok mais alors que dois devenir mon code ? Que dois-je supprimer ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 oct. 2009 à 16:38
J'ai essayé un truc qui ne fonctionne pas. Je regarde à nouveau et te tiens informé.
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
12 oct. 2009 à 16:48
Cela ne fonctionne pas.

Quand je rempli ma cellule P50, il n'y a aucune boite de dialogue qui s'ouvre (alors qu'elle s'ouvre bien quand j'écri en P25).
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 oct. 2009 à 16:48
j'ai changé mon post 26
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
12 oct. 2009 à 16:53
Qu'as tu modifié, je ne vois pas de différence ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743 > nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017
12 oct. 2009 à 16:55
pardon le 28....
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
12 oct. 2009 à 17:14
Euhhh je suis un peu perdu dans nos échanges :-)

Donc tu y regardes et tu me tiens au courant, c'est ça ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 oct. 2009 à 17:15
Yes!!!
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
12 oct. 2009 à 17:18
Ceci fonctionne relativement bien :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [P25] <> "" Then
If [D7] = "Séance n°1" Then
GoTo suite
Else
result = InputBox("jour de la séance :" & Chr(10) & Chr(10) & "merci de mettre le jour de la séance au format : Jour", "Jour")
If result = "" Then
Exit Sub
End If
[O7] = result
[D7] = "Séance n°1"
End If
End If
suite:
If [P50] <> "" Then
If [D32] = "Séance n°2" Then
Exit Sub
Else
result = InputBox("jour de la séance :" & Chr(10) & Chr(10) & "merci de mettre le jour de la séance au format : Jour", "Jour")
If result = "" Then
Exit Sub
End If
[O32] = result
[D32] = "Séance n°2"
End If
End If
End Sub
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
12 oct. 2009 à 17:41
Cela ne fonctionne pas chez moi :

Maintenant la boite de dialogue s'ouvre tout le temps sans respecter la condition : If [P25] <> "" Then ou If [P50] <> "" Then (pour la seconde boite de dialogue)
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
12 oct. 2009 à 17:44
Je retire ce que je viens de dire : ça fonctionne !

Merci
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
12 oct. 2009 à 17:52
Eu en fait j'ai un nouveau souci (je suis désolé) :

En fait je ne voudrai pas seulement ouvriri deux boites de dialogue sur la même feuille excel mais sept !!
Comment dois-je donc intégrer "la troisième boite de dialogue au code que tu m'as donné ?

Cette 3ème boite doit répondre à ces conditions :
If [P75] <> "" Then
If [D57] = "Séance n°3" Then
Exit Sub
Else
result = InputBox("jour de la séance :" & Chr(10) & Chr(10) & "merci de mettre le jour de la séance au format : Jour", "Jour")
If result = "" Then
Exit Sub
End If
[O57] = result
[D57] = "Séance n°3"


Comment dois-je l'intégrer ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
13 oct. 2009 à 09:37
Salut,
Une boîte de dialogue ok, deux pourquoi pas. A trois on se demande déjà si on ne devrait pas aborder le problème différemment. A 7 la question ne se pose même pas. Essaie de trouver un autre système que les boites de dialogue. Quel est le but exactement?
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
13 oct. 2009 à 10:55
Voici le but recherché :

En fait j'ai sur une même feuille excel sept petits tableaux identiques qui permettent en le complétant de faire un récapitulatif d'entraînements de natation (je suis entraîneur sportif).
Il y a sept tableaux identiques car mes nageurs nagent parfois jusqu'à sept fois par semaine.
Dans ce tableau mes nageurs inscrivent le volume de la séance, l'intensité, la durée...Seulement par expérience (j'ai commencé à travailler avec ce petit outil excel depuis quelques semaines), ils oublients toujours d'indiquer le jour de la séance.

Ainsi je voudrai qu'à chaque fois qu'il complète une séance, à partir du moment où ma case "volume de séance" est supérieure à 0 (donc qu'il y a bien eu une séance), qu'une boite de dialogue s'ouvre en leur demandant de compléter le jour de la séance.

Seulement donc comme il y a sept petits tableaux et qu'ils sont donc indépendants les uns des autres, il me faudrait une boite de dialogue propre à chaque tableau et qui répond à la cellule "volume de la séance" contenue dans chaque tableau.

J'espère avoir été clair et que vous aurez compris ce que je recherche.
Merci.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
13 oct. 2009 à 11:04
Oui j'ai compris. On pourrait peut être utiliser un userform. Pour faire cela, peux tu nous joindre ton tableau en utilisant : https://www.cjoint.com/ par exemple. Tu créé ton lien et viens le coller ici dans ta réponse.
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
13 oct. 2009 à 14:50
Ok, voici donc mon fichier :
https://www.cjoint.com/?knoVfYvsgj

Donc sur la feuille Nat S41, il y a actuellement le code pour la première boite de dialogue.
Ainsi, si tu fais l'essai d'écrire "Z1" dans la cellule K8 et par exemple "600" dans la cellule L8 alors les celulles P13, P26 et P29 vont se remplir automatiquement et une boite de dialogue va s'ouvrir pour demander de compléter le jour de la séance.
Si tu marques alors "Lundi" dans la boite de dialogue, alors "séance n°1" s'affiche en D7 (il s'agit de la cellule "test" pour savoir si le jour a déjà été complété) et "Lundi" s'affiche en O9 (dans le cadre donc).

Ce que je voudrai donc c'est qu'il y ait pour chacun des 7 petits tableaux une boite de dialogue identique qui noterai respectivement et dans l'ordre "Séance n°1", "Séance n°2", "Séance n°3"...jusqu'à "Séance n°7" (ainsi que le jour bien sûr car c'est le but) et surtout en prenant en compte les cellules adéquates et respectives à chaque cadre (chaque petit tableau encadré en noir).

A noter que je compte faire aussi la même chose sur la feuille CàP S41 où les cadres sont un tout petit peu différents mais où le principe sera exactement le même.

Pour moi, la solution que tu avais trouvé pour ouvrir deux boites de dialogue est super mais après je ne sais pas si cela est possible de créer un longue procédure comprenant les 7 boites de dialogue.

J'espère m'être exprimé assez clairement.

Merci beaucoup.
Boris.

ps : si tu veux faire l'essai sur la feuille CàP S41, attention, l'intensité à mettre en exemple en K9 n'est plus "Z1" mais plutôt "All 2" par exemple et le volume n'est plus "600" en L9 mais plutôt "10" par exemple.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
13 oct. 2009 à 16:53
Salut,
Regarde ce que j'ai commencé : ici. Tu peux le continuer
En fait, la toute première macro commençais comme ceci :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim result As String
If [P25] <> "" Then
If [D7] = "Séance n°2" Then
Exit Sub
Donc elle testait les cellules P25 et D7 et si elles étaient complétées on quittait la macro. Maintenant, il ne faut plus quitter la macro mais aller plus loin. Tu verras donc que j'ai utilisé des goto suite goto suite1 etc... Ca n'est certainement pas la solution la plus simple, mais c'est la seule que j'ai pour l'instant...
Donc en fait ta macro devient :
Si test1 = vrai alors
je passe à la suite (goto) donc au test2
si test1 = faux
j'exécute la procédure et je quitte la macro
si test2 vrai
je passe à la suite (goto suite2) donc au test3
si test2 faux etc etc...
0
nemotri Messages postés 175 Date d'inscription dimanche 9 août 2009 Statut Membre Dernière intervention 8 décembre 2017 35
13 oct. 2009 à 23:51
Ok merci ça a l'air bon.
J'essayerai ça demain plus en détail.
0