XL 2019 Userform avec renouvellement ou pas selon choix

Zeo63

XLDnaute Nouveau
Bonjour,

Je rencontre quelques difficultés pour mener à bien mon idée. Je m'explique

J'aurai aimé faire un Userform au lancement du Excel en fonction d'une date le 1 de chaque mois par exemple, jusque la pas trop compliqué mais dans l'Userform je voulais mettre bouton oui et non :
-oui je veux répéter le message d'alerte
-non mettre fin au message d'alerte mais qu'il soit quand même renouvelé pour le prochain mois soit le 1ier

Je sais pas si c'est assez compréhensible

Pour la création de l'Userform ça reste facile pour faire les boutons aussi mais c'est la formule SI oui ça fait ça SI non ça fait ça que j'arrive difficilement a comprendre

Si quelqu'un peut m'aidez ça serai super

En vous remerciant

Bien cordialement
 

Pièces jointes

  • UserForm.xlsm
    13.3 KB · Affichages: 20

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Pas grand chose dans ton exemple ??
Donc une 1ere proposition jointe
L'astuce est de mémoriser un flag dans une cellule quelconque (ici en A1000) et de tester à l'ouverture si présent ou pas
Je ne sais pas si c'est ça ton idée ? ,Pour tester change la date de ton PC au 1er ouvre fait ta manip Quitte(ça sauvegarde en auto), remet la date et re manip !
 

Pièces jointes

  • message.xlsm
    18.9 KB · Affichages: 18

Zeo63

XLDnaute Nouveau
Bonjour
Pas grand chose dans ton exemple ??
Donc une 1ere proposition jointe
L'astuce est de mémoriser un flag dans une cellule quelconque (ici en A1000) et de tester à l'ouverture si présent ou pas
Je ne sais pas si c'est ça ton idée ? ,Pour tester change la date de ton PC au 1er ouvre fait ta manip Quitte(ça sauvegarde en auto), remet la date et re manip !
Oui je te prie de m'en excuser on va dire que j'avais vraiment que ça comme idée sur la conception mais pour le faire marcher je vois pas du tout comment faire...

Donc en faite Flag sert donc a ne pas répéter l'information précédente mais est que c'est définitif ou elle autorise le rappel à revenir le mois prochain ? et donc a faire une boucle

Et j'ai juste un petit soucis sur ca c'est que on bloque le changement de la date du coup je vais faire ces manipes et teste plus tard car j'aurai pas accès à un pc non restreint '^^

Je t'en remercie en tout cas je reviendrai vers toi pour savoir si c'est bien ca mais du coup pour les boutons dans l'userform il faut mettre un truc ? enfin un truc un fonction qui dit que quand c'est coché et validé tu prend cette fonction dédié au bouton ?
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Peut être que ce qu'il vous faudrait c'est simplement ça dans le module ThisWorkbook :
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim AnnJQuAu As Date
   On Error Resume Next
   AnnJQuAu = [AnnuléJusquAu]
   If Err Then
      AnnJQuAu = DateSerial(Year(Date), Month(Date), 1)
      Me.Names.Add "AnnuléJusquAu", AnnJQuAu: End If
   On Error GoTo 0
   If Date < AnnJQuAu Then Exit Sub
   If MsgBox("Message de début " & Format(AnnJQuAu, "mmmm yyyy") & "." _
      & vbLf & "Annulez pour ne plus l'afficher.", _
      vbInformation + vbOKCancel, Me.Name) = vbOK Then Exit Sub
   AnnJQuAu = DateSerial(Year(AnnJQuAu), Month(AnnJQuAu) + 1, 1)
   Me.Names.Add "AnnuléJusquAu", AnnJQuAu
   End Sub
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
Bernard ..enfin !!! ZEO semble débutant , déjà moi je pige pas, à brut , [AnnuléJusquAu] ? et si plus tard il veut modifier ses critères ?? il revient te demander ?
@Zeo63 : je tente de d'expliquer simplement
Je viens de faire 5 tests sur 2 mois
1) nous sommes le 01/08 > j'ouvre le fichier , > ouverture USF je coche Option1 ( nom à redéfinir)
2) nous sommes le 05/08 > j'ouvre le fichier , >le message s'affiche mais plus d'USF
3) nous sommes le 17/08 > IDEM
4) nous sommes le 01/09 > j'ouvre le fichier , > ouverture USF je coche Option2( nom à redéfinir) donc plus de message
5) nous sommes le 05/09 > j'ouvre le fichier , > rien ne se passe puisque Option2 coché et ne doit plus mettre de message
Voilà selon ce que j'ai compris de ta demande et qui fonctionne comme tel
A retester chez toi
 

Dranreb

XLDnaute Barbatruc
"AnnuléJusquAu" est simplement un nom dans le classeur valant la date de début de mois à partir de laquelle le message devra à nouveau être émis, jusqu'à ce qu'il annule pour ce mois là.
Ça a bien l'air de ce qu'il demande, non ? Sauf qu'au lieu de deux case à cocher ce sont deux boutons, un OK et un Annuler.
Je pense que lorsqu'il parlais de message il faisait allusion au Show de L'UserForm. S'il cochait non, il voulait qu'il ne soit plus affiché jusqu'au mois suivant, à l'ouverture du classeur.
Mais si c'est bien ça un MsgBox suffit, pas besoin d'un UserForm.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Mais c'est vrai qu'il parlais plutôt de boutons Oui et Non. Alors :
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim AnnJQuAu As Date
   On Error Resume Next
   AnnJQuAu = [AnnuléJusquAu]
   If Err Then
      AnnJQuAu = DateSerial(Year(Date), Month(Date), 1)
      Me.Names.Add "AnnuléJusquAu", AnnJQuAu: End If
   On Error GoTo 0
   If Date < AnnJQuAu Then Exit Sub
   If MsgBox("Message de début " & Format(AnnJQuAu, "mmmm yyyy") & "." _
      & vbLf & "Voulez-vous le rappeler à la prochaine ouverture ?", _
      vbInformation + vbYesNo, Me.Name) = vbYes Then Exit Sub
   AnnJQuAu = DateSerial(Year(AnnJQuAu), Month(AnnJQuAu) + 1, 1)
   Me.Names.Add "AnnuléJusquAu", AnnJQuAu
   End Sub
