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 :

Ouvrir un ou plusieurs fichiers [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 228
    Par défaut Ouvrir un ou plusieurs fichiers
    Bonsoir à tous !

    J'ai encore besoin de votre aide pour résoudre un problème sur lequel je rencontre quelques difficultés.

    Je possède une collection de PDF dont les noms portent la syntaxe suivante :

    0000.0000*.pdf

    L'étoile représentant une chaîne de caractères sans syntaxe particulière, cette série de caractère n'est pas obligatoirement présente. (Exemple : 1129.1001A (2).pdf ou 1129.1001.pdf)

    Les deux séries de 4 chiffres sont récupérées sur le tableau dans deux cellules distinctes.


    Je souhaite, en cliquant sur un bouton, ouvrir tous les PDF dont les noms sont les deux séries de 4 chiffres séparés par un point, sans prendre en compte la présence ou non de la série de caractère derrière. (s'il y a)

    J'ai fais quelques essais avec filedialog, mais je n'arrive pas à atteindre mon objectif.

    Une idée ?


    Merci d'avance à celle ou celui qui pourra m'aider, je vous souhaite une très bonne soirée !

  2. #2
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    La commande Dir pour trouver les fichiers et la fonction API ShellExecute pour les ouvrir dans l'application qui leur est associée.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Private 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
     
      Private Declare Function GetDesktopWindow Lib "user32" () As Long
     
      Private Const SW_SHOWNORMAL As Long = 1
     
     
    Sub tt()
     
    num1 = [g1] '1129
     
    num2 = [g2] '1001
     
     
    nom = num1 & "." & num2
     
    chemin = "C:\temp\pdf\"
     
    ' Renvoie le nom de fichier avec l'extension indiquée. Si plusieurs
    ' fichiers *.PDF existent, le premier fichier trouvé est renvoyé.
     
    NomDuFichier = Dir(chemin & nom & "*.PDF")
     
    While NomDuFichier <> ""
     
    Call OuvrirAvecApplicationAssocie(chemin & NomDuFichier)
     
    ' Appelle de nouveau Dir sans argument pour renvoyer le
    ' fichier *.PDF suivant dans le même dossier.
     
    NomDuFichier = Dir
     
    Wend
     
     
    End Sub
     
    Public Function RunShellExecute(sTopic As String, _
                                 sFile As Variant, _
                                 sParams As Variant, _
                                 sDirectory As Variant, _
                                 nShowCmd As Long) As Long
     
         Dim hWndDesk As Long
         Dim success As Long
     
        'the desktop will be the
        'default for error messages
         hWndDesk = GetDesktopWindow()
     
        'execute the passed operation
         success = ShellExecute(hWndDesk, sTopic, sFile, sParams, sDirectory, nShowCmd)
     
      End Function
     
     
     
    Sub OuvrirAvecApplicationAssocie(sFile)
     
     Dim sTopic As String
     
                    sTopic = "Open"
                    sParams = 0&
                    sDirectory = 0&
     
     
         Call RunShellExecute(sTopic, sFile, sParams, sDirectory, SW_SHOWNORMAL)
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 228
    Par défaut
    Bonjour Docmarti, merci pour ton aide !

    J'ai fais quelques essais et ça fonctionne, mais je rencontre un cas particulier :

    Il arrive que la première des deux séries de 4 chiffres soit par exemple 0146, dans ce cas Excel considère 146 et le pdf n'est pas ouvert.



    J'ai aussi une dernière demande, est il possible d’afficher une msgbox lorsque aucun fichier n'est trouvé ?



    Encore un grand merci, le résultat fait plaisir à voir !

    Bonne journée !

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Citation Envoyé par atk_49 Voir le message

    J'ai fais quelques essais et ça fonctionne, mais je rencontre un cas particulier :

    Il arrive que la première des deux séries de 4 chiffres soit par exemple 0146, dans ce cas Excel considère 146 et le pdf n'est pas ouvert.
    Pour empêcher Excel de supprimer les zéros au début d'une valeur numérique, il faut modifier le format de la cellule pour y mettre le format Texte.
    Clic droit sur la cellule pour en modifier le format.

    J'ai aussi une dernière demande, est il possible d’afficher une msgbox lorsque aucun fichier n'est trouvé ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    NomDuFichier = Dir(chemin & nom & "*.PDF")
    If NomDuFichier = "" Then
     MsgBox "Aucun document correspondant a " & nom & vbCrLf & "dans le dossier " & chemin, , ""
     Exit Sub
    End If

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 228
    Par défaut
    Et bien c'est parfait ! Tout fonctionne parfaitement bien !

    Un très grand merci pour ton aide Docmarti !

    Passe une bonne journée !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 08/05/2015, 16h13
  2. Ouvrir et modifier plusieurs fichiers .csv.
    Par jackfred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/07/2007, 12h06
  3. Réponses: 6
    Dernier message: 18/05/2006, 09h29
  4. [HTML] Ouvrir plusieurs fichiers pdf dans une page
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 05/05/2006, 09h34
  5. Ouvrir et recuperer plusieurs chemins de fichier
    Par shub dans le forum Access
    Réponses: 3
    Dernier message: 09/02/2006, 14h08

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