Excel calcul sur date en VBA

Excel calcul sur date en VBA - VB/VBA/VBS - Programmation

Marsh Posté le 09-02-2010 à 22:55:20    

BonjourJ’ai 2 colonnes  Q etR avec des dates dont le format n’est pas au standard excelEx :04.02.2010  Je voudrais :-        En cellule  X1 ,ajouter un titre "temps" (facile…)-        en  cellule Xxect , ajouter le resultat des dates R-Q (en jours, donc) a la condition que lavaleur en « Cx » soit = "toto"
-        sans intervention manuelle
 
Aujourd'hui, je m'en sort avec les finctions-rechercher, remplacer-filtre automatique-recoppie de formules, manuellement
mais si je pouvais automatiser cela ce serait le top  ;)

Reply

Marsh Posté le 09-02-2010 à 22:55:20   

Reply

Marsh Posté le 11-02-2010 à 21:30:05    

Salut, sous forme de fonction personnalisée  
code à insérer dans un module standard
Puis sous Excel : Menu Insertion/Fonction/personnalisées etc


Option Explicit
 
Function NbJoursDates(a As Range, b As Range) As Long
Dim DateDeb As Date, DateFin As Date
    DateDeb = CDate(Left$(a, 2) & "/" & Mid$(a, 4, 2) & "/" & Right$(a, 4))
    DateFin = CDate(Left$(b, 2) & "/" & Mid$(b, 4, 2) & "/" & Right$(b, 4))
     
    NbJoursDates = DateDiff("d", DateDeb, DateFin, vbUseSystem, vbUseSystem)
End Function


Pour le reste à toi d'oeuvrer

Reply

Marsh Posté le 11-02-2010 à 23:07:00    

Merci
 
je ne connais pas le fonctionnemeent des fonctions mais en tout cas, les 3 lignes du milieu me suffiront amplement !

Reply

Marsh Posté le 12-02-2010 à 08:55:17    

Re, le principe est le même que pour les fonctions intégrées d'Excel ( somme,sommeprod etc )
simplement elle permettent à l'utilisateur de créer les siennes, dans certains cas Application.Volatile est à insérer mais attention au ralentissement créé.
 
En PJ des copies d'écran qui devraient te convaincre. Un point de détail mais le résultat est à +/- 1 ( par exmple pour 2010 364 jours ) à toi de voir si cela te convient
 
http://cjoint.com/?cmi1BTgjxf


Message édité par kiki29 le 12-02-2010 à 08:59:28
Reply

Marsh Posté le 12-02-2010 à 16:51:15    

Excellent !
tout est expliqué dans les moindre détail  :jap:  
 
je vais tester
Cela me donne des idée pour d'autres besoins ponctuels
 
 
 
Je pense quand même que je vais resoudre mon problème avec une macro qui calcule la durée avec les  3 lignes qui vont bien
DateDeb = CDate(Left$(a, 2) & "/" & Mid$(a, 4, 2) & "/" & Right$(a, 4))
DateFin = CDate(Left$(b, 2) & "/" & Mid$(b, 4, 2) & "/" & Right$(b, 4))
NbJoursDates = DateDiff("d", DateDeb, DateFin, vbUseSystem, vbUseSystem)
pour n'avoir que 1 chiffre dans la bonne colonne
 
 
 
en fait certain de mes fichiers peuvent être enormes  (65000ligne),
donc je prefère attendre la fin du traitement, et avoir des donnée brutes, plutôt que d'avoir 65000 formules
le fichier final sera moins lourd
 
Merci pour ces explications !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed