OVH Cloud OVH Cloud

Fonction non calculée (formule présente)

4 réponses
Avatar
Eric RENAUD
Bonjour,
Pour des raisons diverses, j'ouvre un fichier Excel depuis un exécutable
avec en gros le code qui suit.
Dim ExcelApp As New Excel.Application
ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.Open "c:\excel\Suivi.xls"
ExcelApp.DisplayAlerts = True
ExcelApp.Quit

Cela fonctionne parfaitement sauf que ...
Dans une colonne j'ai la fonction NO.SEMAINE et quand j'ouvre le fichier XL
après traitement, dans cette colonne j'ai #NOM? bien que la formule
=NO.SEMAINE(G2;2) soit présente. Il suffit que je fasse F2 et Entrée pour
chacune des cellules de cette colonne et j'ai le numéro de semaine qui
s'affiche.

Si je lance le programme Excel "Suivi.xls" directement, les formules cette
fois sont calculées.

Alors trouver l'erreur ?

4 réponses

Avatar
michdenis
Bonjour Éric,


Sous xp, lorsque je crée une seconde instance, si je regarde dans la fenêtre affichant la liste des fonctions, celles
émanant de l'utilitaire d'analyse (macro complémentaire) ne sont pas listés. Il est donc "normal" que les cellules
affichant une de ces fonctions affiche "#NOM?" . Si le raisonnement est bon, cela suppose que le fichier DLL ou Xll
contenant ces fonctions, et desservant excel, ne peut être sollicité par deux applications différentes en même temps.


Salutations!



"Eric RENAUD" a écrit dans le message de news:
Bonjour,
Pour des raisons diverses, j'ouvre un fichier Excel depuis un exécutable
avec en gros le code qui suit.
Dim ExcelApp As New Excel.Application
ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.Open "c:excelSuivi.xls"
ExcelApp.DisplayAlerts = True
ExcelApp.Quit

Cela fonctionne parfaitement sauf que ...
Dans une colonne j'ai la fonction NO.SEMAINE et quand j'ouvre le fichier XL
après traitement, dans cette colonne j'ai #NOM? bien que la formule
=NO.SEMAINE(G2;2) soit présente. Il suffit que je fasse F2 et Entrée pour
chacune des cellules de cette colonne et j'ai le numéro de semaine qui
s'affiche.

Si je lance le programme Excel "Suivi.xls" directement, les formules cette
fois sont calculées.

Alors trouver l'erreur ?
Avatar
Frédéric Sigonneau
Bonsoir,

Lorsqu'on ouvre une instance d'Excel en utilisant l'automation, cette instance
présente quelques particularités qui peuvent poser problème :
- elle est vide (pas de classeur vierge ouvert par défaut)
- elle est invisible
- elle ne lance aucune macro complémentaire
- non plus que le perso.xls

Exécute ce bout de code dans un module standard :

Sub test()
Dim xlapp
Set xlapp = CreateObject("Excel.Application")
xlapp.Workbooks.Add
xlapp.Visible = True
End Sub

