Retranscription d'un inputbox

Bonjour,

Au départ je cherchais à calculer la différence entre deux dates. Je me suis confronté à un soucis dès que les dates de départ étaient antérieures à 1900.

J'ai trouvé une macro avec inputbox qui me permet de trouver le résultat, mais comment faire pour intégrer le même résultat sans passer par inputbox.

Je souhaite arriver à jumeler les deux macro suivantes.

J'ai une première macro de mise en forme à laquelle j'ajoute en fin, un calcul en C1. En A:A les dates début, en B:B les dates fin. Là j'ai un problème avec les dates en 1800.

La seconde macro me donne un résultat escompté en utilisant inputbox mais pour une seule date de début et de fin saisies.

Comment intégrer la seconde macro sans passer par inputbox, dans la première avant mon calcul en C1, afin de solutionner mon souci de date en 1800 ?

Et puis dans la première macro, je n'arrive pas à stopper ma formule qui s'applique sur toute la colonne en C1.

Merci de votre aide.

SUB ...()

ActiveCell.FormulaR1C1 = _

"=INT(RC[-2]/365) & "" an(s) "" & INT(MOD(RC[-2],365)/30) & "" mois "" & MOD(RC[-2],365)-(INT(MOD(RC[-2],365)/30)*30) & "" jour(s)"""

Range("C1").Select

Application.CutCopyMode = False

Selection.AutoFill Destination:=Range("C1:C" & Range("C1").End(xlDown).Row), Type:=xlFillDefault

End Sub

Sub ENTRER_DATE_1800_1900()

Dim Debut$, Fin$

Debut = InputBox("Date de début (jj/mm/aaaa)")

Range("A1") = Debut

Fin = InputBox("Date de fin (jj/mm/aaaa)")

Range("A2") = Fin

DateDeb = CDbl(DateSerial(Year(Debut), Month(Debut), Day(Debut)))

DateFin = CDbl(DateSerial(Year(Fin), Month(Fin), Day(Fin)))

Range("A4") = DateFin - DateDeb & "j"

MsgBox "il y a " & DateFin - DateDeb & " jours entre " & Debut & " et " & Fin

END SUB

Bonjour,

Merci de fournir un fichier qui illustre la structure des données à votre disposition. L'utilisation d'une macro est-elle obligatoire ?

Je ne peux pas poster mon fichier perso, car il y a plein de données que je ne souhaite pas communiquer.

Je pense que je me suis mal expliqué.

Actuellement, si je veux connaître l'écart entre deux dates, je suis obligé de passer par l'inputbox (la seconde macro) et de saisir chaque date. Le résultat affiche un nombre de jour total (XXXXX j)

Ensuite, je retire le "J" et j'applique la formule pour convertir le nombre sous forme d'années, mois et jours entre les deux dates.

Mon but et d'arriver à tout faire d'un seul coup.

Si par exemple j'ai cette liste de date, respectivement en A:A et B:B, comment obtenir en C:C l'écart entre les deux dates, sous forme d'années, mois et jours.

20/05/1884 14/02/1925

16/01/1896 18/06/1954

24/04/1874 08/05/1944

30/07/1821 03/06/1914

16/09/1899 21/07/1974

25/10/1837 12/05/1911

01/12/1865 16/09/1937

31/01/1832 02/01/1900

23/02/1859 25/03/1904

07/06/1866 23/12/1939

J'espère que c'est un peu plus clair.

Je ne peux pas poster mon fichier perso, car il y a plein de données que je ne souhaite pas communiquer.

Je ne demande pas l'original, mais plutôt que de faire moi même un fichier à partir des dates que vous mettez ici, je pense que ce serait pas trop vous demander de le faire vous-même...

La difficulté, c'est que ça ne permet pas par exemple de vérifier que les dates sont valides et bien reconnues par Excel.

Un essai, sans VBA mais avec une formule un peu costaud... Le principe est d'ajouter x siècles aux 2 dates, pour pouvoir utiliser des dates valides (>1900) sur lesquels on peut réaliser un calcul de différence.

=SI(MIN(DROITE(TEXTE(A2;"JJ/MM/AAAA");4)*1;DROITE(TEXTE(B2;"JJ/MM/AAAA");4)*1)<1900;DATE(DROITE(TEXTE(B2;"JJ/MM/AAAA");4)*1+ARRONDI.SUP((1900-MIN(DROITE(TEXTE(A2;"JJ/MM/AAAA");4)*1;DROITE(TEXTE(B2;"JJ/MM/AAAA");4)*1))/100;0)*100;STXT(TEXTE(B2;"JJ/MM/AAAA");4;2);GAUCHE(TEXTE(B2;"JJ/MM/AAAA");2))-DATE(DROITE(TEXTE(A2;"JJ/MM/AAAA");4)*1+ARRONDI.SUP((1900-MIN(DROITE(TEXTE(A2;"JJ/MM/AAAA");4)*1;DROITE(TEXTE(B2;"JJ/MM/AAAA");4)*1))/100;0)*100;STXT(TEXTE(A2;"JJ/MM/AAAA");4;2);GAUCHE(TEXTE(A2;"JJ/MM/AAAA");2));B2-A2)

Pour l'affichage en années, mois et jours :

=ENT(C2/365,25)&" an(s) "&ENT(MOD(C2;365,25)/30,4375)&" mois et "&ENT(MOD(C2;30,4375))&" jour(s)"

Tout ça est faisable sous VBA, par exemple pour créer une fonction personnalisée plus lisible...

Merci beaucoup pour cette démonstration, cela répond à mes attentes. Je vais pouvoir travailler sur la macro VBA.

Bonne continuation.

Shorgun

Merci beaucoup pour cette démonstration, cela répond à mes attentes. Je vais pouvoir travailler sur la macro VBA.

Bonne continuation.

Shorgun

PS : la partie "jours" est assez imprécise, mais selon l'objectif de ton travail, tu pourras probablement te passer d'indiquer les jours (mois et années devraient suffire ?)

Rechercher des sujets similaires à "retranscription inputbox"