Retranscription d'un inputbox Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
s
shorgun
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 11 février 2020
Version d'Excel : 2010

Message par shorgun » 11 février 2020, 09:12

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
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'934
Appréciations reçues : 401
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 11 février 2020, 09:55

Bonjour,

Merci de fournir un fichier qui illustre la structure des données à votre disposition. L'utilisation d'une macro est-elle obligatoire ?
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
s
shorgun
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 11 février 2020
Version d'Excel : 2010

Message par shorgun » 11 février 2020, 10:40

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.
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'934
Appréciations reçues : 401
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 11 février 2020, 11:07

shorgun a écrit :
11 février 2020, 10:40
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.
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'934
Appréciations reçues : 401
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 11 février 2020, 11:50

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...
Test_shorgun.xlsx
(9.54 Kio) Téléchargé 1 fois
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
s
shorgun
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 11 février 2020
Version d'Excel : 2010

Message par shorgun » 11 février 2020, 13:22

Merci beaucoup pour cette démonstration, cela répond à mes attentes. Je vais pouvoir travailler sur la macro VBA.
Bonne continuation.
Shorgun
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'934
Appréciations reçues : 401
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 11 février 2020, 13:46

shorgun a écrit :
11 février 2020, 13:22
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 ?)
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message