Formule dans une cellule excel par VBA
J0hle
-
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
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
A voir également:
- Formule dans une cellule excel par VBA
- Formule si et excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Formule moyenne excel plusieurs colonnes - Guide
- Aller à la ligne dans une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
5 réponses
Bonjour,
Essayer cette syntaxe :
Cdt
Info
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
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.
FormulaLocal -- pour être transposable sur des PC d'une autre langue
A+
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+
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
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
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 ..
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question