Macro pour ouvrir un fichier externe et message d'alerte si non trouvé

chris6999

XLDnaute Impliqué
Bonsoir

Je fais encore appel à votre aide car je n'ai pas eu de succès dans mon dernier post et j'espère avoir plus de chance ce soir.

Je cherche à afficher un message d'alerte (et sortie de la macro) lorsque la système ne parvient pas à trouver le chemin ou le fichier recherché.

Je précise que le chemin est récupéré dans la cellule F9 de ma feuille active et que le fichier recherché est identifié à partir des 8 premiers caractères.

Merci d'avance pour votre aide
Cordialement

Dim ChercheFichier As FileSearch
Dim Chemin As String
Dim I As Integer
Dim debut
Dim ouvr
Chemin = ThisWorkbook.Sheets("MENU").Range("F9").Value
'dossier = ThisWorkbook.Sheets("MENU").Range("l9").Value


'On Error Resume Next


Set ChercheFichier = Application.FileSearch
Chemin = ThisWorkbook.Sheets("MENU").Range("F9").Value
With ChercheFichier
.NewSearch
.Filename = "*.txt"
.LookIn = Chemin
.SearchSubFolders = False
.Execute msoSortByFileName, msoSortOrderAscending
If .Execute > 0 Then

With .FoundFiles

For I = 1 To .Count
debut = Left(Dir(.Item(I)), 8)

If debut = "toto.t00" Then

Workbooks.Open (Chemin & Dir(.Item(I)))
Cells.SpecialCells(xlCellTypeConstants, 23).Select
selection.Copy
 
C

Compte Supprimé 979

Guest
Re : Macro pour ouvrir un fichier externe et message d'alerte si non trouvé

Bonjour Chris699

Ce n'est pas une bonne idée d'utiliser "FileSearch"
car ça ne fonctionnera pas sur les versions ultérieures (il faut y penser)

Voici une possibilité
VB:
Sub Test()
  Dim Chemin As String, sFic As String
  Dim sDebut As String, FlgOK As Boolean
  ' Récupérer le chemin
  Chemin = ThisWorkbook.Sheets("MENU").Range("F9").Value
  ' Initialiser le FLAG du fichier trouvé
  FlgOK = False
  ' Vérifier l'antislash de fin
  If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
  ' Vérifier le chemin
  If Dir(Chemin, vbDirectory) = "" Then
    MsgBox "Le chemin d'accès n'existe pas !"
    Exit Sub
  End If
  ' Vérifier si fichier existe
  sFic = Dir(Chemin)
  Do While sFic <> ""
    sDebut = Left(sFic, 8)
    If sDebut = "toto.t00" Then
      FlgOK = True ' Fichier trouvé
      Workbooks.Open (Chemin & sFic)
      Cells.SpecialCells(xlCellTypeConstants, 23).Select
      Selection.Copy
    End If
  Loop
  If FlgOK = False Then
    MsgBox "Aucun fichier trouvé dans le dossier"
  End If
End Sub

A+
 
Dernière modification par un modérateur:

chris6999

XLDnaute Impliqué
Re : Macro pour ouvrir un fichier externe et message d'alerte si non trouvé

Bonsoir Bruno

J'ai essayé de tester ta proposition mais j'ai un bug à l'éxécution.

Lorsque le système lit la commande "Workbooks.Open (Chemin & sFic)" il me dit que le fichier est déjà ouvert et du coup cela bloque la suite des évènements avec un message 1004.

Je ne comprend pas pourquoi puisque je ne vois pas dans les lignes précédentes de code pouvant ressembler à une demande d'ouverture du fameux fichier.

Merci de medire ce que tu en penses.
Cordialement
 

Herdet

Nous a quitté
Repose en paix
Re : Macro pour ouvrir un fichier externe et message d'alerte si non trouvé

Bonsoir,
Faire plus simple : utiliser la fonction Dir qui marche très bien avec toutes les versions d'Excel
Adapter les exemples de l'aide en ligne de Dir [F1] avec une boucle Do While...Loop si nécessaire
Pour un fichier : MyName = Dir(MyPath)
Pour un répertoire: MyName = Dir(MyPath, vbDirectory)
Si Dir est vide ==> message d'erreur

Cordialement
Robert
 
C

Compte Supprimé 979

Guest
Re : Macro pour ouvrir un fichier externe et message d'alerte si non trouvé

Chris6999,

il y'a effectivement un gros oubli de ma part dans le code précédent (non testé) :p
VB:
Sub Test()  Dim Chemin As String, sFic As String
  Dim sDebut As String, FlgOK As Boolean
  ' Récupérer le chemin
 Chemin = ThisWorkbook.Sheets("MENU").Range("F9").Value
  ' Initialiser le FLAG du fichier trouvé
 FlgOK = False
  ' Vérifier l'antislash de fin
 If Right(Chemin, 1) <> "\" Then Chemin = Chemin & "\"
  ' Vérifier le chemin
 If Dir(Chemin, vbDirectory) = "" Then
    MsgBox "Le chemin d'accès n'existe pas !"
    Exit Sub
  End If
  ' Vérifier si fichier existe
 sFic = Dir(Chemin)
  Do While sFic <> ""
    sDebut = Left(sFic, 8)
    If sDebut = "toto.t00" Then
      FlgOK = True ' Fichier trouvé
     Workbooks.Open (Chemin & sFic)
      Cells.SpecialCells(xlCellTypeConstants, 23).Select
      Selection.Copy
    End If
    ' Ne pas oublier ceci, sinon on reste sur le même fichier
    sFic = Dir()
  Loop
  If FlgOK = False Then
    MsgBox "Aucun fichier trouvé dans le dossier"
  End If
End Sub

A+
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 219
Messages
2 086 372
Membres
103 198
dernier inscrit
CACCIATORE