[VBA]Diviser un nombre de moi par deux
Résolu/Fermé
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
-
1 juil. 2010 à 19:27
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 - 2 juil. 2010 à 09:24
yacleouf Messages postés 438 Date d'inscription mercredi 11 mars 2009 Statut Membre Dernière intervention 8 juin 2015 - 2 juil. 2010 à 09:24
A voir également:
- [VBA]Diviser un nombre de moi par deux
- Diviser pdf - Guide
- Diviser photo instagram gratuit - Guide
- Deux ecran pc - Guide
- Deux whatsapp sur un téléphone - Guide
- Supprimer une conversation messenger pour les deux personnes ✓ - Forum Facebook
3 réponses
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
2 juil. 2010 à 01:13
2 juil. 2010 à 01:13
Une formule vaut mieux qu'un discours, ceci devrait convenir :
Patrice
Dim D1 As Date 'Date située à (partie entiere de N/2) mois après la date initiale Dim D2 As Date 'Si N est pair = D1 sinon exactement un mois après D1 Dim D3 As Date 'Résultat : date située au milieu entre D1 et D2 D1 = DateSerial(Year([E10]), Month([E10]) + Int([E12] / 2), Day([E10])) D2 = DateSerial(Year([E10]), Month([E10]) + Int(([E12] + 1) / 2), Day([E10])) D3 = D1 + (D2 - D1) / 2
Patrice
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
1 juil. 2010 à 21:28
1 juil. 2010 à 21:28
1) Num est une variable de type integer (en français : nombre entier), elle ne peut donc pas prendre la valeur 7,5. pour cela il faut un type Single, Double, Decimal, ...
2) la fonction mois ("m") correspond à des mois entier. En effet, il est difficile de déterminer la durée correspond à 0,5 mois (elle varie en fonction du mois : ½ mois de janvier ne correspond ni à ½ mois de février ni à ½ mois d'avril !)
3)VBA est puissant mais il n'est pas devin !
En d'autres termes, il ne peut pas préjuger du résultat que vous attendez : Est-ce que 6 mois ½ après le 1/7/10 est le 14, le 15 ou le 16/1/11 ?
Sachant que dans une année non bissextile, le 1er semestre comprend 3 jours de moins que le second on comprend rapidement qu'en terme de calendrier, la notion de ½ (mois ou année) est sujette à différentes interprétations !
Pour obtenir le dernier ½ mois, une solution acceptable consiste à calculer le nombre de jours exact entre le jour J du dernier mois entier et le même jour du mois suivant et à ajouter au jour J du dernier mois la moitié de cette différence.
Autre possibilité, si la précision du ½ mois n'est pas requise on peut aussi considérer que ½ mois = 15 jours !
Dans les deux cas il faut faire un calcul en nombre de jours.
Pour appréhender la complexité des calculs liés au calendrier je vous conseille l'excellentissime site de Claus Tondering (en anglais et en danois) :
https://www.tondering.dk/claus/cal/calendar29.html
Cordialement
Patrice
2) la fonction mois ("m") correspond à des mois entier. En effet, il est difficile de déterminer la durée correspond à 0,5 mois (elle varie en fonction du mois : ½ mois de janvier ne correspond ni à ½ mois de février ni à ½ mois d'avril !)
3)VBA est puissant mais il n'est pas devin !
En d'autres termes, il ne peut pas préjuger du résultat que vous attendez : Est-ce que 6 mois ½ après le 1/7/10 est le 14, le 15 ou le 16/1/11 ?
Sachant que dans une année non bissextile, le 1er semestre comprend 3 jours de moins que le second on comprend rapidement qu'en terme de calendrier, la notion de ½ (mois ou année) est sujette à différentes interprétations !
Pour obtenir le dernier ½ mois, une solution acceptable consiste à calculer le nombre de jours exact entre le jour J du dernier mois entier et le même jour du mois suivant et à ajouter au jour J du dernier mois la moitié de cette différence.
Autre possibilité, si la précision du ½ mois n'est pas requise on peut aussi considérer que ½ mois = 15 jours !
Dans les deux cas il faut faire un calcul en nombre de jours.
Pour appréhender la complexité des calculs liés au calendrier je vous conseille l'excellentissime site de Claus Tondering (en anglais et en danois) :
https://www.tondering.dk/claus/cal/calendar29.html
Cordialement
Patrice
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
Modifié par yacleouf le 1/07/2010 à 23:05
Modifié par yacleouf le 1/07/2010 à 23:05
Bonsoir, tout d'abord merci de votre réponse,
par contre j'ai du ma à suivre, j'ai compris que les mois était des entier et que pour VBA il était difficile de lui faire comprendre la notions de 5 mois ½, je suis en ce moment entrain d'essayer plusieurs choses, mais aucune ne marche car pour la solution des mois a 30 jours (comme pour les années comptable) cette solution ne me convient pas en effet j'ai vraiment besoin d'arriver au jour exact ;)
j'ai essayer ceci qui ne marche pas évidement ... mais est ce que je serait sur une piste?
merci encore
Google is your friend!
par contre j'ai du ma à suivre, j'ai compris que les mois était des entier et que pour VBA il était difficile de lui faire comprendre la notions de 5 mois ½, je suis en ce moment entrain d'essayer plusieurs choses, mais aucune ne marche car pour la solution des mois a 30 jours (comme pour les années comptable) cette solution ne me convient pas en effet j'ai vraiment besoin d'arriver au jour exact ;)
j'ai essayer ceci qui ne marche pas évidement ... mais est ce que je serait sur une piste?
DateSerial(year for ("E10") + month as E12 / 2,Day as E10)
merci encore
Google is your friend!
2 juil. 2010 à 01:28
2 juil. 2010 à 09:00
je vous fait un retour par la suite
2 juil. 2010 à 09:24
Je vous en remercie !