Calendrier automatique

Roland_M

XLDnaute Barbatruc
Re : Calendrier automatique

alors il faut que tu fasses des essais mais avec xlsm sous 2010
il serait bon de savoir d'où cela vient !?
 

Roland_M

XLDnaute Barbatruc
Re : Calendrier automatique

voir ...

toujours dans cette routine

ici > Dim v(), V0$, V1$, V2$, V3$, V4$, V5$

essai> Dim v() As Variant, V0$, V1$, V2$, V3$, V4$, V5$

c'est incompréhensible car c'est identique dans les autres macros !?
ça ne peut être qu' Excel 2010 qui pose problème !?


EDIT:
problème apparemment résolu !?
mais j'ai remis le classeur car j'avais oublié une formule à ROGER2327 ! mille excuses !
 

Fichiers joints

Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Calendrier automatique

Re Roland,


je ne sais pas si le problème viens de l'extention xlsm. Et en mettant les cellules en relatives, il n'y a plus d'erreurs.



A+ :cool:
 

Lone-wolf

XLDnaute Barbatruc
Re : Calendrier automatique

Salut Hasco, Roland

je viens de refaire un test en réactualisant les formules matricielles et ça s'affiche correctement. A quoi c'est dû ce problème?



A+ :cool:
 
G

Guest

Guest
Re : Calendrier automatique

Re,

Peut-être que la première fois les formules n'avaient pas été valider par CTRL+MAJ+ENTER. Ce serait alors chose normale.

A+
 

ROGER2327

XLDnaute Barbatruc
Re : Calendrier automatique

Bonjour à tous.


ok, c'est bien ainsi et encore merci à vous !

au plaisir !


EDIT:

j'ai remis le classeur car j'avais oublié une formule à ROGER2327 ! mille excuses !
Merci pour la synthèse.
Mais je vais refroidir votre enthousiasme : en approfondissant, il s'avère que toutes mes propositions sont défectueuses. Voyez le classeur joint...

De plus, mon code VBA est trop lent et les formules "matricielles" des colonnes P et R sont très gourmandes en ressources. (La formule en colonne R simule une structure VBA du type Do... ...Loop qui figure dans mon code.)
Il faut que je réécrive cela, quitte à avoir une formule plus longue...

Bref, je reviens dès que j'aurai trouvé quelque chose de plus propre.

Que Roland_M à qui j'ai fait perdre du temps pour faire la synthèse de formules foireuses veuille bien accepter mes excuses particulières !​


ℝOGER2327
#7134


Jeudi 5 Gueules 141 (Sainte Gale, abbesSainte - fête Suprême Quarte)
11 Pluviôse An CCXXII, 1,2719h - éllébore
2014-W05-4T03:03:09Z


Bonne journée.
 

Fichiers joints

Roland_M

XLDnaute Barbatruc
Re : Calendrier automatique

bien le bonjour à tous

ROGER je pense que le plus simple serais de garder ma macro VBA, si toutefois elle convient !?
et que vous vous fassiez une formule sur excel car ça j'en suis incapable !
on aurait ainsi le choix ce serait plus simple et super !
 

ROGER2327

XLDnaute Barbatruc
Re : Calendrier automatique

Re...


bien le bonjour à tous

ROGER je pense que le plus simple serais de garder ma macro VBA, si toutefois elle convient !?
et que vous vous fassiez une formule sur excel car ça j'en suis incapable !
on aurait ainsi le choix ce serait plus simple et super !
Oui... ...mais non !
On a trop bossé sur ce problème inutile pour ne pas aller au bout. Je crois avoir réglé mon problème d'arrondi et j'ai quelques bricolages à tester encore, mais je reviendrai (dans la journée, j'espère...) avec de nouvelles propositions.​


À bientôt.


ℝOGER2327
#7135


Vendredi 6 Gueules 141 (Sainte Touche, postulante - fête Suprême Quarte)
12 Pluviôse An CCXXII, 1,3384h - brocoli
2014-W05-5T03:12:44Z
 

Roland_M

XLDnaute Barbatruc
Re : Calendrier automatique

bonjour,

je vous reconnais bien là, persévérant !
mais c'est tout à votre honneur.

alors à plus !
 

ROGER2327

XLDnaute Barbatruc
Re : Calendrier automatique

Bonjour à tous. Suite...


J'ai repris le problème en commençant par établir un code similaire à celui de Roland_M (ma référence), c'est-à-dire un code ne tenant pas compte d'un éventuel excès d'heures. J'obtiens ceci :​
VB:
Function DDate1(ByVal D As Date, ByVal F As Date) 
'Version sans les heures, minutes, secondes (similaire à EcartDate de Roland_M)
Dim t&, Jo%
  F = Int(F) - (Round(F - Int(F) - D + Int(D), 6) >= 0)
  t = 12 * (Year(F) - Year(D)) + Month(F) - Month(D)
  t = t + (DecMois(D, t) >= F)
  Jo = F - DecMois(D, t) - 1
  DDate1 = Array(t \ 12, t Mod 12, Jo) 'Renvoie un vecteur-ligne à trois composantes.
End Function

Function DecMois(D As Date, dec&) As Long
Dim x&, y&
  x = DateSerial(Year(D), Month(D) + dec, 1)
  y = Day(DateSerial(Year(x), Month(x) + 1, 0))
  If y < Day(D) Then DecMois = x + y - 1 Else DecMois = x + Day(D) - 1
End Function
On peut se passer de la fonction DecMois en utilisant la fonction native WorksheetFunction.EDate(), ce qui donne quelque chose de plus court :​
VB:
Function DDate11(D As Date, F As Date)
'Version sans les heures, minutes, secondes (similaire à EcartDate de Roland_M)
Dim t&, Jo%
  F = Int(F) - (Round(F - Int(F) - D + Int(D), 6) >= 0)
  t = 12 * (Year(F) - Year(D)) + Month(F) - Month(D)
  With Application.WorksheetFunction
    t = t + (.EDate(D, t) >= F)
    Jo = F - .EDate(D, t) - 1
  End With
  DDate11 = Array(t \ 12, t Mod 12, Jo) 'Renvoie un vecteur-ligne à trois composantes.
End Function
Mais c'est malheureusement beaucoup plus lent : voir l'onglet Tests pour des évaluations de durées.

Apparemment je trouve les mêmes résultats que Roland_M : voir une procédure de vérification de cohérence dans le même onglet Tests.

Sur ces bases, j'ai établi quelques autres procédures avec ou sans les heures, minutes et secondes.

Pour la formule Excel, je me suis débarrassé de la partie "matricielle" qui était très lourde. En contrepartie la nouvelle formule est nettement plus longue. Voir le classeur joint pour les détails.

"Je pense que je vais en rester là... ...sauf si une erreur grossière est détectée par un lecteur..." Bis repetita...


Bonne journée.


ℝOGER2327
#7136


Vendredi 6 Gueules 141 (Sainte Touche, postulante - fête Suprême Quarte)
12 Pluviôse An CCXXII, 4,3840h - brocoli
2014-W05-5T10:31:18Z
 

Fichiers joints

Dernière édition:

Discussions similaires


Haut Bas