Soustraction

Bonjour à tous,

j'ai cette opération à faire :

If FormPDM.Box4 = "Vérification Périodique" Then

vbox10 = CDate(FormPDM.Box3.Value)

vbox11 = CDate(FormPDM.Box12.Value)

vbox13 = vbox11 - vbox10

FormPDM.Box13.Value = vbox13

Lorsqu'il s'agit d'heure cela marche vraiment bien.

Si il s'agit de date je n'arrive pas a avoir le format jj jrs mais me donne toujours un resultat 00/01/1900

par exemple si je fait 3h45 - 1h45 il me donne bien 2h

si je fais 20/06/2016 - 02/03/2016 il me donne 00/01/1900 auriez vous une solution s'il vous plait.

Bonjour Spouns, le forum.

Je me permets de te fournir le lien de l'aide msdn pour répondre à ton problème :

https://msdn.microsoft.com/fr-fr/library/office/gg251417(v=office.15).aspx

Tu trouveras plus d'informations qu'en te fournissant la réponse directement

Salut Benoit,

Merci de ta reponse


J'ai donc appliqué ce que j'ai trouvé sur ton lien le résultat est égal a zéro quoique je fasse voila ce que j'ai ecris il y a surement une erreur...

If FormPDM.Box4 = "Vérification Périodique" Then

vbox10 = CDate(FormPDM.Box3.Value)

vbox11 = CDate(FormPDM.Box12.Value)

vbox13 = DateDiff("d", vbox11, vbox10)

FormPDM.Box13.Value = vbox13

Bonjour,

Les dates et les heures sont des valeurs numériques.

L'affichage dans la Box13 dépend du format que tu appliques.

Dans ton code, on ne voit pas d'instruction qui affecte ce format.

A+

Je suis tout a fait d'accord mais il doit avoir en memoire un nombre au moins... là il ne donne rien du tout meme si je fais clic droit format cellule et que je change j'ai toujorus zero...

Aurais tu une idée ?

En testant, dans le classeur et dans un userform, le résultat est correct.

Si tu le souhaites, joint ton fichier vidé de toutes données personnelles ou confidentielles, et je regarderai.

Sinon essaye en tapant ainsi :

FormPDM.Box13.Value = Datediff("d", FormPDM.Box12.Value, FormPDM.Box3.Value)

Comment as-tu déclaré tes variables ?

Edit: Bonjour Frangy.

Difficile de te répondre sans exemple concret.

Tu parles de format de cellule alors que ton code n'indique pas qu'une cellule est renseignée.

A+

Bonjour à tous

Un essai :

Private Sub CommandButton1_Click()

    If FormPDM.Box4 = "Vérification Périodique" Then
        vbox10 = CDate(FormPDM.Box3.Value)
        vbox11 = CDate(FormPDM.Box12.Value)
        vbox13 = vbox11 - vbox10
    If vbox13 < 1 Then
        FormPDM.Box13.Value = CDate(vbox13)
        Else
            FormPDM.Box13.Value = vbox13
        End If
    End If
End Sub

Bye !

https://www.cjoint.com/c/FFvhYmkoUBv

Voici le fichier test par contre il y a peut etre un ou deux beug en fonction des versions...


Ca ne serait pas ça qui m'embete par hasard ?

Private Sub MAJ(lig As Long)

Dim I As Byte

For I = 2 To 14

'If I <> 3 Then

Ws.Cells(lig, I) = Me.Controls("Box" & I).Value

If I = 3 Then Ws.Cells(lig, I) = CDate(Me.Controls("Box" & I).Value)

If I = 10 Then Ws.Cells(lig, I) = CDate(Me.Controls("Box" & I).Value)

If I = 11 Then Ws.Cells(lig, I) = CDate(Me.Controls("Box" & I).Value)

If I = 12 Then Ws.Cells(lig, I) = CDate(Me.Controls("Box" & I).Value)

'If I = 13 Then Ws.Cells(lig, I) = CDate(Me.Controls("Box" & I).Value)

Next I

End Sub

thebenoit59 a écrit :

En testant, dans le classeur et dans un userform, le résultat est correct.

Si tu le souhaites, joint ton fichier vidé de toutes données personnelles ou confidentielles, et je regarderai.

Sinon essaye en tapant ainsi :

FormPDM.Box13.Value = Datediff("d", FormPDM.Box12.Value, FormPDM.Box3.Value)

Comment as-tu déclaré tes variables ?

En As Date


si personne à d'idée fonctionnelle sur mon fichier on peut etre partir sur une formule :

disant si la colone 4 est verification periodique on fait la soustraction de la colonne 12 à la colone 3 et si c'est intervention on fait la colone 11 - 10 . c'est possible à faire cela ?

Etrangement soit il ca marche bien pour les heures..

Quelqu'un à une idée ?

Rechercher des sujets similaires à "soustraction"