Recherche fichier

Résolu
ddh74 Messages postés 34 Statut Membre -  
ddh74 Messages postés 34 Statut Membre -
Bonjour à tous,

Voici mon problème:

j'utilise le code cidessous pour rechercher des fichiers et celui-ci marche très bien, mais lorsque j'ai rajouté des sous dossiers à mon dossier "Factures sav" la recherche dans les sous dossiers ne marche pas. Quelqu'un peut-il me donner une solution.

Merci d'avance

Private Sub Sous_Pdf_Click()

Dim NuméroDeFactureStr As String
Dim ClientStr As String

NuméroDeFactureStr = [Forms]![Sav recherche]![sfmRecherche].[Form]![N°Facture]
ClientStr = [Forms]![Sav recherche]![sfmRecherche].[Form]![Client]

DoCmd.Close

Dim Chemin, Fichier, Absolu, hwndSim As String

Absolu = "C:\Users\Christian\Documents christian\Documents ScanSoft\Factures Sav\"

Fichier = [Forms]![Sav recherche]![sfmRecherche].[Form]![N°Facture]

'On ne continue que si un fichier a été sélectionné.

If Fichier <> "" Then

MsgBox ("Facture numéro: " & NuméroDeFactureStr & vbCrLf & vbCrLf & vbCrLf & "Mr: " & ClientStr)

'Association des chemins absolu et relatif pour obtenir le chemin complet vers le fichier.
Chemin = Absolu & Fichier & ".pdf"
' Chemin = "C:\Users\Christian\Documents christian\Documents ScanSoft\Factures sav\50813002.pdf"

'Execution du fichier situé à l'emplacement "Chemin" avec son programme par défaut.

hwndSim = ShellExecuteForExplore(0&, vbNullString, Chemin, 0, 0, 1)

Else

MsgBox "Aucun fichier sélectionné"

End If

End Sub

13 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Avez-vous mis la ligne de code pour declarer la fonction SellExecutForExplore dans un module???

    votre programme fonctionne. Quelle erreur avez-vous
    0
  2. ddh74 Messages postés 34 Statut Membre
     
    Je trouve que les fichiers dans la dossier Factures Sav mais pas ceux placés dans les sous dossiers
    0
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Absolu = "C:\Users\Christian\Documents christian\Documents ScanSoft\Factures Sav\"
    Y a pas de sous-dossier dans facture sav !!!
    0
  4. ddh74 Messages postés 34 Statut Membre
     
    je m'exprime peut être mal mais je voudrais faire la recherche sur l'ensemble du dossier facture sav et ces sous dossiers
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Oui, mais vous pouvez montrer le code pour la recherche ????? Parce qu'il n'y a pas qu'un, donc le votre serait utile.
    0
    1. ddh74
       
      Petite rectification je veux ouvrir le fichier qui ce trouve dans un des sous dossiers du dossier factures Sav mais sans connaître lequel
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Vous voulez trouvez le chemin d'un fichier en connaissant que le dossier de depart, pour l'ouvrir ensuite ????
      0
    3. ddh74 Messages postés 34 Statut Membre
       
      oui
      0
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    J'avais trouve du code, sur le net, pour remplacer la fonction application.FileSearch dans excel2007. Utilisation des API des windows

    'Declarations et Function a mettre dans un module
    Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
    Private Const MAX_PATH = 260
    Declare Function ShellExecuteForExplore Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, lpParameters As Any, lpDirectory As Any, ByVal nShowCmd As Long) As Long

    Private Function Recherche_Path(R As String, F As String) As String
    Dim T As String, resu As Long, flag_ok As Boolean
    T = String(MAX_PATH, 0)
    resu = SearchTreeForFile(R, F, T)
    If resu <> 0 Then
    Recherche_Path = Left$(T, InStr(1, T, Chr$(0)) - 1) ': Exit Function
    End If
    End Function

    '-------------------------------------------------
    Private Sub Sous_Pdf_Click()
    Dim NuméroDeFactureStr As String
    Dim ClientStr As String
    Dim Chemin, Fichier As String, Absolu As String, hwndSim As String

    NuméroDeFactureStr = [Forms]![Sav recherche]![sfmRecherche].[Form]![N°Facture]
    ClientStr = [Forms]![Sav recherche]![sfmRecherche].[Form]![Client]
    Fichier = [Forms]![Sav recherche]![sfmRecherche].[Form]![N°Facture]

    DoCmd.Close

    Absolu = "C:\Users\Christian\Documents christian\Documents ScanSoft\Factures Sav\"
    'On ne continue que si un fichier a été sélectionné.
    If Fichier <> "" Then
    Fichier = Fichier & ".PDF"
    MsgBox ("Facture numéro: " & NuméroDeFactureStr & vbCrLf & vbCrLf & vbCrLf & "Mr: " & ClientStr)

    'Recherche chemin du fichier
    Chemin = Recherche_Path(Absolu, Fichier)

    If Chemin <> "" Then
    'Execution du fichier situé à l'emplacement "Chemin" avec son programme par défaut.
    hwndSim = ShellExecuteForExplore(0&, vbNullString, Chemin, 0, 0, 1)
    Else
    MsgBox ("Pas trouvé Chemin, Fichier inexsitant")
    End If
    Else
    MsgBox "Aucun fichier sélectionné"
    End If
    End Sub

    A+
    0
  8. ddh74 Messages postés 34 Statut Membre
     
    Merci pour cette aide mais je suis larguer
    0
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Qu'est-ce que vous ne comprenez pas ??? C'est votre code modifie pour rechercher ce que vous voulez.

    A+
    0
  10. ddh74 Messages postés 34 Statut Membre
     
    j'ai mis ce code dans un module nommé module1

    Private Declare Function SearchTreeForFile Lib "imagehlp" (ByVal RootPath As String, ByVal InputPathName As String, ByVal OutputPathBuffer As String) As Long
    Private Const MAX_PATH = 260
    Declare Function ShellExecuteForExplore Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, lpParameters As Any, lpDirectory As Any, ByVal nShowCmd As Long) As Long

    Private Function Recherche_Path(R As String, F As String) As String
    Dim T As String, resu As Long, flag_ok As Boolean
    T = String(MAX_PATH, 0)
    resu = SearchTreeForFile(R, F, T)
    If resu <> 0 Then
    Recherche_Path = Left$(T, InStr(1, T, Chr$(0)) - 1) ': Exit Function
    End If
    End Function

    Mais lorsque je compile ma procedure un message erreur sub ou fonction non définie
    0
  11. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    enlevez private devant Function Recherche_Path
    0
  12. ddh74 Messages postés 34 Statut Membre
     
    Recherche_Path
    0
  13. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Ai trouve entre-temps

    enlevez private devant Function Recherche_Path, puisque le code du bouton est dans un formulaire
    0
  14. ddh74 Messages postés 34 Statut Membre
     
    Un grand merci. Ca marche très bien, je ne comprend pas tous mais

    je suis chauffagiste et non informaticien ceci explique cela

    A+
    0