Bonjour,
Je souhaiterais convertir une formule en VBA... voici ci-dessous la macro ; Nombre de mois entre deux date
zv_Debut = CDate(TextDepart.Value) ' Date de naissance
zv_Fin = CDate(TextDateDuJour.Value) ' Date Aujourdhui
If zv_Fin <= zv_Debut Then
zv_Msg = MsgBox("La date de fin ne peut pas être antérieure à la date de début ...", 48, "Erreur")
Exit Sub
End If
nbre_mois = DATEDIF(zv_Debut;zv_Fin;"m")+(DATEDIF(zv_Debut;zv_Fin;"md")/JOUR(FIN.MOIS(zv_Fin;0)))
Txt_NbMois = FormatNumber(nbre_mois, 2) ' Deux chiffres après la virgule
Pourriez-vous SVP me corriger
Merci
Bonjour daniel,
Merci pour ta réponse rapide.
Cela fonctionne: mais (exemple: zv_debut = 16/04/2019 me donne en nbre_mois 18,129 - formule Excel) et en VBA me donne(ta formule) 18
les deux chiffres après la virgule est important
Amicalement
Bonjour
Pour aider quelqu'un ici j'avais développé une appli, il y avait un combo > date de naissance puis dans sa liste excel >on retrouvait l'Age au jour de l'ouverture du fichier (via workbook open)
J'avais donc ecrit cette fonction que je te joins à adapter dans ton cas
Comme en réserve dans mon grenier , je laisse si cela peut aider
Tu entres en A > resultat en B
Après tu pourras transformer la fonction pour mettre en mois ou autre à ta mode
Comme c'est une fonction , tu pourras l'appeler aussi ( hors vba) en temps que formule dans une cellule
Bonjour daniel,
Merci pour ta réponse rapide.
Cela fonctionne: mais (exemple: zv_debut = 16/04/2019 me donne en nbre_mois 18,129 - formule Excel) et en VBA me donne(ta formule) 18
les deux chiffres après la virgule est important
Amicalement
Comment as-tu défini nbre_mois ? nbre_mois ne doit pas être défini comme integer ou long mas comme single ou double. Et quelle est la valeur de zv_fin ?
Daniel
Bonjour Hervé et merci
Le seul problème est que au restos du coeur un enfant de 0 à 6 mois et 1 jour ou de 6 à 12 mois et 1 jour ou de 12 à 18 mois et 1 jour recois un repas enfant au 2 éme jour ne recois rien.
Ta formale est génial et rapide mail il manque les jous !
Merci encore hervé et si tu as une réponse je prends.
@danielco
Ce que je fais est l'affinage au mois près avec mise en forme : impossible en formule @PORCHER : tu es au jour près ?? avec mon fichier , il faut donc l'ouvrir tous les jours !! là pas évident au jour le jour ......mais possible , je regarde mon calcul , seul hic jongler avec les 30 et 31
@danielco
Ce que je fais est l'affinage au mois près avec mise en forme : impossible en formule @PORCHER : tu es au jour près ?? avec mon fichier , il faut donc l'ouvrir tous les jours !! là pas évident au jour le jour ......mais possible , je regarde mon calcul , seul hic jongler avec les 30 et 31
Bonjour tout le monde,
Sinon par macro avec FormulaR1C1, bestial mais simple :
VB:
Sub CalcNbMois() ' Macro
[C3].FormulaR1C1 = "= DATEDIF(zv_Debut,zv_Fin,""m"")+(DATEDIF(zv_Debut,zv_Fin,""md"")/DAY(EOMONTH(zv_Fin,0)))"
[C3] = [C3].Value
End Sub