Macro qui ne fonctionne pas

Vieupot

XLDnaute Occasionnel
Bonsoir

Notre ami DOUBLE ZERO m'avait donné les bases d'une macro que je devais adapter à mon projet
J'ai du mal " adapter" ... !
Cette macro à pour but d'afficher un document au format PDF correspondant à un numéro de facture
J'indique manuellement le numéro à rechercher en I5
pour exemple j'indique" 1" en I5 et je devrais voir apparaitre la facture enregistrée " 1 " avec extension PDF
J'ai entré les données ci-dessous dans un module standard. Je précise que mon fichier Excel et mes fichiers PDF sont dans le même dossier. Si pas de facture message "Dossier inexistant "

J'ai le message suivant au lancement :Erreur de compilation Sub ou fonction non définie
A la création de la macro je dois inscrire "Sub" manuellement alors qu'il me semble que ça se marque tout seul
Vous comprendrez en me lisant que je suis débutant en la matière

Sub Fichier_Pdf_ouvrir()

cherche_et_affiche_fichier_pdf (cette indication ne s'enregistre pas de couleur verte dans le module)


Dim fichier_nom As String, emplacement As String
On Error GoTo fin
fichier_nom = [I5].Value & ".pdf"

emplacement = "G:\AAAA asso\Compta\compta_AAAA_2017\"
CreateObject("WScript.Shell").Run emplacement & fichier_nom
Exit Sub
fin: MsgBox "Fichier inexistant."
End Sub

Quelqu'un aurait-il la gentillesse de me dire pourquoi dans mon module Sub n'est pas en bleu.. et l'explication macro pas en vert
C
ordialement
 

j.r15

XLDnaute Nouveau
Bonjour à tous. humilité, c'est le premier mot qui me vient quand je vois ce que vous tous êtes capable de faire. Merci d'avance pour ce que vous avez fait et ce que vous ferez.
mon intrusion dans votre fil est simple, je ne sais pas à qui demander.
j’utilise un fichier mis à dispo mais en recoupant les résultats je ne trouves pas je ne trouves pas toujours la même chose.
si je peux continuer vous pouvez me le dire ? sinon ...
 

Vieupot

XLDnaute Occasionnel
Bonjour à tous. humilité, c'est le premier mot qui me vient quand je vois ce que vous tous êtes capable de faire. Merci d'avance pour ce que vous avez fait et ce que vous ferez.
mon intrusion dans votre fil est simple, je ne sais pas à qui demander.
j’utilise un fichier mis à dispo mais en recoupant les résultats je ne trouves pas je ne trouves pas toujours la même chose.
si je peux continuer vous pouvez me le dire ? sinon ...

Bonsoir JR 15
ça ne me gêne pas mais je suis aussi novice que toi...
Le mieux serait de créer un nouveau post, il y aura toujours quelqu'un de sympha pour te répondre
Cordialement
 
Dernière édition:

Vieupot

XLDnaute Occasionnel
Bonsoir
Après la modification suggérée par Chris, j'ai donc mis une apostrophe et j'ai le commentaire en vert..ça avance

Par contre bien que le chemin d'accès soit bon et le fichier appelé " 1" existant j'ai le message "Fichier inexistant

je ne comprends pas... sinon peut-être mettre au format texte en I5 et non pas standard

A vous lire
 

chris

XLDnaute Barbatruc
Bonjour

En mode debug (pas à pas), tes variables affichent-elles les bonnes valeurs pour fichier_nom et emplacement ?
Si tu crées un espion pour emplacement & fichier_nom, est-ce correct et conforme au chemin de ton fichier ?

Si oui c'est que le problème ne vient pas du fichier.
Mets la ligne On Error GoTo fin en commentaire pour avoir la véritable erreur détectée par Excel.
 

Vieupot

XLDnaute Occasionnel
Bonjour et merci de votre aide trés importante et enrichissante pour moi débutant
quand je vois ce qu'écris " double Zéro" moi je suis Zéro puissance 999

Pour toi Chris ou un autre contributeur...
J'ai mis en commentaire On error go To fin et en I5 j'ai entré le mot [chien] et supprimé &. Pdf. j'ai changé le nom de fichier dans le dossier concerné. ça ne fonctionne pas . j'ai retiré l'extansion pdf car dans le dossier ou se trouve le fichier il porte le nom de "chien " et non pas chien.Pdf, l'extension ne figure pas dans le nom en explorant les fichiers
J'ai ensuite refait un essai avec " chien PDF en remettant dans la macro fichier_nom=[chien].Value &".pdf"
toujours fichier inexistant
a un moment est apparu : La méthode 'Run' de l'objet 'IwshShell3' a échoué code d'exécution '-2147024849 (800070002)'
Pour quelqu'un comme moi ça ne me dit pas grand chose... mais si l'important est que ça fonctionne, j'aimerai savoir pourquoi ça ne fonctionne pas. Le fait que le fichier se trouve sur un disque externe aurait-il une importance ? logiquement je pense que non...le fichier excel se trouvant également sur le disque externe, même chemin et même dossier
Sans cette fonction mon projet est moins intéressant pour nous et ce serait dommage d'en rester la
Merci pour l'aide a venir sur ce projet qui me tient à coeur
cordialement
 
Dernière édition:

chris

XLDnaute Barbatruc
Re

As-tu, comme suggéré, en mode pas à pas vérifié la valeur de tes 3 variables ?

J'ai testé le code avec un chemin et un fichier existant : il fonctionne parfaitement...

N.B. : Le fait de ne pas voir les extensions est une option de Windows : pour ma part je la supprime car c'est un non sens en particulier quand on veut coder.
Mais qu'on les voit ou non, elles sont là (sauf manipulation de renommage impropre).
 

Vieupot

XLDnaute Occasionnel
Bonsoir Chris
Bien tout d'abord suis content de savoir que chez toi la macro fonctionne il y a donc un truc qui ne va pas chez moi !
Pour ce qui est du test pas à pas j'ai essayé...je dis bien j'ai essayé...à ma façon de débutant VBA
Débogage, pas a pas détaillé,la flèche jaune se positionne devant sub, j'appuie sur F8 surlignage en jaune
F8 : le curseur va à on error go to fin et surlignage en jaune
F8 fichier nom = (I5) etc...surlignage en jaune
F8 emplacement = G "G: etc.. surlignage en jaune
F8 créate objet etc ...surlignage en jaune
F8 fin Msg Box "fichier inexistant" surlignage en jaune
F8 et la mon classeur s'ouvre avec le message Box "Fichier inéxistant"
je ne sais si c'est la bonne procédure et pour toi tout doit paraitre si simple...mais bon faut essayer de comprendre !

une petite explication s'il te plait pourquoi 3 variables ? je vois soit une donnée en "I5" ou rien en "I5" ça ne fait que deux !
 

Vieupot

XLDnaute Occasionnel
Bonsoir Chris
Bien tout d'abord suis content de savoir que chez toi la macro fonctionne il y a donc un truc qui ne va pas chez moi !
Pour ce qui est du test pas à pas j'ai essayé...je dis bien j'ai essayé...à ma façon de débutant VBA
Débogage, pas a pas détaillé,la flèche jaune se positionne devant sub, j'appuie sur F8 surlignage en jaune
F8 : le curseur va à on error go to fin et surlignage en jaune
F8 fichier nom = (I5) etc...surlignage en jaune
F8 emplacement = G "G: etc.. surlignage en jaune
F8 créate objet etc ...surlignage en jaune
F8 fin Msg Box "fichier inexistant" surlignage en jaune
F8 et la mon classeur s'ouvre avec le message Box "Fichier inéxistant"
je ne sais si c'est la bonne procédure et pour toi tout doit paraitre si simple...mais bon faut essayer de comprendre !

j'ai essayé aussi avec débogage, positionné le curseur de ma souris en tête de chaque ligne et seulement lorsque le curseur est devant Exit Sub la j'ai le message fichier inexistant

une petite explication s'il te plait pourquoi 3 variables ? je vois soit une donnée en "I5" ou rien en "I5" ça ne fait que deux !
Bon j'espère que tu auras encore un peu de patiente avec moi ! A te lire
Cordialement
 
Dernière édition:

chris

XLDnaute Barbatruc
Bonjour

Il faut afficher les fenêtres Variables locales et espions dans l'éditeur VBA (Menu Affichage)
Quand tu appuies sur F8,
au moment où la ligne fichier_nom = [I5].Value & ".pdf" passe, tu dois voir la valeur de la variable fichier_nom dans la fenêtre des variables locales
au moment où la ligne emplacement = "G:\AAAA asso\Compta\compta_AAAA_2017\" passe, la variable emplacement a sa valeur affichée dans la fenêtre des variables locales
si tu fais un clic droit sur la partie emplacement & fichier_nom de la ligne suivante (avant qu'elle soit en jaune) et que tu demandes Ajouter un espion, tu auras le chemin complet du fichier affiché dans la fenêtre des Espions (cette association emplacement & fichier_nom constitue pour Excel une 3ème variable).
Avant d'exécuter la ligne create objet... tu dois t'assurer que ce qui est affiché dans la fenêtre des espions est correct : pas d'espace en trop ou en moins, de \ manquant ou autre différence avec la réalité.

Fichier inexistant est un message prédéfini qui ne prouve pas que ce soit l'erreur réellement rencontrée...
 

Vieupot

XLDnaute Occasionnel
Merci à toi Chris pour ta patience..je te promets de faire le maximum pour mettre en application tes conseils demain car pour aujourd'hui ma tête fatiguée et ne suit plus.
je ne lacherai pas ! ne serait-ce que pour ne pas t'avoir fait perdre ton temps.
Bonne nuit à toi et encore un grand merci
Cordialement
 

Vieupot

XLDnaute Occasionnel
Bonjour à tous et à toi Chris

comme promis j'ai suivi tes instructions ce qui me permets maintenant de mieux comprendre le débogage, encore un plus grâce à toi et merci

voici donc le résultat:

Sur fichier nom=[I5] etc rien dans les fenêtres

F8... je suis sur emplacement = G....etc Fenêtre éxécution: Rien

Variables locales : Expression Fichier nom

Valeur"1.pdf" type String

Emplacement " "

Clic droit sur emplacement et Fichier.....ajout un espion expression :emplacement et fichier nom

procédure : fichier pdf ouvrir

module 5 et je fais "ok "

Résultat fenêtre espion: ( 1 paire de lunettes ) expression emplacement et fichier nom

valeur: 1 et pdf

type string

contexte:module 5 fichier pdf ouvrir

F8

sur créate objet ("Wscript.Schell.....

Fenêtre espions : emplacement exactement le chemin de mon fichier avec le nom 1.pdf type string module 5.fichier pdf ouvrir

et dans fenêtre variables locales : exactement la même chose et fichier


j'ai essayé avec plusieurs variables en i 5 et tout se modifie bien dans le pas à pas et.....ça ne marche pas


je repose la question d'hier, le fait d'attaquer directement un disque externe à t-il une importance ?

aurais-je oublié quelque chose ?

Si tu as le temps merci de me donner ton avis sur le travail effectué

je vais également essayer d'enregistrer le fichier excel et le Pdf dans un dossier sur C directement sur l'ordi

Je ne suis pas pressé je dois partir jusque 19 h

A bientôt

cordialement

Bernard
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972