Formule dans une cellule excel par VBA

J0hle -  
 j0hle -
Bonjour,

Je débute en excel et j'ai quelques problèmes pour écrire une formule dans une cellule via VBA. Pour les formules plutôt classiques pas de problème, cela fonctionne par contre pour les formules relatives aux dates j'ai des petits soucis:

1) je cherche à obtenir le n° de semaine à partir d'une date. En faisant ceci:
ActiveCell.Offset(0, 5).Value = Application.WorksheetFunction.WeekNum(CDate(ActiveCell.Offset(0, 3).Value)) avec ActiveCell.Offset(0, 3).Value= ma date
cela fonctionne très bien mais j'aimerai qu'on puisse lire la formule dans la cellule.

J'ai essayé ça :
ActiveCell.Offset(0, 5).Formula = "= weeknum(" & ActiveCell.Offset(0, 3).Value & ")"
mais cela ne fonctionne pas. La formule s'écrit mais je n'ai pas de résultats...
j'ai également essayé plein d'autres choses avec des Cdate mais rien de probant

2) dans le même esprit je cherche à faire une soustraction de dates pour m'afficher un retard en jours. J'ai essayé comme ci-dessus mais aussi en utilisant DATEDIF mais toujours sans succès.

Je pense que cela vient d'une mausvaise gestion des formats de date mais je ne trouve pas la solution.
Quelqu'un peut-il me donner un coup de main ?
Merci par avance

5 réponses

Info
 
Bonjour,

Essayer cette syntaxe :

Sub Test()

    Dim Formule As String

    Formule = "= WeekNum(" & ActiveCell.Offset(0, 3).Value & ")"

    ActiveCell.Offset(0, 5).Value = Formule

End Sub


Cdt

Info
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
Je suppose Excel 2007 ? (avec mon 2000 ça existe pas)
Pour mettre la formule en "DUR" il faut l'écrire avec la syntaxe de ton Excel.
    ActiveCell.FormulaLocal = "=No.SEMAINE(" & ActiveCell.Offset(, 3).Address & ";1)"

FormulaLocal -- pour être transposable sur des PC d'une autre langue
A+
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour tout le monde,

En précisant que No.SEMAINE() retourne le n° de semaine selon la norme américaine et donc des résultats incorrects pour la france (norme ISO)
Tu devrais rester en vba pour cette valeur et utiliser DatePart("ww", d, 2, 2), d étant la date.

DatePart est quand meme erroné pour quelque date :
29/12/1947
31/12/1951
30/12/1963
29/12/1975
31/12/1979
30/12/1991
29/12/2003
31/12/2007
30/12/2019
29/12/2031
31/12/2035
30/12/2047
29/12/2059

eric
0
J0hle
 
Merci pour vos réponses, je n'ai pas encore eu le temps d'essayer mais je vous ferai un retour dès que ce sera fait ..
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
j0hle
 
MERCI eriiic, cela fonctionne à merveille
0