Problème datediff VBA

Bonjour à tous,

je sollicite votre aide concernant la macro suivante : en effet je souhaiterai via une formule mathématique généré un prix de vente différent en fonction de la date de commande du produit, c'est l'objectif de la macro.

Pour ce faire j'aurais besoin de faire la différence entre plusieurs dates.

la date de mise à disposition du produit, la date de départ du vol et la date de commande du vol par le client.

j'ai ainsi générer le code suivant, mais la macro n'applique pas la fonction DateDiff, et je n'arrive pas à savoir pourquoi :s

si vous pouviez m'apporter votre aide ce serait génial !

Sub macro_formation_desprix()

Dim coutdubillet As Integer

Dim datemiseservice As Date

Dim datedepart As Date

Dim datecommande As Date

Dim date1 As Integer

Dim date2 As Integer

Dim X As Single

Dim Y As Single

numerovol = Range("B24").Value

Sheets(numerovol).Select

coutdubillet = Range("O2").Value

datemiseservice = Range("F2").Value

datedepart = Range("G2").Value

Sheets("facture").Select

datecommande = Range("D2").Value

date1 = DateDiff("d", datedepart, datemiseservice)

date2 = DateDiff("d", datecommande, datemiseservice)

X = (date2 / date1) * 100

Y = -3e-05 * (X ^ 2) + 0.0029 * X - 0.0001

prixpardate = Y * coutbillet + coutbillet

Range("C29").Value = prixpardate

End Sub

Bonjour

sans être un pro vba, je pense que ton écriture Datediff est correcte.

Met ton fichier en ligne.

Pour ma part, l'erreur est ailleurs.

Cordialement

ah merci, je cherche, je modifie depuis 45min sans arrivé au résultat.

De plus la macro se lance sans message d'erreur mais n'applique pas les calculs, j'ai pourtant vérifié les données récupérées sont bien des dates au format date...

je travail sur la version mac 2011 d'excel ça peut avoir un effet non ?

de plus je ne peux pas mettre mon fichier en ligne il pèse 36MO, c'est 300KO maximum si j'ai bien lu

Bonsoir

A voir

Pas les mêmes variables

Sub macro_formation_desprix()
Dim coutdubillet As Integer
Dim datemiseservice As Date
Dim datedepart As Date
Dim datecommande As Date
Dim date1 As Integer
Dim date2 As Integer
Dim X As Single
Dim Y As Single

  NumeroVol = Range("B24").Value
  Sheets(NumeroVol).Select
 coutdubillet = Range("O2").Value
  datemiseservice = Range("F2").Value
  datedepart = Range("G2").Value
  Sheets("facture").Select
  datecommande = Range("D2").Value
  date1 = DateDiff("d", datedepart, datemiseservice)
  date2 = DateDiff("d", datecommande, datemiseservice)
  X = (date2 / date1) * 100
  Y = -0.00003 * (X ^ 2) + 0.0029 * X - 0.0001
  Prixpardate = Y * coutbillet + coutbillet
  Range("C29").Value = Prixpardate
End Sub

Bonjour,

En complément de la réponse de Banzai64, que je salue de si bon matin, code fonctionnel ci-dessous.

Cdlt

Option Explicit
Public Sub macro_formation_desprix()
'Ctrl + a pour lancer le calcul
Dim coutdubillet As Currency
Dim datemiseservice As Date, datedepart As Date, datecommande As Date
Dim date1 As Integer, date2 As Integer
Dim X As Single, Y As Single

    Application.ScreenUpdating = False
    'NumeroVol = Range("B24").Value
    With Sheets("NumeroVol")
        coutdubillet = .[O2]
        datemiseservice = .[F2]
        datedepart = .[G2]
    End With
    With Sheets("facture")
        datecommande = .[D2]
        date1 = DateDiff("d", datedepart, datemiseservice)
        date2 = DateDiff("d", datecommande, datemiseservice)
        X = date2 / date1 * 100
        Y = -0.00003 * X ^ 2 + 0.0029 * X - 0.0001
        'prix par date
        .[C29] = Y * coutdubillet + coutdubillet
    End With
End Sub
65adtaleur-v1.zip (10.97 Ko)

Bonjour ! le matin me réussit mieux pour le VBA j'ai appliquer vos changements cela fonctionne parfaitement. l'erreur venait du nom de la variable. merci beaucoup, c'est dur de trouver seul ses erreurs

Bonjour à tous,

pour une différence en jours aucun intérêt à utiliser datediff(), faire tout simplement

... = date2-date1

au pire, si ce sont des date-heure faire : ...= int(date2)-int(date1)

eric

Rechercher des sujets similaires à "probleme datediff vba"