• Initiateur de la discussion Initiateur de la discussion Orodreth
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 😕 ), 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
 
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
@+
 
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

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+
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
471
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
484
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
174
Retour