Userform Comparaison vba date aujourdhui et dépassées

Fermé
ricnoy Messages postés 3 Date d'inscription mardi 23 avril 2019 Statut Membre Dernière intervention 3 mai 2019 - 3 mai 2019 à 16:09
ricnoy Messages postés 3 Date d'inscription mardi 23 avril 2019 Statut Membre Dernière intervention 3 mai 2019 - 3 mai 2019 à 17:18
Bonjour,

je suis en train de faire un userform et j'aimerai qu'il se remplisse avec des données en fonction d'une date. Si la date est comprise entre "aujourd'hui dépassé de 7 jours" et "aujourd'hui dépassé de 14 jours" et que "relance 1" est vide alors copie de plusieurs cellules dans textboxs puis message box "remplir relance1". L'idée est ensuite de partir dans des elseif pour faire la même chose avec relance 2, relance 3, etc...

L'utilisateur entrerai du text dans relance 1 si demandé, validerai puis l'userform serait de nouveau lancé pour identifier si d'autres relances nécessitent une action. Et ce, jusqu'à ce qu'il n'y ai plus de relance à faire. Il y'aurait ainsi un message box qui expliquerait que tout à été traité et il se fermerai en cliquant sur ok.

J'ai commencé la macro. La voici, c'est juste la partie sur relance 1 étant donné que pour la suite ce sera plus ou moins les même éléments :

Private Sub UserForm_Activate()
Dim z As Long
Dim lastligne As Integer

'Derniere ligne du tableau de la feuille Ansot
lastligne = Sheets("Ansot").Range("A65536").End(xlUp).Row


For z = 2 To lastligne

If Worksheets("Ansot").Cells(z, 4).Value < DateAdd("d", -7, Date) And Worksheets("Ansot").Cells(z, 4).Value > DateAdd("d", -14, Date) And IsEmpty(Worksheets("Ansot").Cells(z, 17)) = True Then

With Worksheets("Ansot")
.Cells(z, 1).Value = TextBoxA
.Cells(z, 2).Value = CDate(TextBoxB)
.Cells(z, 4).Value = CDate(TextBoxC)
.Cells(z, 5).Value = CDbl(Me.TextBoxD) * 1
.Cells(z, 6).Value = TextBoxE
.Cells(z, 13).Value = CDbl(Me.TextBoxF) * 1
.Cells(z, 14).Value = TextBoxRE1
.Cells(z, 15).Value = TextBoxRE2
.Cells(z, 16).Value = TextBoxRE3
.Cells(z, 16).Value = TextBoxREH


End With
MsgBox "remplir relance 1", vbOKOnly, "Relance 1"
End If
MsgBox "Pas de relance cette semaine", vbOKOnly, "Pas de relance"
Next z

End Sub


Je pense que la partie "date" ne fonctionne pas, tous les lancements de macros me donne "msgbox pas de relance cette semaine". De plus ce msgbox se recharge tout seul quand je le quitte. (surement lié au lancement d'userform à l'activation de l'onglet)

Rien ne s'affiche jamais dans la textbox

J'ai souvent un problème d'incompatibilité sur le ".Cells(z, 2).Value = CDate(TextBoxB)"

1 réponse

ricnoy Messages postés 3 Date d'inscription mardi 23 avril 2019 Statut Membre Dernière intervention 3 mai 2019
3 mai 2019 à 17:18
Je réponds à mon propre post. Voilà comment j'ai amélioré la macro. Elle fonctionne bien sauf la partie de la messagebox "pas de relance" qui apparaît tout le temps et ne part pas.

Dim z As Long
Dim lastligne As Integer

'Derniere ligne du tableau de la feuille Ansot
lastligne = Sheets("Ansot").Range("A65536").End(xlUp).Row


For z = 2 To lastligne

If Worksheets("Ansot").Cells(z, 4).Value < DateAdd("d", -7, Date) And Worksheets("Ansot").Cells(z, 4).Value > DateAdd("d", -14, Date) And IsEmpty(Worksheets("Ansot").Cells(z, 18)) = True Then

With UserForm3
.TextBoxA = Worksheets("Ansot").Cells(z, 1).Value
.TextBoxB = CDate(Cells(z, 2).Value)
.TextBoxC = CDate(Cells(z, 4).Value)
.TextBoxD = CDbl(Cells(z, 5).Value) * 1
.TextBoxE = Cells(z, 6).Value
.TextBoxF = CDbl(Cells(z, 13).Value) * 1
.TextBoxRE1 = Cells(z, 18).Value
.TextBoxRE2 = Cells(z, 19).Value
.TextBoxRE3 = Cells(z, 20).Value
.TextBoxREH = Cells(z, 21).Value
End With



MsgBox "remplir relance 1", vbOKOnly, "Relance 1"
If response = vbOK Then
Exit Sub

End If
Exit For
End If
Else
MsgBox "Pas de relance cette semaine", vbOKOnly, "Pas de relance"


End If

Next z
0