Il me semble aller de soit que si le fichier n'est pas ouvert le jour du 1er du mois, il doit tout de même à nouveau être émis à chaque ouverture jusqu'à ce qu'on ne le souhaite plus.
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re
Bon ben donc !! mais lui ton fichier complet (comme moi) qui fonctionne .. et on en parle plus , si tant est qu'il puisse comprendre et ...... modifier à son grès par la suite
Pour ma gouverne j'en reste toujours à me mettre au niveau de l'intervenant ( ex consultant aussi) ..
Là si je mets à sa place sans connaissance expert VBA .. direct je te pose la question
OU SONT MES BOUTONS ?
pour faire les boutons aussi mais c'est la formule SI oui ça fait ça SI non ça fait ça que j'arrive difficilement a comprendre
Là j'ai pas vu ta solution dans un fichier joint comme beaucoup le font ?? moi y compris
 

Dranreb

XLDnaute Barbatruc
Je ne vais pas mettre un fichier juste pour un code à coller dans le module ThisWorkbook.
Si ça se compliquait parce qu'il voudrait par exemple pouvoir changer de message, ou si un traitement devait être possiblement fait en début de mois tant que le message se réaffiche, il serait toujours temps de voir.
… Et je lui répondrais que c'est une particularité du MsgBox d'afficher deux boutons, un 'Oui' et un 'Non' lorsque vbYesNo est spécifié en second argument.
 

Zeo63

XLDnaute Nouveau
Bonjour,

Désolé du retard... Je suis débutant ce ce que je connais pas effectivement j'ai fait pas mal de truc en VBA Userform mais quand ca sort de ce que j'ai pu faire bah je sais pas par ou commencer dans le fichier que j'ai joint, c'est pour ca qu'il y avait rien de spécial d'écrit parce que je serai par ou commencer. Je vais faire un word est expliqué mieux pour que ca parle mieux mais j'y travaillerai plus dessus pour partir avec les base au cas ou cela ne marche pas je reviendrai vers vous ca serai beaucoup mieux je pense

En tout cas je vais tester vos propositions pour me faire la mains par ou il faudrait que je commence ^^
 

Pièces jointes

  • MessageUserForm.docx
    27.8 KB · Affichages: 14

Zeo63

XLDnaute Nouveau
Bonjour,

Désolé du retard... Je suis débutant ce ce que je connais pas effectivement j'ai fait pas mal de truc en VBA Userform mais quand ca sort de ce que j'ai pu faire bah je sais pas par ou commencer dans le fichier que j'ai joint, c'est pour ca qu'il y avait rien de spécial d'écrit parce que je serai par ou commencer. Je vais faire un word est expliqué mieux pour que ca parle mieux mais j'y travaillerai plus dessus pour partir avec les base au cas ou cela ne marche pas je reviendrai vers vous ca serai beaucoup mieux je pense

En tout cas je vais tester vos propositions pour me faire la mains par ou il faudrait que je commence ^^
Et également un grand merci bien entendu !
 

Zeo63

XLDnaute Nouveau
Mais c'est vrai qu'il parlais plutôt de boutons Oui et Non. Alors :
VB:
Option Explicit
Private Sub Workbook_Open()
   Dim AnnJQuAu As Date
   On Error Resume Next
   AnnJQuAu = [AnnuléJusquAu]
   If Err Then
      AnnJQuAu = DateSerial(Year(Date), Month(Date), 1)
      Me.Names.Add "AnnuléJusquAu", AnnJQuAu: End If
   On Error GoTo 0
   If Date < AnnJQuAu Then Exit Sub
   If MsgBox("Message de début " & Format(AnnJQuAu, "mmmm yyyy") & "." _
      & vbLf & "Voulez-vous le rappeler à la prochaine ouverture ?", _
      vbInformation + vbYesNo, Me.Name) = vbYes Then Exit Sub
   AnnJQuAu = DateSerial(Year(AnnJQuAu), Month(AnnJQuAu) + 1, 1)
   Me.Names.Add "AnnuléJusquAu", AnnJQuAu
   End Sub
Il me semble aller de soit que si le fichier n'est pas ouvert le jour du 1er du mois, il doit tout de même à nouveau être émis à chaque ouverture jusqu'à ce qu'on ne le souhaite plus.
Ah oui et du coup quand on qu'on ne veut plus qui s'affiche il repart a 0 c'est bien ca ?
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
J'ai repris mon fichier pour l'ajuster à ta demande via ton croquis au quel j'ai ajouté le fonctionnement
Juste un doute : si on a coché ANNULE avant et que nous sommes le 24 par exemple , l'USF ne s'affiche plus ?
c'est ce que j'ai compris
 

Pièces jointes

  • MessageUserForm.docx
    32.1 KB · Affichages: 7
  • message.xlsm
    18.9 KB · Affichages: 11

Discussions similaires