VBA Syntaxe avec MOD (N° Semaine)

Bonjour à tous,

Je n'arrive pas à écrire l'équivalent de cette formule en VBA

=MOD(D7;52+5/28)

Faute de syntaxe ou de raisonnement ?

voir fichier détaillé

Amicalement

Claude.

Bonjour Claude

(Lien temporaire supprimé)

Cordialement

Bonjour Amadéus,

Il faut s'inscrire pour voir le fichier ! (je n'y tiens pas vraiment)

qu'elle en était la conclusion ?

Dois-je abandonner cette idée ? , on peut toujours faire autrement.

Amicalement

Claude

re, bonjour

Claude

Réponse

Dans VBA Mod est considéré comme un opérateur la syntaxe est donc celle ci:

Code:

i = i Mod (52 + 5 / 28)

Réponse 2

en compément

ent est une fonction VBA : Int

Code:

resultat = Int( Int((range("D5")-2)/7)+0,6 mod (52+(5/28)))+1

Cordialement

Re, bonjour

Claude , un autre moyen qui donne le résultat

Cordialement

re Amadéus,

merci pour ta réponse, mais si c'est la conclusion de "downloads"

ils ne sont pas + forts que nous,

Les résultats obtenus dans mon exemple ne donnent rien de bon,

çà donne Semaine 47 au lieu de 27

A moins que je n'ai pas bien pigé, retour à la case départ.

J'ai planché la dessus toute la journée d'hier !

Qu'en pensent nos Vébéistes ?

Claude

Bonjour

Claude, tu n'as pas regardé ma seconde réponse, avec le fichier!

Amicalement

Bonjour à tous,

En fait, l'opérateur Mod en vba et la fonction Excel MOD ne sont pas équivalents.

En vba, si les arguments de Mod sont des nombres à virgules, ils sont arrondis à l'entier le plus proche (selon l'aide excel).

Ex :

i = 5766.6 Mod (52 + 5/28)

=> i = 5767 Mod 52

=> 5767/52 = 110.9038...

=> ent(110.9038...) = 110

=> 110*52=5720

=> 5767 - 5720 = 47

Conclusion : i = 5766.6 Mod (52 + 5/28) = 5766.6 Mod 52.1785... = 5767 Mod 52 = 47

Avec la fonction MOD d'excel :

MOD(5766.6;52+5/28)

=> 5766.6 / (52 + 5/28) = 110.5166...

=> ent(110.5166...)=110

=>110 * (52+5/28) = 5739.6428...

=> 5766.6 - 5739.6428... = 26.95714...

Conclusion : MOD(5766.6;52+5/28) = 26.95714...

re,

J'avais pas vu passer ton dernier message,

effectivement là tu mets la formule en dur, mais ce n'est pas encore ce que je cherche,

en fait, dans mon projet futur j'ai besoin de mettre la date en variable, du genre:

Dim x%
x = 2
    Range("i7") = Int((Range("d" & x) - 2) / 7) + 0.6

de manière à boucler sur plusieurs mois.

------ La solution de dépannage serait de planquer la formule d'origine et

de changer la date en D2 dans la boucle.

çà je sais faire, mais j'essayais quelque chose de + élégant.

Je laisse le poste ouvert encore un peu au cas ou !

merci de tes efforts

Amicalement

Claude

édit: Salut vba-new,

alors ! la conclusion de tes conclusions ?

On sait coder cette ligne ou pas ?

en tout cas merci

Claude

C'était juste pour montrer que les 2 fonctions n'étaient pas équivalentes

Sinon, en utilisant le code d'amadéus, tu peux faire comme ceci :

Dim x%
x = 2
    Range("i9") = Application.Evaluate("Int(MOD(Int((D" & x & "-2)/7)+0.6,52+5/28))+1")

re,

Bon sang, mais c'est bien sûr !

C'est la solution, on peut même mettre çà en variable

Dim x%, y%
x = 2
y = Application.Evaluate("Int(MOD(Int((D" & x & "-2)/7)+0.6,52+5/28))+1")

avec çà, je vais pouvoir avancer,

Encore merci à vous deux

bravo le forum

Amicalement

Claude

Rechercher des sujets similaires à "vba syntaxe mod semaine"