IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

probleme de shell impression avec adobe


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 16
    Points
    16
    Par défaut probleme de shell impression avec adobe
    rebonjour à tous. je bute sur un petit problème de repertoire, dans une version précédente de ma macro, j'ecrivais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x = Shell("C:\Program Files (x86)\Adobe\Reader 8.0\Reader\AcroRd32.exe" & " " & "C:\...........\TP 1\test.pdf", 1)

    pour lancer le fichier test.pdf et ca tournait sans problème.

    j'ai mis à jour la version d'abode de la 8 à la 11 et j'ai changé le chemin:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x = Shell("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" & " " & "C:\..............\TP 1\test.pdf", 1)
    et ca ne fonctionne plus, adobe se lance mais m'indique une erreur.

    en ecrivant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    x = Shell("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" & " " & "C:\.................\TP1\test.pdf", 1)
    ca refonctionne si j'enlève l'espace entre "TP" et "1", mais comme c'est un programme que je distribue et qu'il peut être mis n'importe ou sur le disque ou une clé usb, le fait qu'il faille absolument enlever les espaces des sous repertoires est donc très geant.
    j'aimerais que ca fonctionne quel que soit la nature des sous-repertoires.

    quelqu'un a une idée?

    merci d'avance, Luc.

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Essaie ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = Shell("C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" & " ""C:\.................\TP 1\test.pdf""", 1)
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 16
    Points
    16
    Par défaut oui mais....
    merci tout d'abord d'avoir trouvé une solution, au passage j'aimerais bien avoir la signification de cette drole de syntaxe, je pourrais peut-être debugger moi-même car je suis encore un peu géné car dans ma macro, le problème n'est pas aussi simple:

    je définis d'abord le contenu du shell (que je nomme (TxtTP) et ensuite, je le lance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextTP = CheminPdf & " " & Chemin & "\" & DossierTP & "\" & Sheets("sources").Cells(3, choixh) & ".pdf"

    CheminPdf corespond à:
    C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe

    Chemin correspond au chemin de lancement de l'applicationexemple sur la clé usb F:
    F:\mon programme\

    DossierTP correspond au dossier ou se trouve le pdf, exemple:
    F:\mon programme\TP 1\


    Sheets("sources").Cells(3, choixh) correspond à une cellule qui contient le nom du fichier à lancer.

    ensuite j'execute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     X = Shell(TextTP, 1)
    j'ai essayé de mettre ces guillemets mais vba me dis qu'il y a une erreur de syntaxe dans ma ligne de commande.

    j'espère avoir été clair et encore merci de vous pencher sur ce problème.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    je me reponds à moi-même, par tatonnement, ce code fonctionne:



    l'ancienne ligne de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextTP = CheminPdf & " " & Chemin & "\" & DossierTP & "\" & Sheets("sources").Cells(3, choixh) & ".pdf"
    est devenue:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TextTP = CheminPdf & " """ & Chemin & "\" & DossierTP & "\" & Sheets("sources").Cells(3, choixh) & ".pdf"""
    encore merci Alain de m'avoir donné la solution, j'ai eu un peu de mal à l'adapter mais c'est ok.

    PS: je suis toujours amateur d'explications sur cette syntaxe.

  5. #5
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Visiblement, le paramètre à passer à Adobe Reader doit, soit ne pas contenir d'espace, soit être entouré de guillemets.
    Pour ajouter un guillemet à une chaine de caractères en VBA, il faut le doubler.
    Donc, un guillemet pour ouvrir la chaine caractères et deux pour en ajouter un dans cette chaine. Ce qui fait trois.
    Idem pour la fermeture de la chaine (2 + 1).
    CQFD
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 24
    Points : 16
    Points
    16
    Par défaut pb adobe
    voilà qui eclaire ma lanterne et qui me rend doublement satisfait.

    merci encore et bien à vous,

    Luc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme audio avec Adobe Flash Player
    Par maadadi dans le forum Audio
    Réponses: 5
    Dernier message: 07/11/2007, 23h54
  2. Impression .PDF avec adobe
    Par popo68 dans le forum Access
    Réponses: 2
    Dernier message: 26/02/2007, 12h19
  3. Problème d'impression avec Firefox
    Par Thrystan dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 19/12/2005, 22h51
  4. Problème d'impression avec CUPS
    Par piff62 dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 14/02/2005, 11h46
  5. Probleme d'impression avec la méthode TForm->Print()
    Par Kid Icarus dans le forum C++Builder
    Réponses: 13
    Dernier message: 31/07/2002, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo