XL 2019 Userform avec renouvellement ou pas selon choix

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 !

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

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

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 ?
 
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
 
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
 
"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:
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.
 
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
 
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.
 
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

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 !
 
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 ?
 
- 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
Retour