[R] Problème avec la fonction "_ExcelSheetActivate"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

[R] Problème avec la fonction "_ExcelSheetActivate"

#1

Message par Wink »

Bonjour à tous !

Je suis nouveau sur ce forum, et grâce à vous j'ai déjà appris beaucoup de choses sur la programmation avec autoIT ! D'ailleurs, je vous en remercie au passage ! :D

Seul bémol, et il fallait s'y attendre, je rencontre un problème avec la fonction :

_ExcelSheetActivate

Je m'explique :

Dans mon script, je souhaite faire ouvrir 1 fichier excel, qui pointerait sur une feuille en particulier, déjà créée bien entendu.

Voici mon code :
► Afficher le texte
Donc le fichier en question s'ouvre correctement, mais pointe sur un onglet qui ne correspond pas à ce que je souhaite : il va sur "JAN 2009" et je veux qu'il aille sur "JUIL 2009".
Le pire c'est que je ne comprends pas pourquoi JAN 2009.... car quand j'enregistre mon fichier excel, je suis sur l'onglet juin par exemple, donc quand je l'ouvre, je devrais donc atterrir sur juin ... mais non ! Il persiste à pointer sur JAN 2009 !

"JAN 2009" étant la première feuille du classeur.


Pourriez-vous m'aider svp !

D'avance je vous en remercie !

Cordialement,

Wink-
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#2

Message par jumby »

Je vois que dans ton code, tu n'as pas placé l'include excel, l'as-tu mise?
#include <Excel.au3>

Sinon :
La fonction _ExcelSheetActivate retourne les valeurs suivantes après son exécution :
Success: Returns 1
Failure: Returns 0 and sets @error on errors:
@error=1: Specified object does not exist
@error=2: Specified sheet number does not exist
@error=3: Specified sheet name does not exist

Essai de voir quel type d'erreur cette fonction te retourne pour en savoir plus.

► Afficher le texte
Tu peux essayer le number sheet si il ne veut pas du nom.
Si JUIL 2009 est l'onglet 3 ça te donne :
► Afficher le texte
Si @error = 1 essai de réduire impérativement le chemin pour accéder à ton fichier excel. Fait un essai en placant ton script dans le même répertoire et en indiquant le chemin suivant : @scriptdir & "\Préparation 2009.xlsm"
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#3

Message par Wink »

Merci de m'avoir répondu !

Donc suite à ton message, j'ai réalisé les changements que tu proposes.
Voici les résultats :
jumby a écrit :Je vois que dans ton code, tu n'as pas placé l'include excel, l'as-tu mise?
#include <Excel.au3>
Effectivement, je n'ai pas placé celui-ci, mais celui-la :
#include <ExcelCOM_UDF.au3>

Ou puis-je télécharger Excel.au3 stp, je ne le trouve pas ?

Tu peux essayer le number sheet si il ne veut pas du nom.
Ca ne marche pas non plus !

Sinon :
La fonction _ExcelSheetActivate retourne les valeurs suivantes après son exécution :
Success: Returns 1
Failure: Returns 0 and sets @error on errors:
@error=1: Specified object does not exist
@error=2: Specified sheet number does not exist
@error=3: Specified sheet name does not exist

Essai de voir quel type d'erreur cette fonction te retourne pour en savoir plus.

Si @error = 1 essai de réduire impérativement le chemin pour accéder à ton fichier excel. Fait un essai en placant ton script dans le même répertoire et en indiquant le chemin suivant : @scriptdir & "\Préparation 2009.xlsm"
Cela me retourne l'erreur : @error=1
J'ai donc placé mon script (.au3 et .exe) dans le même répertoire que mon fichier "Préparation 2009.xlsm"
Puis j'ai modifié pour obtenir : @scriptdir & "\Préparation 2009.xlsm" et ca ne marche toujours pas !

Voila le code :
► Afficher le texte

Je précise que j'ai effectué tous les tests que tu m'as suggéré sans "excel.au3" puisque je ne le trouve pas. Cependant j'avais cru comprendre que <ExcelCOM_UDF.au3> suffisait.

En tout cas merci de ton aide !

Cordialement,

Wink-
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#4

Message par jumby »

Je pense aussi que l'udf <ExcelCOM_UDF.au3> devrait suffir.
L'udf <Excel.au3> est compris dans autoIt.

Si la fonction _ExcelSheetActivate te donne un @error = 1 c'est qu'il n'arrive pas à trouver le fichier excel.
@error=1: Specified object does not exist
On peut donc imaginer que la fonction _ExcelBookOpen n'ouvre même pas le fichier excel.
Du moment ou la fonction _ExcelBookOpen retournera la valeur 0 (Failure: Returns 0 and sets @error on errors:) , il ne faut pas espérer que la suite fonctionne.

Focalise toi déjà sur cette fonction. Essai de renommer très simplement le nom de ton fichier excel(a.xlsm) et réutilise @scriptdir & "\a.xlsm" pour _ExcelBookOpen.

Ensuite tu test la valeur qu'elle retourne.

Code : Tout sélectionner

#Include <Excel.au3>

if _ExcelBookOpen(@scriptdir & "\a.xlsm") = 0 Then
msgbox(0, "Impossible d'accéder au fichier excel", "Impossible d'accéder au fichier excel")
else
msgbox(0, "Fichier excel accessible", "Fichier excel accessible")
Endif
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#5

Message par Wink »

Si la fonction _ExcelSheetActivate te donne un @error = 1 c'est qu'il n'arrive pas à trouver le fichier excel.
Si si il arrive à ouvrir le fichier Excel... C'est bien ca qui est louche.
Et comme je le disais dans mon premier message, il se positionne toujours sur le 1er onglet.

C'est aussi valable pour un 2e fichier Excel que je lui demande d'ouvrir (non inclus dans le code que j'ai cité) et de la même façon que pour le 1er fichier, il pointe aussi sur la 1ère feuille.

En gros je ne pense pas que ce soit la fonction _ExcelBookOpen qui ne marche pas puisque les ouvertures s'exécutent correctement.


Heu en revanche, Excel.au3 n'est pas inclus dans ma version d'AutoIT en tout cas !
J'ai vérifié dans le répertoire d'install, et effectivement il n'y est pas; de +, il me renvoie évidemment une erreur dans mon code :

C:\Users\vista\Desktop\STATISTIQUES\Stats Générales V2\PREPARATION\2009\Statistikorv1.au3 (3) : ==> Error opening the file.:
#include <Excel.au3>
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#6

Message par jumby »

Ci-joint l'include Excel.au3 à copier dans ton dossier d'installation autoIt3\Include
Fichiers joints
Excel.au3
#Include <Excel.au3>
(64.17 Kio) Téléchargé 80 fois
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#7

Message par Wink »

Merci pour le fichier, je l'ai installé.

J'ai donc testé en rajoutant Excel.au3, et apparemment il n'aime pas avoir les 2 en même temps :

#include <ExcelCOM_UDF.au3>
#include <Excel.au3>

► Afficher le texte
J'ai donc enlevé <ExcelCOM_UDF.au3> pour pouvoir tester avec <Excel.au3> que je n'avais pas et... même résultat : ca ne fonctionne pas !

Je ne sais plus quoi faire... je commence à désespérer !!!
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#8

Message par jumby »

Ok j'ai enfin compris d'où venait le problème.
Le code correct est le suivant :
► Afficher le texte
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#9

Message par Wink »

Ca ne marche pas non plus...
J'ai "re-testé" votre solution car dans un premier temps c'est de cette façon que j'avais construit le code.

Que faire..... :cry:
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#10

Message par jumby »

Edit :
Essayez de radapter ce code avec un chemin d'accès simple. Il n'y a pas de raison que cela ne fonctionne pas.

J'ai testé sur un autre pc ayant excel.
Il n'y a qu'avec le code que je viens d'envoyer que cela fonctionne.
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#11

Message par Wink »

Ça ne marche toujours pas chez moi...
Je commence à croire que cela vient de ma profonde incompétence !

Je vous joins mon fichier complet, car j'ai sûrement oublié quelque chose, et comme je suis plongé dedans depuis vraiment longtemps, peut être qu'un œil externe et plus exercé que le mien saura trouver l'erreur !

Le problème en question se situe aux lignes 29 à 31, ainsi que 319 à 320
Le code est un peu lourd... je suis sur qu'avec des boucles ça aurait pu être plus léger mais bon... je ne suis vraiment pas au top !

Merci encore de votre aide, j'apprécie sincèrement.
Fichiers joints
Statistikorv1.au3
Voici le script
(20.2 Kio) Téléchargé 66 fois
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#12

Message par jumby »

J'ai corrigé la syntaxe de la fonction _ExcelSheetActivate comme je l'indiquais précédemment(uniquement pour Juillet 2009).
Si cela ne marche toujours pas, c'est peut-être à cause de l'extension .xlsm
Personnelement, je n'ai que des fichiers calcul excel .xls.
Fichiers joints
Statistikorv1.au3
(20.2 Kio) Téléchargé 78 fois
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#13

Message par Wink »

HOURAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA !!!

Ça y est ça marche !!!!!!!!

Je sais pas comment vous remercier c'est trop cool je suis trop content !!!!!

Mais alors, d'où venait l'erreur ??
Qu'avez vous modifié ou qu'est ce que j'avais mal écrit / oublié ???


Merci encore !!!!!!!!! :D :D :D
Avatar du membre
jumby
Niveau 5
Niveau 5
Messages : 118
Enregistré le : jeu. 12 juin 2008 17:50
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#14

Message par jumby »

Et bien, dans votre script à la fonction _ExcelSheetActivate de Juillet, il y avait :

Code : Tout sélectionner

_ExcelBookOpen($prepa_gal_2009)
_ExcelSheetActivate($prepa_gal_2009, $sh_juillet2009)
 
Que j'ai remplacé par :

Code : Tout sélectionner

$excelopen _ExcelBookOpen($prepa_gal_2009)
_ExcelSheetActivate($excelopen, $sh_juillet2009)
 
Je vous laisse recorriger la syntaxe de cette fonction pour tout les autres mois^^.

Ravi d'avoir pu vous aider.
Wink
Niveau 3
Niveau 3
Messages : 33
Enregistré le : mar. 02 juin 2009 16:52
Status : Hors ligne

Re: Problème avec la fonction "_ExcelSheetActivate"

#15

Message par Wink »

Chapeau en tout cas!
Et surtout merci beaucoup d'avoir passé autant de temps pour m'aider...
Il en faut de la patience pour aider un noob comme moi :D

Encore merci ! :wink:
Répondre