Création d'une MsgBox avec un champs date à compléter ?

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 !

anthony.unac

XLDnaute Occasionnel
Bonjour,

Mon but est de contraindre l'utilisateur à inscrire la date de la prochaine réception lorsqu'il ouvre le fichier toto.xls.

Pour se faire, j'ai pense à une macro du type :
************************************

Private Sub Workbook
MsgBox "Bonjour, veuillez inscrire la date de la prochaine réception dans le champs ci-dessous (jj/mm/aaaa)"
End Sub

1/ Cette macro doit être impérativement placé dans Thisworkbook ou pas ?

2/ Ne faut il pas ajouter un BeforeOpen ou quelque chose comme ca ?

3/ Il manque le fameux champs en question a cette MsgBox, comment l'obtient on ?

Cordialement
Anthony
 
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

A+
 
Re : Création d'une MsgBox avec un champs date à compléter ?

Salut Anthony,

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

A+

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

Alors la je sèche complètement 🙁

Anthony
 
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
 
Re : Création d'une MsgBox avec un champs date à compléter ?

Re,

J'ai voulu poursuivre le code de sorte que la date inscrite dans le champs date apparaisse dans certaine cellule de la feuil1, 2 etc ...

Pour cela j'ai ecrit la ligne de code suivante juste avant le End Sub :

Feuil1.A1 = VDate
'La cellule A1 de la feuil1 est égal à la date inscrite par l'utilisateur

Visiblement ca ne marche pas ?
Ou est mon erreur ?
 
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

nickel !
Merci beaucoup !
 
Re : Création d'une MsgBox avec un champs date à compléter ?

et dans le cas ou je souhaite affecter plusieurs cellules d'une même feuille comment fait on ?

J ai tente comme ceci :
******************

Feuil3.[B1]&[B31]=VDate
'mais en vain alors j ai tente :

Feuil3.([B1]&[B31])=VDate
'mais en vain aussi
 
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
 
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

Oui ou alors je viens de penser a un truc tout bete :
Ecrire directement sur la feuil3 "=B1" dans la cellule 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

Discussions similaires

Réponses
22
Affichages
3 K
S
Réponses
3
Affichages
1 K
Steph
S
W
Réponses
2
Affichages
1 K
W
Retour