puis, dans cette nouvelle instance (le classeur s'appelle sans doute classeur2),
va dans l'éditeur VBE : à part le projet du classeur2, la fenêtre des propriétés
est totalement vide...
Conclusion : il faut tout faire à la main -> ajouter un classeur, rendre (ou
non) Excel visible, installer les macros complémentaires dont tu as besoin. Par
exemple, pour utiliser l'utilitaire d'analyse :

Sub test2()
Dim xlapp

Set xlapp = CreateObject("Excel.Application")
xlapp.Workbooks.Add
xlapp.Visible = True
'installe l'utilitaire d'analyse
'(il faut absolument s'assurer avant qu'il n'est pas déjà installé
'*et* le désinstaller s'il l'est)
On Error Resume Next
xlapp.AddIns("Utilitaire d'analyse").Installed = False
xlapp.AddIns("Utilitaire d'analyse - VBA").Installed = False
On Error GoTo 0
xlapp.AddIns("Utilitaire d'analyse").Installed = True
xlapp.AddIns("Utilitaire d'analyse - VBA").Installed = True
'l'utilise dans une cellule
xlapp.ActiveWorkbook.ActiveSheet.Range("A1").FormulaLocal = _
"=no.semaine(aujourdhui();2)"

End Sub 'fs

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,
Pour des raisons diverses, j'ouvre un fichier Excel depuis un exécutable
avec en gros le code qui suit.
Dim ExcelApp As New Excel.Application
ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.Open "c:excelSuivi.xls"
ExcelApp.DisplayAlerts = True
ExcelApp.Quit

Cela fonctionne parfaitement sauf que ...
Dans une colonne j'ai la fonction NO.SEMAINE et quand j'ouvre le fichier XL
après traitement, dans cette colonne j'ai #NOM? bien que la formule
=NO.SEMAINE(G2;2) soit présente. Il suffit que je fasse F2 et Entrée pour
chacune des cellules de cette colonne et j'ai le numéro de semaine qui
s'affiche.

Si je lance le programme Excel "Suivi.xls" directement, les formules cette
fois sont calculées.

Alors trouver l'erreur ?


Avatar
michdenis
Bonsoir Frédéric,


Merci d'avoir poussé un peu plus loin l'analyse ....mais j'avoue avoir des difficultés à saisir pourquoi dans la seconde
instance créée, les macro d'analyses bien que cochées sont absentes de la fenêtre "les fonctions" de la feuille et qu'il
faille "décharger" ces macros complémentaires d'apparence déjà présentes pour les reconduire immédiatement .


Salutations!



"Frédéric Sigonneau" a écrit dans le message de news:
Bonsoir,

Lorsqu'on ouvre une instance d'Excel en utilisant l'automation, cette instance
présente quelques particularités qui peuvent poser problème :
- elle est vide (pas de classeur vierge ouvert par défaut)
- elle est invisible
- elle ne lance aucune macro complémentaire
- non plus que le perso.xls

Exécute ce bout de code dans un module standard :

Sub test()
Dim xlapp
Set xlapp = CreateObject("Excel.Application")
xlapp.Workbooks.Add
xlapp.Visible = True
End Sub

puis, dans cette nouvelle instance (le classeur s'appelle sans doute classeur2),
va dans l'éditeur VBE : à part le projet du classeur2, la fenêtre des propriétés
est totalement vide...
Conclusion : il faut tout faire à la main -> ajouter un classeur, rendre (ou
non) Excel visible, installer les macros complémentaires dont tu as besoin. Par
exemple, pour utiliser l'utilitaire d'analyse :

Sub test2()
Dim xlapp

Set xlapp = CreateObject("Excel.Application")
xlapp.Workbooks.Add
xlapp.Visible = True
'installe l'utilitaire d'analyse
'(il faut absolument s'assurer avant qu'il n'est pas déjà installé
'*et* le désinstaller s'il l'est)
On Error Resume Next
xlapp.AddIns("Utilitaire d'analyse").Installed = False
xlapp.AddIns("Utilitaire d'analyse - VBA").Installed = False
On Error GoTo 0
xlapp.AddIns("Utilitaire d'analyse").Installed = True
xlapp.AddIns("Utilitaire d'analyse - VBA").Installed = True
'l'utilise dans une cellule
xlapp.ActiveWorkbook.ActiveSheet.Range("A1").FormulaLocal = _
"=no.semaine(aujourdhui();2)"

End Sub 'fs

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,
Pour des raisons diverses, j'ouvre un fichier Excel depuis un exécutable
avec en gros le code qui suit.
Dim ExcelApp As New Excel.Application
ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.Open "c:excelSuivi.xls"
ExcelApp.DisplayAlerts = True
ExcelApp.Quit

Cela fonctionne parfaitement sauf que ...
Dans une colonne j'ai la fonction NO.SEMAINE et quand j'ouvre le fichier XL
après traitement, dans cette colonne j'ai #NOM? bien que la formule
=NO.SEMAINE(G2;2) soit présente. Il suffit que je fasse F2 et Entrée pour
chacune des cellules de cette colonne et j'ai le numéro de semaine qui
s'affiche.

Si je lance le programme Excel "Suivi.xls" directement, les formules cette
fois sont calculées.

Alors trouver l'erreur ?


Avatar
Frédéric Sigonneau
Bonsoir Denis,

J'avoue humblement que je n'en sais pas plus que toi sur le pourquoi du comment.
Je constate simplement que si l'on ne procède pas de cette manière, les
fonctions de la macro complémentaire ne sont pas reconnues dans la feuille de
calcul.
Je ne trouve pas non plus très logique, concernant cet utilitaire d'analyse, de
devoir charger son lanceur VBA en plus de la macro elle-même pour utiliser une
fonction dans une cellule d'une feuille de calcul alors que le code VBA se
contente d'écrire cette fonction dans une cellule sous forme d'une chaîne de
caractères.
J'ai déjà lu ici sous la plume de LL que cet utilitaire d'analyse n'était pas un
modèle de bonne programmation. Peut-être n'est-ce là que l'une de ses
imperfections :-)

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Frédéric,

Merci d'avoir poussé un peu plus loin l'analyse ....mais j'avoue avoir des difficultés à saisir pourquoi dans la seconde
instance créée, les macro d'analyses bien que cochées sont absentes de la fenêtre "les fonctions" de la feuille et qu'il
faille "décharger" ces macros complémentaires d'apparence déjà présentes pour les reconduire immédiatement .

Salutations!

"Frédéric Sigonneau" a écrit dans le message de news:
Bonsoir,

Lorsqu'on ouvre une instance d'Excel en utilisant l'automation, cette instance
présente quelques particularités qui peuvent poser problème :
- elle est vide (pas de classeur vierge ouvert par défaut)
- elle est invisible
- elle ne lance aucune macro complémentaire
- non plus que le perso.xls

Exécute ce bout de code dans un module standard :

Sub test()
Dim xlapp
Set xlapp = CreateObject("Excel.Application")
xlapp.Workbooks.Add
xlapp.Visible = True
End Sub

puis, dans cette nouvelle instance (le classeur s'appelle sans doute classeur2),
va dans l'éditeur VBE : à part le projet du classeur2, la fenêtre des propriétés
est totalement vide...
Conclusion : il faut tout faire à la main -> ajouter un classeur, rendre (ou
non) Excel visible, installer les macros complémentaires dont tu as besoin. Par
exemple, pour utiliser l'utilitaire d'analyse :

Sub test2()
Dim xlapp

Set xlapp = CreateObject("Excel.Application")
xlapp.Workbooks.Add
xlapp.Visible = True
'installe l'utilitaire d'analyse
'(il faut absolument s'assurer avant qu'il n'est pas déjà installé
'*et* le désinstaller s'il l'est)
On Error Resume Next
xlapp.AddIns("Utilitaire d'analyse").Installed = False
xlapp.AddIns("Utilitaire d'analyse - VBA").Installed = False
On Error GoTo 0
xlapp.AddIns("Utilitaire d'analyse").Installed = True
xlapp.AddIns("Utilitaire d'analyse - VBA").Installed = True
'l'utilise dans une cellule
xlapp.ActiveWorkbook.ActiveSheet.Range("A1").FormulaLocal = _
"=no.semaine(aujourdhui();2)"

End Sub 'fs

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,
Pour des raisons diverses, j'ouvre un fichier Excel depuis un exécutable
avec en gros le code qui suit.
Dim ExcelApp As New Excel.Application
ExcelApp.Visible = True
ExcelApp.DisplayAlerts = False
ExcelApp.Workbooks.Open "c:excelSuivi.xls"
ExcelApp.DisplayAlerts = True
ExcelApp.Quit

Cela fonctionne parfaitement sauf que ...
Dans une colonne j'ai la fonction NO.SEMAINE et quand j'ouvre le fichier XL
après traitement, dans cette colonne j'ai #NOM? bien que la formule
=NO.SEMAINE(G2;2) soit présente. Il suffit que je fasse F2 et Entrée pour
chacune des cellules de cette colonne et j'ai le numéro de semaine qui
s'affiche.

Si je lance le programme Excel "Suivi.xls" directement, les formules cette
fois sont calculées.

Alors trouver l'erreur ?