Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
Re : Création d'une MsgBox avec un champs date à compléter ?
Salut Anthony,
Réponse 1 = oui
Réponse 2 = oui, dans les évènements de ThisWorkbook, tu as "Open" = action à l'ouverture
Réponse 3 = il faut utiliser un InputBox
Code:
Private Sub Workbook_Open()
Dim FlgOK As Boolean, VDate As Date, Rep As String
' Oblige l'utilisateur à saisir une date ou à quitter l'application
Do
Rep = InputBox("Bonjour, veuillez inscrire la date de la prochaine réception dans le champs ci-dessous (jj/mm/aaaa)")
If Rep = "" Then
MsgBox "Aucune date saisie, sortie de l'application"
Application.Quit
End If
On Error Resume Next
VDate = DateValue(Rep)
' Si il s'agit bien d'une date
FlgOK = (Err.Number = 0)
On Error GoTo 0
Loop Until FlgOK = True
End Sub
Private Sub Workbook_Open()
Dim FlgOK As Boolean, VDate As Date, Rep As String
' Oblige l'utilisateur à saisir une date ou à quitter l'application
Do
Rep = InputBox("Bonjour, veuillez inscrire la date de la prochaine réception dans le champs ci-dessous (jj/mm/aaaa)")
If Rep = "" Then
MsgBox "Aucune date saisie, sortie de l'application"
Application.Quit
End If
On Error Resume Next
VDate = DateValue(Rep)
' Si il s'agit bien d'une date
FlgOK = (Err.Number = 0)
On Error GoTo 0
Loop Until FlgOK = True
End Sub
Je reviens sur ce code qui fait très pro 😉
Comme je suis nul en VBA mais tres curieux sur le sujet je vais tenté de le décortiquer ce code afin de ne pas le recopier betement :
Ligne1:
******
Private Sub Workbook_Open()
Il s'agit ici d'activer la macro dès l'ouverture du fichier ?
Ligne2:
******
Dim FlgOK As Boolean, VDate As Date, Rep As String
Définition de 3 "variables" :
1/ FlgOK de type booleenne (1 ou 0) ?
2/ VDate de type date ? Ca existe ca ?
3/ Rep qui est une chaine (string) de caractères ?
Ligne3:
******
' Oblige l'utilisateur à saisir une date ou à quitter l'application
Il s'agit je crois d'un commentaire car ca commence par l'apostrophe : '
Ligne4:
******
Do
Loop Until FlgOK = True
On attaque une boucle "Do" (Faire) jusqu'a ce que la condition FlgOK soit vrai
Ligne5et6:
*********
Rep = InputBox("Bonjour, veuillez inscrire la date de la prochaine réception dans le champs ci-dessous (jj/mm/aaaa)")
Je crois que c'est la ou la creation de la MsgBox+le champs (=la InputBox) est effectuée ?
Ligne7à9:
********
If Rep = "" Then
MsgBox "Aucune date saisie, sortie de l'application"
Application.Quit
End If
Condition Si sur la chaine Rep ou plutot sur le champs ?
De sorte que si rien ("") n est saisie alors une MsgBox apparait (?) avec le message : "Aucune date saisie, sortie de l'application"
et l'application prend fin. Cela signifie t il que le fichier toto.xls se ferme ?
Ligne10àFin:
*********
On Error Resume Next
VDate = DateValue(Rep)
' Si il s'agit bien d'une date
FlgOK = (Err.Number = 0)
On Error GoTo 0
Re : Création d'une MsgBox avec un champs date à compléter ?
bonjour,
je prends le relai :
Ligne1:
******
Private Sub Workbook_Open()
Il s'agit ici d'activer la macro dès l'ouverture du fichier ?
***********> oui et non, elle s'active d'elle même à l'ouverture du classeur
On Error Resume Next
s'il y a une erreur, on passe à la ligne de code suivante sans s'occuper de l'erreur
VDate = DateValue(Rep)
' Si il s'agit bien d'une date
les infos enregistrées dans un inputbox sont toujours du texte, donc il faut transformer ce texte en date, d'ou datevalue(rep)
FlgOK = (Err.Number = 0)
si Err.Number=0 (c'est à dire que la conversion en date s'est bien déroulée) cette instruction renvoie 'VRAI' donc le flag FlgOK est vrai et on autorise l'utilisateur à continuer avec le classeur sinon on le ferme
Il s'agit ici d'activer la macro dès l'ouverture du fichier ?
***********> oui et non, elle s'active d'elle même à l'ouverture du classeur
On Error Resume Next
s'il y a une erreur, on passe à la ligne de code suivante sans s'occuper de l'erreur
VDate = DateValue(Rep)
' Si il s'agit bien d'une date
les infos enregistrées dans un inputbox sont toujours du texte, donc il faut transformer ce texte en date, d'ou datevalue(rep)
FlgOK = (Err.Number = 0)
si Err.Number=0 (c'est à dire que la conversion en date s'est bien déroulée) cette instruction renvoie 'VRAI' donc le flag FlgOK est vrai et on autorise l'utilisateur à continuer avec le classeur sinon on le ferme
Re : Création d'une MsgBox avec un champs date à compléter ?
re,
mais non, tout simplement une instruction par ligne
Feuil3.[B1]=VDate
Feuil3.[B31]=VDate
sinon, tu peux laisser sur la feuille de calcul:
en b31 : =si(b3=0;"";b3)
dès que le code vba va mettre une valeur en b3, elle sera automatiquement en B31
mais non, tout simplement une instruction par ligne
Feuil3.[B1]=VDate
Feuil3.[B31]=VDate
sinon, tu peux laisser sur la feuille de calcul:
en b31 : =si(b3=0;"";b3)
dès que le code vba va mettre une valeur en b3, elle sera automatiquement en B31
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD