Date inversée ?

Orodreth

XLDnaute Impliqué
Bonjour à tous.

Je m'en remets encore une fois à vous pour m'aider sur un problème que je ne comprends pas.
J'ai un programme qui va chercher dans une base des informations sur les commandes fournisseurs.
De fait, je dois recalculer derrière les dates de livraison estimées, en fonction de certains temps moyens.

Pour faire ces calculs, je me sers d'un datetimepicker tout simple, que j'incrémente de la valeur du délai.
Seulement ... Excel n'est pas d'accord.

J'ai checké la valeur de mon dtpicker à chaque passage de boucle (pour chaque fournisseur en gros), et lui me prend les bonnes valeurs (du 28/07 => 10/08)
Donc là, il n'y a pas de problème.

Dans ce cas, pourquoi en faisant une simple affectation de valeur du genre
"cells(i,X).value = dtpicker1.value", Excel m'affiche-t-il une date de livraison estimée au 08/01 pour une commande passée le ... 27/07

Là j'avoue que j'ai du mal à comprendre pourquoi il inverse le mois et le jour, et comme il ne me le fait pas tout le temps (sur Juillet, c'est bon, dès qu'il passe à Août, il préfère Janvier :confused: ), je n'arrive pas à résoudre mon problème.

Voici le code qui permet de calculer ces dates de livraison:

Code:
Private Sub CalculDateLivraison(DebutPlage As Integer, FinPlage As Integer, FeuilleActive As Worksheet)
Dim i As Integer
Dim ValeurDelais As Integer
With FeuilleActive
    For i = DebutPlage To FinPlage
        If RechercherDelais(CStr(.Cells(i, 3).Value)) > 0 Then
            ValeurDelais = RechercherDelais(CStr(.Cells(i, 3).Value))
            Else
            If .Cells(i, 2).Value = "LIVR" Then
                ValeurDelais = RechercherDelais("Moyenne Livre")
                ElseIf .Cells(i, 2).Value = "DISQ" Then
                    ValeurDelais = RechercherDelais("Moyenne Disque")
            End If
        End If
        dtpDateLivraison.Value = Format(.Cells(i, 1).Value + ValeurDelais, "dd/mm/yyyy")
        MsgBox dtpDateLivraison.Value
        If .Cells(i, 12).Value = "" Then
            If Format(dtpDateLivraison.Value, "dddd") = "dimanche" Or Format(dtpDateLivraison.Value, "dddd") = "lundi" Then
                If Format(dtpDateLivraison.Value, "dddd") = "dimanche" Then
                    dtpDateLivraison.Value = dtpDateLivraison.Value + 2
                    'MsgBox dtpDateLivraison.Value
                    ElseIf Format(dtpDateLivraison.Value, "dddd") = "lundi" Then
                    dtpDateLivraison.Value = dtpDateLivraison.Value + 1
                    'MsgBox dtpDateLivraison.Value
                End If
            End If
            .Cells(i, 12).Value = Format(dtpDateLivraison.Value, "dd/mm/yyyy")
            '.Cells(i, 13).Value = ValeurDelais
        End If
    Next i
End With
End Sub

Quelqu'un voit un moyen de m'aider ?

merci d'avance,
Thomas
 

Pierrot93

XLDnaute Barbatruc
Re : Date inversée ?

Bonjour Thomas

as tu essayé en utilisant la fonction "CDate" comme dans l'exemple ci dessous :

Code:
Format(CDate(dtpDateLivraison.Value), "dd/mm/yyyy")

sinon mets un fichier sans données confidentielles avec le code et l'usf.

bon après midi
@+
 

Orodreth

XLDnaute Impliqué
Re : Date inversée ?

Bonjour Pierrot.

Fonction CDate ne marche pas :(

Je joins mon classeur, mais vous ne pourrez pas l'éxécuter: il va taper sur une base serveur, et là ....
Je joins également une copie d'une des feuilles obtenues, trier par croissance sur la date de livraison estimée. Et ce n'est pas en Janvier.

Merci

Thomas
 

Pièces jointes

  • EtatDesCommandes.zip
    29.4 KB · Affichages: 21
  • Exemple résultat.zip
    18.2 KB · Affichages: 23

2passage

XLDnaute Impliqué
Re : Date inversée ?

bonjour,

ça inverserait aussi sur le début juillet : le code VBA n'est pas "français" il interprête les date au forma anglais (mm/dd/YYYY). Il me semble que je contournais ce problème en découpant les dates et en les recomposant à coups de day(), month() et year() pour les maitriser.
j'espère que ça t'aidera
A+
 

Orodreth

XLDnaute Impliqué
Re : Date inversée ?

Bonjour Pierrot, 2passage, le fil, le forum.

Bon, j'ai trouvé quelque chose, c'est moche, mais ça marche.

Code:
Private Sub CalculDateLivraison(DebutPlage As Integer, FinPlage As Integer, FeuilleActive As Worksheet)
Dim i As Integer
Dim ValeurDelais As Integer
With FeuilleActive
    For i = DebutPlage To FinPlage
        If RechercherDelais(CStr(.Cells(i, 3).Value)) > 0 Then
            ValeurDelais = RechercherDelais(CStr(.Cells(i, 3).Value))
            Else
            If .Cells(i, 2).Value = "LIVR" Then
                ValeurDelais = RechercherDelais("Moyenne Livre")
                ElseIf .Cells(i, 2).Value = "DISQ" Then
                    ValeurDelais = RechercherDelais("Moyenne Disque")
            End If
        End If
        dtpDateLivraison.Value = Format(.Cells(i, 1).Value, "d/m/yyyy")
        dtpDateLivraison.Value = dtpDateLivraison.Value + ValeurDelais
        If .Cells(i, 12).Value = "" Then
            If Format(dtpDateLivraison.Value, "dddd") = "dimanche" Or Format(dtpDateLivraison.Value, "dddd") = "lundi" Then
                If Format(dtpDateLivraison.Value, "dddd") = "dimanche" Then
                    dtpDateLivraison.Value = dtpDateLivraison.Value + 2
                    'MsgBox dtpDateLivraison.Value
                    ElseIf Format(dtpDateLivraison.Value, "dddd") = "lundi" Then
                    dtpDateLivraison.Value = dtpDateLivraison.Value + 1
                    'MsgBox dtpDateLivraison.Value
                End If
            End If
            Dim UneDate As String
            UneDate = CStr(dtpDateLivraison.Day) & "/" & CStr(dtpDateLivraison.Month) & "/" & CStr(dtpDateLivraison.Year)
            .Cells(i, 12).NumberFormat = "d/m/yyyy"
            '.Cells(i, 12).Value = Format(dtpDateLivraison.Value, "d/m/yyyy")
            .Cells(i, 12).Value = CDate(UneDate)
            '.Cells(i, 13).Value = ValeurDelais
        End If
    Next i
End With
End Sub

Sur le principe, c'est ce qu'à proposer 2passage, même si je dois le faire un peu différement.

Je sais toujours pas pourquoi ça foirait, mais bon :(

Merci à vous deux
Thomas
 

Statistiques des forums

Discussions
312 845
Messages
2 092 764
Membres
105 529
dernier inscrit
StarExcel