Bug suite a demande de rappel

Bonjour à tous,

j'arrive à la fin de mon chantier!!!!

j'explique mon problème : A partir d'un userform (feuille accueil) j'alimente un fichier en feuille ' base de donnée". cela fonctionne pas mal.

a partir de ce tableau , j'ai fait une petite macro (valider) qui se lance lorsque je clique sur le bouton "liste de rappel": Le but est d'avoir la liste des points de vente a rappeler 5 jours avant la date de rappel.

Le problème est que tous les appels ne débouche pas systématiquement de rappel.

Le fichier que j'ai mis fonctionne très bien.

si je refais un cycle total et qu’aucune date n'est pas renseignée suite au remplissage de l'userform, alors la macro fonctionne puis

je refais un cycle total avec une date renseigné suite au remplissage de l'userform, alors la macro 'valider " bug.

Il doit s'agir le fait que la macro ne gère pas les cellules en colonne G ( c'est pour cela que j'ai essayé de contourner en faisant un tri. mais rien ne fonctionne)

Dans mon tableau joint, la dernière ligne 27 a été le résultat de l'userform sans date de rappel. Le fait de mettre une date dans la cellule G27 et hop ça bug

J'ai tout essayé (enfin dans la limite de mes compétences) mais je n'arrive pas à trouver mon erreur.

Si vous avez une solution.

Un grand merci de prendre de votre temps.

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Bonjour,

Vous devez vérifier que la colonne G contient bien une date :

For x = 1 To UBound(tData, 1)
    If IsDate(tData(x, 5)) Then
        If tData(x, 5) <> "" And DateDiff("d", Date, CDate(tData(x, 5))) <= 5 Then sData = sData & tData(x, 1) & " le " & tData(x, 5) & Chr(10)
    End If
Next

Par ailleurs, votre UserForm insère des dates au format texte, ce qui fait qu'elles ne sont pas reconnues comme des dates valides.

L' instruction de saisie doit être :

Range("G" & L).Value = CDate(TextBox10)

Bonjour à tous,

@lalinGérald ... le fichier que je t'ai soumis l'autre jour ne fonctionnait-il pas ??

.... 5 jours avant la date de rappel

If DateDiff("d", Date, CDate(tData(x, 5))) >= 5 Then

donc...

Sub rappel()
Dim tData, sData$

   ' rappel Macro
   ActiveSheet.Range("$A$4:$L$13").AutoFilter Field:=7, Criteria1:="<>"

   With Worksheets("BASE DE DONNEES")
      tData = .Range("C5:L" & .Range("C" & Rows.Count).End(xlUp).Row).Value
   End With
   For x = 1 To UBound(tData, 1)
      If tData(x, 5) <> "" Then
         If DateDiff("d", Date, CDate(tData(x, 5))) >= 5 Then
            sData = sData & tData(x, 1) & " le " & tData(x, 5) & Chr(10)
         End If
      End If
   Next
   If sData <> "" Then MsgBox "Clients à relancer" & Chr(10) & Chr(10) & sData

End Sub

ric

un grand merci

Bonjour,

Je t'ai tricoté un messagebox pour les rappels...

Msg3 = 0 à 3 jours avant la date prévue

Msg7 = 4 à 7 jours avant la date prévue

Donc 3 options :

1- Msg3 > 0 et Msg7 = 0

2- Msg3 = 0 et Msg7 > 0

3- Msg3 > 0 et Msg7 > 0

Mets ta macro "Rappel" en commentaire ( ou utilise une copie du fichier ) et teste celle-ci pour voir si ce peut-être utile.

Sub rappel()
   '
   ' rappel Macro
   '
Dim tData()
Dim sData$, sData1$, sData2$
Dim X As Integer
Dim Y As Byte, Z As Long
Dim Ajout As String
Dim OutPut As Integer
Dim Msg3 As String, Msg7 As String

   Application.ScreenUpdating = False

   With Worksheets("BASE DE DONNEES")
      .Range("$A$4:$L$" & .Range("C" & Rows.Count).End(xlUp).Row).AutoFilter Field:=7, Criteria1:="<>"  ' active le filtre (était dans ton dernier fichier
      tData = .Range("C5:G" & .Range("C" & Rows.Count).End(xlUp).Row - 1).Value        ' place les données dans une variable tableau
   End With

   Msg3 = ("Clients à relancer ( 3 jours ou  moins ) ")
   Msg7 = ("Clients à relancer ( entre 4 et 7 jours )")

   For X = 1 To UBound(tData, 1)                      ' ajoute des caractères entre le Point de vente et la date de rappel
      Z = (Len(tData(X, 1)) + Len(tData(X, 5)) + 7)
         For Y = 1 To 39
            Ajout = Ajout & "-"
            If Y + Z >= 39 Then
               Exit For
            End If
         Next Y
                              ' compose les messages
      If tData(X, 5) <> "" And DateDiff("d", Date, CDate(tData(X, 5))) >= 0 And DateDiff("d", Date, CDate(tData(X, 5))) <= 3 Then sData1 = sData1 & tData(X, 1) & " le :  " & Ajout & " " & tData(X, 5) & Chr(10)
      If tData(X, 5) <> "" And DateDiff("d", Date, CDate(tData(X, 5))) >= 4 And DateDiff("d", Date, CDate(tData(X, 5))) <= 7 Then sData2 = sData2 & tData(X, 1) & " le :  " & Ajout & " " & tData(X, 5) & Chr(10)
       Ajout = ""
   Next X
                              ' affiche le / les messages
   If sData1 = "" And sData2 <> "" Then OutPut = MsgBox(Msg7 & Chr(10) & sData2, vbMsgBoxRight)
   If sData1 <> "" And sData2 = "" Then OutPut = MsgBox(Msg3 & Chr(10) & sData1, vbMsgBoxRight)
   If sData1 <> "" And sData2 <> "" Then OutPut = MsgBox(Msg3 & Chr(10) & sData1 & Chr(10) & Msg7 & Chr(10) & sData2, vbMsgBoxRight)

End Sub

ric

Merci ric, c'est nickel.

ric

Rechercher des sujets similaires à "bug suite demande rappel"