XL 2013 passage de fonction à VBA plante (calcul de différences de dates)

  • Initiateur de la discussion Initiateur de la discussion Sebast
  • 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 !

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,


grâce au forum, j'ai appris comment décomposer une différence de dates en année, mois, jour, minute etc.

Avec les formules (merci Eriiiic), ça fonctionne mais ayant besoin d'automatiser le tout, j'essaie de convertir tout ça en VBA et c'est là que je bute :

la formule =datedif(b3;c3;"ym") que j'écris en VBA EcartMois = DateDiff("ym", DateDebut, DateFin) plante sans que je sache pourquoi …

idem pour le modulo que je n'arrive pas à convertir en VBA

En pièce jointe un petit fichier

Quelqu'un a-t-il une idée ?


Merci d'avance

Seb
 

Pièces jointes

Bonsoir,
merci pour ton aide. 'est plutôt râlant car c'était bien pratique ...
Je n'arrive pas à croire qu'en passant en VBA, un paramètre soit carrément zappé !
Mais étant novice, je dois le constater.
Quelqu'un a-t-il été confronté au problème ?

Bonne soirée
 
Bonsoir le fil, le forum

Quelqu'un a-t-il été confronté au problème ?
1) Utiliser ce bel ouvrage signé ROGER2327*
https://www.excel-downloads.com/threads/date-dif.207853/page-2#post-1364859
2) Lire tout le fil cité ci-dessus par une nuit sans lune, près de l'âtre, avec sur les genoux un plaid de bonne facture, et en fond sonore , Flying Teapot (de Gong) permettra de mieux appréhender les déboires potentiels d'un usage immodéré de DATEDIF.

*: Ca fait un bail qu'XLD ne voit plus ROGER2327 nous proposer ses codes et autres formules.
Et c'est bien dommage
(En tout cas la lecture de ses messages étaient toujours pour moi un réel plaisir)
 
Dernière édition:
Bonsoir le fil, le forum

ma proposition:

VB:
Sub Calculs2()

    With Sheets("Travail")
   
        'Insérer les formules dans les cellules
       
        .Range("D11").FormulaR1C1 = "=DATEDIF(R11C2,R11C3,""Y"")"
        .Range("E11").FormulaR1C1 = "=DATEDIF(R11C2,R11C3,""ym"")"
        .Range("F11").FormulaR1C1 = "=DATEDIF(R11C2,R11C3,""md"")"
        .Range("G11").FormulaR1C1 = "=MOD(R11C3-R11C2,1)"
       
        'Remplacer les formules par leur valeur calculée
       
        With Range("D11", "G11")
            .Value = .Value
        End With
       
    End With
   
End Sub
 
Bonsoir,

un bout de code à peaufiner pour les experts.

Code:
Sub Tempsrestant()
Dim DateDebut As Date
Dim DateFin   As Date

    DateDebut = Range("B3").Value
    DateFin = Range("C3").Value
    ans = Int((DateFin - DateDebut) / 365.2425)
    mois = Int((((DateFin - DateDebut) / 365.2425) - ans) * 12)
    jours = Int(CByte(Day(DateSerial(Year(DateFin), Month(DateFin) + 1, 0))) * (((((DateFin - DateDebut) / 365.2425) - ans) * 12) - mois))
    hms = (DateFin - DateDebut) - Int(DateFin - DateDebut)
    reste = "il reste " & ans & " an(s) " & mois & " mois " & jours & " jours " & " et " & Format(hms, "h\hmm ss")
    Range("B13").Value = reste

End Sub

@+
 
Bonsoir,

un bout de code à peaufiner pour les experts.

VB:
Sub Tempsrestant()
Dim DateDebut As Date
Dim DateFin   As Date

    DateDebut = Range("B3").Value
    DateFin = Range("C3").Value
    ans = Int((DateFin - DateDebut) / 365.2425)
    mois = Int((((DateFin - DateDebut) / 365.2425) - ans) * 12)
    jours = Int(CByte(Day(DateSerial(Year(DateFin), Month(DateFin) + 1, 0))) * (((((DateFin - DateDebut) / 365.2425) - ans) * 12) - mois))
    hms = (DateFin - DateDebut) - Int(DateFin - DateDebut)
    reste = "il reste " & ans & " an(s) " & mois & " mois " & jours & " jours " & " et " & Format(hms, "h\hmm ss")
    Range("B13").Value = reste

End Sub
[/QUOTE]

@+
 
- 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
Retour