Userform Comparaison vba date aujourdhui et dépassées

ricnoy Messages postés 4 Statut Membre -  
ricnoy Messages postés 4 Statut Membre -
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

  1. ricnoy Messages postés 4 Statut Membre
     
    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