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

VBA Discussion :

"Ouvrir avec" en VBA


Sujet :

VBA

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut "Ouvrir avec" en VBA
    Bonjour,
    J'ai pas mal cherché sur le net, je n'ai pas réussi à trouver de réponse à mon problème.
    J'ai créé un logiciel en VBA permettant d'ouvrir des fichiers dans un logiciel nommé Cadwork.
    Mon code fonctionne parfaitement via la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.FollowHyperlink Address:= "Monadresse\Nomdufichier.2d"
    Cependant j'aimerai ouvrir ces fichiers avec un autre exécutable (connu à l'adresse "C:\CADWORK.DIR\EXE_21\2d\2DVIEW.exe")
    Je veux qu'il m'ouvre mon fichier seulement avec cet exécutable et non qu'il ne fasse de cet exécutable le programme d'ouverture de ce type de fichier par défaut.
    Avez vous une idée?
    Merci par avance!!

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à adapter à ton contexte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
     
    Sub Ouvrir()
    Dim sFichier As String
    Dim sOuvrir As String
    Dim v As Variant
     
        sFichier = ThisWorkbook.Path & "\" & "test.txt"
        sOuvrir = "rundll32.exe shell32.dll,OpenAs_RunDLL " & sFichier
        v = Shell(sOuvrir, vbMaximizedFocus)
    End Sub

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, une autre, du même acabit, à adapter à ton contexte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Ouvrir_03()
    Dim v As Variant
    Dim sChemin As String
    Dim sFichier As String
     
        sChemin = "C:\Windows\notepad.exe"
        sFichier = ThisWorkbook.Path & "\" & "test.txt"
        v = Shell(sChemin & " " & sFichier, vbNormalFocus)
    End Sub

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut,
    La deuxième solution me convient mieux, je ne souhaite pas que l'utilisateur puisse choisir le programme par défaut et il ne faut pas que le programme qui ouvre mon fichier devienne par défaut.
    J'ai cependant un problème, le .exe est bien en place car c'est le logiciel qui me dit que le fichier en question n'existe pas à cette adresse, or le fichier existe bel et bien :
    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
    Private Sub but_det2d_Click() ' si l'utilisateur clique sur le bouton det2d
    
     
    
        Dim a As String, b As String, c As String, d As String, tdm As String, chemfich As String, chemprog As String, retval As Variant
    
        If cb_ch.Value = "" Or cb_nv.Value = "" Or cb_loc.Value = "" Or cb_opt.Value = "" Or (ob_h.Value = False And ob_v.Value = False And ob_ind.Value = False) Then 'vérifie si l'utilisateur a renseigné tous les champs
            MsgBox "Veuillez remplir tous les champs ou selectionner un détail dans la liste.", , "Elément manquant!"
        Else:
            ScreenUpdating = False                                                                          'désactivation du rafraichissement de l'écran
            Dim ChemindeTravail As String
            a = cb_ch.Value                                                                                 'a prend la valeur de la Combobox cb_ch (liste des chantiers)
            b = cb_nv.Value                                                                                 'b prend la valeur de la Combobox cb_nv (liste des niveaux)
            c = cb_loc.Value                                                                                 'c prend la valeur de la Combobox cb_loc(liste des jonctions)
            d = cb_opt.Value                                                                                'd prend la valeur de la Combobox cb_opt(liste des particularités)
            If Détails.ob_h = True Then tdm = Détails.ob_h.Caption                        'tdm prend la valeur de la case option selectionnée
            If Détails.ob_v.Value = True Then tdm = Détails.ob_v.Caption
            If Détails.ob_ind.Value = True Then tdm = Détails.ob_ind.Caption
                            
            ChemindeTravail = ActiveWorkbook.Path & "\Détails\" & a & "\" & b & "\" & tdm & "\" & c & "\"   'la variable chemin de travail prend la valeur du chemin du fichier actif\Détails et toutes lesvaleurs renseignées
            'On Error GoTo introuvable                                                                       'sur une erreur aller à introuvable
            'SW_SHOWNORMAL = 1
            chemfich = ChemindeTravail & b & " " & c & " " & d & ".2d"
            chemprog = "C:\CADWORK.DIR\EXE_21\2d\2DVIEW.exe"
    
            retval = Shell(chemprog & " " & chemfich, vbNormalFocus)   
    'devrait, à priori fonctionner, l'exécutable se lance sans problème, mais il m'annonce "Not a valid file name : (toutes les variables de chemfich)" Il doit avoir un problème pour ouvrir le fichier à cause du chemin, le logiciel considère le chemin ET le nom du fichier comme le nom du fichier, l'adresse est pourtant bonne, les fichiers sont enregistrés automatiquement et renommés automatiquement, l'accès au fichier .pdf portant exactement le même nom fonctionne avec 'ThisWorkbook.FollowHyperlink Address
    
            'sOuvrir = "rundll32.exe shell32.dll,OpenAs_RunDLL " & chemfich
            'retval = Shell(sOuvrir, vbMaximizedFocus)                                                              'fonctionne parfaitement bien mais ne correspond pas à mon attente
    
            'retval = shellexecute(0, "open", chemfich, chemprog, 0, SW_SHOWNORMAL)             'test d'un type d'ouverture présentant l'erreur "Point d'entrée shellExecute a d'une DDL introuvable dans shell32.dll" 
    
            'ThisWorkbook.FollowHyperlink Address:=ChemindeTravail & b & " " & c & " " & d & ".2d"           'ouverture du détail 2D avec le programme par défaut (ne correspond pas à mon attente)
    
            ScreenUpdating = True                                                                           'activation du rafraichissement de l'écran
        End If
        
    Exit Sub
    introuvable: MsgBox "Le détail 2D que vous demandez n'existe pas pour ces critères veuillez le rajouter ou en sélectionner un autre.", , "Détail non trouvé."
    End Sub

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, à priori une syntaxe défaillante dans le chemin ou le nom de fichier ou les 2 ?

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2015
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Salut,

    J'aimerais bien...
    Le problème c'est que 'ThisWorkbook.FollowHyperlink Address:=ChemindeTravail & b & " " & c & " " & d & ".2d" marche très bien sans l'apostrophe et que ma variable chemfich est copié collé donc c'est exactement le même: chemfich = ChemindeTravail & b & " " & c & " " & d & ".2d"
    Je n'ai pas repéré d'espace glissé dans la formule ou d'antislash manquant...
    Pour ce qui est du .exe, c'est mon logiciel Cadwork qui m'indique que le nom du fichier n'est pas valide donc il va bien chercher le bon .exe.
    Je pense que le logiciel essai d'ouvrir un fichier portant le nom de: Chemin De Travail + Nom Du Fichier, forcément il ne trouve pas grand chose...
    Que dois-je faire? Dois-je appeler la hotline du logiciel afin de savoir comment s'exécute la commande d'ouverture d'un fichier via ce logiciel? Est-ce que le fait que le fichier à ouvrir et le .exe soit sur des partitions différentes impact l'ouverture?
    J'ai essayé de mettre seulement le nom du fichier pour l'ouverture, le logiciel va alors chercher dans C:\Users\titou88\Documents + Nom du fichier et là ça ne marche toujours pas étant donné qu'il n'y a rien.
    J'avoue que je sèche un peu...

Discussions similaires

  1. Requete avec quote et double quote
    Par swissmade dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/08/2007, 15h01
  2. pb avec quote...php + mysql
    Par nicdes dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 10/12/2005, 01h25

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