Userform Comparaison vba date aujourdhui et dépassées
ricnoy
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
ricnoy Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
ricnoy Messages postés 3 Date d'inscription Statut Membre Dernière intervention -
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)"
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)"
A voir également:
- Userform Comparaison vba date aujourdhui et dépassées
- Comparaison million milliard - Accueil - Technologies
- Airpods 3 date de sortie - Guide
- Jm date désabonnement - Forum Gmail
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. ✓ - Forum Graphisme
- Publipostage date inversée - Forum Word
1 réponse
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
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