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
Allo Zeo63,
Le UserForm ne peut conserver des valeurs comme OUI (répéter) ou NON (ne pas répéter).
Ces valeurs doivent être conservées sur une feuille.
Donc il faut choisir une cellule qui contiendra une de ces valeurs et ensuite afficher le UserForm si la valeur de la cellule est OUI et ne pas l'afficher si la valeur est NON.
J'espère que c'est clair
Daniel
dans l'exemple ci-dessous, deux cellules sont réservées, D1 et E1
à l'ouverture du classeur, une macro compare les deux valeurs. si elles sont identiques, il ne se passe rien.
Si elles sont différentes, une alerte et une proposition d'annulation. l'alerte sera renouvelée au mois suivant
dans le vba module
VB:
Sub test()
If Cells(1, 4) <> Cells(1, 5) Then
If MsgBox("Alerte, Voulez-vous annuler cette information pour le mois en cours ?", vbYesNo) = vbYes Then
Cells(1, 5) = Month(Date)
End If
End If
End Sub
dans le vba classeur
VB:
Private Sub Workbook_Open()
Sheets("Feuil1").Cells(1, 4) = Month(Date)
Call test
UserForm1.Show
End Sub
Déclarer un nom au niveau Classeur avec la date d'alerte prévisionnelle :
Utiliser un CheckBox à la place des optionbuttons
Mettre le code ci-contre dans l'Userform,
La date d'alerte modifiée ou non sera conservée dans le classeur ...
VB:
Dim Mdate As Date
Private Sub CheckBox_Disabled()
With CheckBox1
.Locked = True
.Caption = "Prochaine Alerte le " & [Alerte]
.MousePointer = fmMousePointerNoDrop
End With
End Sub
Private Sub CheckBox1_Click()
Names("Alerte").Value = Mdate
CheckBox_Disabled
End Sub
Private Sub UserForm_Initialize()
If CDate([Alerte]) <= Date Then
Mdate = DateAdd("m", 1, [Alerte])
CheckBox1.Locked = False
CheckBox1.Caption = "Reporter l'alerte au " & Mdate
Else
CheckBox_Disabled
End If
End Sub
Mettre le code ci_contre dans celui de la feuille concernée
Code:
Private Sub Worksheet_Activate()
If Date >= CDate([Alerte]) Then UserForm1.Show
End Sub