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

Access Discussion :

[VBA] commande Shell sans résultat


Sujet :

Access

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut [VBA] commande Shell sans résultat
    Bonjour,

    Dans ma base de donnée j'aiun champs qui contient le chemin d'accès complet vers le courrier word qui est attaché à l'enregistrement.

    j'ai tenté de créer un bouton qui ouvre ce document.
    Mais je m'explique pas trop pourquoi ca ne fonctionne pas.

    j'utilise la commande shell... faut-il activer une bibliothèques particulière dans les références pour utiliser cette commande?
    Actuellement j'ai essayer comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim strFichier as string
     
    strFichier=Me!chemDoss
    Shell"WINWORD.EXE ""& strFichier &""",vbNormalFocus
    mais il me renvoit un message d'erreur comme quoi le fichier est introuvable
    Donc j'ai essayer avec le chemin complet de word
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim strFichier as string
     
    strFichier=Me!chemDoss
    Shell"""C:\...\WINWORD.EXE"" ""& strFichier &""",vbNormalFocus
    là, quand je clic sur le bouton j'ai un sablier qui apparait une fraction de seconde puis plus rien. Pas de word et pas de message d'erreur.
    Quelqu'un a t'il une idée de ce que j'ai oublié et qui provoque la panne?

    merci

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour p'tite Sandrine,

    Perso, j'utilise ShellExecute. J'en suis fort content...

    A coller dans un module standard :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Option Compare Database
    Option Explicit
     
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
            ByVal hwnd As Long, _
            ByVal lpOperation As String, _
            ByVal lpFile As String, _
            ByVal lpParameters As String, _
            ByVal lpDirectory As String, _
            ByVal nShowCmd As Long) As Long
     
    Function OuvrirDocument(strChemin As String)
     
        'Déclaration des variables
        Dim strErreur As String
     
        Select Case ShellExecute(0, "open", strChemin, vbNullString, vbNullString, 1)
     
            Case 0: strErreur = "Le système manque de mémoire ou de ressources, l'exécutable est corrompu ou réallocations non valides."
            Case 2: strErreur = "Fichier non trouvé."
            Case 3: strErreur = "Chemin non trouvé."
            Case 5: strErreur = "Une tentative a été faite pour se lier dynamiquement à une tache, ou il y a eu une erreur de partage ou de protection réseau."
            Case 6: strErreur = "La librairie requiert des segments de données séparés pour chaque tâche."
            Case 8: strErreur = "Il n 'y a pas assez de mémoire disponible pour lancer l'application."
            Case 10: strErreur = "Version de Windows incorrecte."
            Case 11: strErreur = "Le fichier exécutable n'est pas correct, il se peut que ce ne soit pas une application Windows, ou qu'il y ait une erreur dans le fichier .EXE;"
            Case 12: strErreur = "L'application a été conçue pour un autre système d'exploitation."
            Case 13: strErreur = "L'application a été conçue pour MS-DOS 4.0."
            Case 14: strErreur = "Le type de fichier exécutable est inconnu."
            Case 15: strErreur = "Tentative de chargement d'une application en mode réel."
            Case 16: strErreur = "Tentative de charger une seconde instance d'un fichier exécutable contenant plusieurs segments de données qui ne sont pas marqués en lecture seule."
            Case 19: strErreur = "Tentative de charger un fichier exécutable compressé. Le fichier doit être décompressé avant d'être chargé."
            Case 20: strErreur = "Fichier de librairie liée dynamiquement (DLL) incorrect, une des DLLs requise pour exécuter cette application est corrompue."
            Case 21: strErreur = "L 'application requiert les extensions Microsoft Windows 32-bit."
            Case 31: strErreur = "Il n 'y a pas d'association pour le type de fichier spécifié, ou il n'y a pas d'association pour l'action choisie pour le type de fichier choisi."
     
        End Select
     
        If strErreur <> "" Then
     
            MsgBox strErreur, vbCritical, "Erreur"
     
        End If
     
    End Function
    Et pour l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OuvrirDocument (CheminDocument)
    CheminDocument est bien le chemin complet du document à ouvrir, y compris l'extension.

    Cette solution me convient bien car le nom de l'application associée n'a pas besoin d'être spécifié (la gestion des erreurs m'a été donnée tout récemment par Tofalu, que je remercie encore).

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2006
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 30
    Points : 27
    Points
    27
    Par défaut
    Si mes souvenir son bon ta cde Shell doit etre placer dans une var

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sub tasub()
    dim myvar as long
    Myvar=shell "chemin/ton_exe.exe"
    end sub
    A+

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut juste un appel
    bonjour sandrine,

    j'ai aussi eu le probleme il y a quelques temps. je m'en suis sorti en ajoutant call devant shell.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell("C:\chemin de l'appli" "D:\Mes documents\tondoc",1)
    les solutions proposées avant sont peut etre plus efficaces je n'en sais rien..

    bon courage

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    hello,

    merci a tous pour vos réponses.
    J'avoue que pour finir en fouillant sur le net j'ai trouver une autre methode.
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dim WApp as word.application
    dim strfichier as string
     
    strfichier = me!chemDoss
    Set WApp ...
    with WApp
    .visible = True
    .Document.open strfichier
    c'est a peu près ca de mémoire.
    Le résultat est bon a peésent j'essaye de trouver le moyen de mettre une condition if qui permet de vérifier si le document existe toujours avant d'exécuter.
    Car si il modifie l'emplacement ou supprime le document, actuellement il sont renvoyer a ma page de code ce que je ne souhaite pas.

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,
    Citation Envoyé par p'tite Sandrine
    j'essaye de trouver le moyen de mettre une condition if qui permet de vérifier si le document existe toujours avant d'exécuter.
    La faq répond à ta question

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    325
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2006
    Messages : 325
    Points : 207
    Points
    207
    Par défaut
    un tout grand merci Kikof.


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

Discussions similaires

  1. VBA & commande Shell avec paramètres
    Par lgab3 dans le forum VBA Access
    Réponses: 6
    Dernier message: 26/11/2009, 13h14
  2. [VBA]Exécuter une commande Shell
    Par antoine46 dans le forum VBA Access
    Réponses: 4
    Dernier message: 16/04/2008, 08h07
  3. Réponses: 7
    Dernier message: 09/01/2008, 11h16
  4. Récupérer le résultat d'une commande shell
    Par espadon1 dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2006, 10h01
  5. Récupération du résultat d'une commande shell
    Par klu dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2006, 23h34

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