|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Bonjour à tous et à toutes.
Donc je tente accèder aux données d'un fichier excel nommé "monClasseur.xls" qui sous Excel 2010 à un message demandant le mot de passe de ce fichier Excel. La même manipulation via la fonction ci -dessous établie sous excel 2003 ouvre le fichier sans demander le mot de passe. c'est donc une macro qui, normalement, ouvre le fichier "mpnClasseur.xls" et renseigne le mot de passe automatiquement(en parametre) par consequent cette macro bug sous Excel 2010. Que faudrait-il changer dans le code pour régler cela?? Merci à tous et à toutes Code :
|
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() ![]() |
Salut
As-tu essayé de bloquer les messages Code :
Autre piste, essai avec l'enregistreur de Macro, tu verras si la procédure diffère ++ Qwaz
__________________
MagicQwaz := Harry Potter la baguette en moins ![]() Le monde dans lequel on vit HammerFest Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer |
||
|
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Bonjour Qwazerty
Le Application.DisplayAlerts = False doit il etre placé avant le On error resume next ?Idem pour Application.DisplayAlerts = true,juste avant la ligne de code suivant Workbooks.Open Filename:=Chemin_serveur & Base_Hibiscus_reelle ? Code :
Quand tu me dit avec l'enregistreur de Macro ,je ne comprends pas très bien? lorsque je code dans un module,je suis déja dans l'enregistreur de macro . Merci par avance. ![]()
|
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Il faudrait déjà essayer de remettre l'affichage des alertes après l'ouverture du fichier. Sinon, autant ne pas le mettre.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#5 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Bonjour Zebre loup,
Comme ceci (code ci-dessous) ? Par ailleurs ,tu penses que le fait de mettre les alertes à vrai ,ca règle le problème ci dessous : je tente accèder aux données d'un fichier excel nommé "monClasseur.xls" qui sous Excel 2010 à un message demandant le mot de passe de ce fichier Excel. La même manipulation via la fonction ci -dessous établie sous excel 2003 ouvre le fichier sans demander le mot de passe. c'est donc une macro qui, normalement, ouvre le fichier Code :
"mpnClasseur.xls" et renseigne le mot de passe automatiquement(en parametre) Meme si il y a plus le message d'alerte ça conserverait le mot de passe Automatique? Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je n'avais pas lu en détail ce que tu essayais de faire.
Je suis assez étonné que ça ne marche pas, normalement Workbooks.Open est identique entre 2003 et 2010. Tu es sûr que le PWD est bien renseigné de la même façon dans tes 2 tests ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Bonjour Zebre Loup,
Oui le mot de passe est bien renseigné dans les deux tests ? Il n'y aurait pas peut etre un test à faire pour les versions d'excel utilisées? Je sèche complètement.. Si quelqu'un aurait une idée ,une piste ou une réponse j'achète Merci à tous et à toutes |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Je n'ai pas d'excel 2010 sous la main mais selon la syntaxe dans l'aide de Microsoft, ça devrait marcher. Le problème est peut-être ailleurs. Sensibilité à la casse ? Ou peut-être que quand tu fais le Activate au début, Excel 2010 essaie déjà de l'ouvrir (Je ne sais pas s'il y a des fonctionnalités intelligente du genre) ?
Enfin, je laisse répondre ceux qui ne sont pas restés à l'époque des dinosaures.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#9 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Re zebrer loup
Code :
Quand j'execute le code ci dessus, effectivement il rentre a vrai dans le deuxieme If et m'affiche Affiche = "il y a un probleme avec "&monClasseur Par contre lorsque j'execute le code sans la ligne Workbooks(monClasseur).Activate il n'affiche plus il y a un probleme ,cela signifie que ca fonctionne ...MAis je t'avouerai que je n'y comprends rien... Comment se fait-il qu'il n"y a plus l'erreur lorsque la ligne Workbooks(monClasseur).Activate est supprimée ![]() ![]() ![]() Merci à toi Zebre loup =) |
||
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Alors, déjà, tu as mis des on error resume next sans on error goto 0, ce qui peut générer pas mal de soucis difficiles à maitriser.
Sinon, je pense que l'on n'a rien résolu, c'est juste qu'il ne rentre pas du tout dans le traitement. Si tu veux tester si le classeur est déjà ouvert, plutôt que la gestion des erreurs, utilises plutôt une boucle sur les workbooks. Ensuite, on verra ce qui se passe.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#11 | ||||||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Re zebre loup
j'ai changé la première condition If Err.Number <> 0 Then par If Err.Number = 0 Then il rentre dans ce IF et affiche apres ces deux lignes Code :
Puis j'ai rajouté On Error Resume Next juste avant la 2 eme condition If Err.Number <> 0 Thenet il n'affiche plus le message d'erreur. Dans la premiere condition ,après le message le classeur est ouvert que j'ai ajouté volontairement ,j"'ai mis ces deux lignes Code :
Soit il y a une erreur de synthaxe et c"'est peut etre résolu ou mon bricolage ne sert à rien Help Code :
|
||||||
|
|
00
|
|
|
#12 | ||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Essaie plutôt de t'inspirer de ce code. Et il faut que tu revois la gestion des erreurs car j'ai l'impression que tu n'as pas encore tout compris de ce coté là
Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||
|
|
00
|
|
|
#13 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Re ,
donc je viens d'executer le code ci dessous en ajoutant cette ligne MsgBox "classeur ouvert ",apres celle ci Set wb = Workbooks.Open(Filename:=nomBaseComplete, Password:=PWD) Donc le classeur n'etait pas deja ouvert mais il entre quand meme dans le 2 eme If et affiche l'erreur ....! Comment cela se fait -il ?? Merci à toi Code :
|
||
|
|
00
|
|
|
#14 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Le MsgBox "Classeur Ouvert", il faudrait le mettre après le On Error Goto 0, une fois qu'on est sûr que tout s'est bien passé. D'ailleurs j'ai oublié, mais il faudrait mettre un Exit Sub après le message d'erreur.
Donc a priori, il y a bien un problème à l'ouverture. Que vaut le err.Description qui s'affiche dans la msgbox
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#15 | ||
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
Re,
Donc j'ajoute apres On Error GoTo 0 ,le message box suivant: MsgBox "classeur ouver Puis apres le message MsgBox "ATTENTION ...se situant dans la Deuxieme condition,je met le Exit Sub je recompile et visiblement,il affiche toujours le message d'erreur ... Code :
|
||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
C'est bien qu'il y a une erreur à l'ouverture du fichier.
Peux-tu mettre un point d'arrêt sur le Exit Sub et nous donner à cet endroit la valeur de nomBaseComplete et la valeur de err.Description ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#17 |
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
re,
la valeur de NomBaseComplete vaut "" par contre dans la fenetres variables locales je ne voit pas du tout la valeur err.description... |
|
|
00
|
|
|
#18 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Et donc, tu peux en déduire toi-même que Chemin_serveur et Base_Hibiscus_reelle sont vides au moment où tu exécutes ton code !
Forcément, ça ne peut pas marcher, tu lui demandes d'ouvrir un fichier à partir d'un chemin vide. Sinon, il faut absolument que tu apprennes à utiliser la fenêtre espions, souvent bien plus utile que la fenêtre variables locales. Tu peux par exemple sélectionner err.Description dans le code puis faire click droit / ajouter un espions. Maintenant, il faut juste que tu vois pourquoi tes variables sont vides. Ce sont des variables globales ? Quand ont-elles été initialisées ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#19 |
|
Candidat au titre de Membre du Club
![]() Technicien réseau Inscription : décembre 2011 Messages : 91 ![]() |
re zebre loup
effectivement quand je fais du pas à pas avec F8, Chemin_serveur et Base_Hibiscus_reelle sont bien vides . Par contre je n'ai pas la suite du code,mais étant donné lorsque c'est éxécuté sous 2003 cela fonctionne je suppose que cela doit etre une variable Globale .? Tu penses que le pb viendrait d'ou ? |
|
|
00
|
|
|
#20 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Franchement, je ne pense pas que le comportement du Open soit différent sous 2003 et 2010. Le problème doit être ailleurs, mais si tu n'as pas le code complet, je ne vois pas ce que je peux faire pour toi !
Et tu ne vas pas t'en sortir en demandant à celui qui a le fichier complet ce qui se passe parce que vu comment la gestion des erreurs est faite à l'envers, toutes les erreurs vont se mélanger et tu ne sauras jamais d'où vient le problème, surtout si tu maîtrises mal le mode pas à pas, les espions, ...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com