Ignorer l'absence d'un fichier

Résolu/Fermé
Nai Messages postés 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 - 5 oct. 2014 à 01:31
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 6 oct. 2014 à 08:13
Bonsoir,

J'ai une belle macro qui me met en cache (enfin, je pense) un tableau nommé bdd.xlsx.
Ce fichier recense des noms, prénoms et dates de naissance d'enfants. Le fichier qui l'appelle est un fichier de pointage.

Lorsque j'ouvre le fichier de pointage, et que le fichier bdd n'est pas trouvé, j'ai un message d'erreur d'exécution 1004, normal.

Dans la mesure où les utilisateurs du fichier de pointage ne sont pas obligé d'utiliser la bdd, j'aimerais que :
Si la macro ne trouve pas bdd.xlsx
Alors il renvoie simplement un message d'information de type :
"Désolé mais la base de données n'a pas été trouvé."
Sans proposition de débogage... Juste un petit : Ok. Le débogage afficherait du code, non protégé, et l'utilisateur risquerait de faire des bêtises.

Voici le code de la macro en question :

Private Sub Workbook_Open()
Dim derlig As Long
Workbooks.Open ThisWorkbook.Path & "\bdd.xlsx" 'la ligne qui pose problème
With Workbooks("bdd.xlsx").Sheets("Feuil1")
derlig = .Range("A" & Rows.Count).End(xlUp).Row
Sources = .Range("A2:C" & derlig).Value
End With
ActiveWorkbook.Close SaveChanges:=True
With Sheets("Feuille de présence")
.ListBox1.Visible = False
End With
supervision
End Sub

Merci d'avance pour votre aide ! :)


A voir également:

3 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
5 oct. 2014 à 07:21
Bonjour,

meme chose:

Private Sub Workbook_Open()
Dim derlig As Long
On erreur GoTo sortie
Workbooks.Open ThisWorkbook.Path & "\bdd.xlsx" 'la ligne qui pose problème
With Workbooks("bdd.xlsx").Sheets("Feuil1")
derlig = .Range("A" & Rows.Count).End(xlUp).Row
Sources = .Range("A2:C" & derlig).Value
End With
ActiveWorkbook.Close SaveChanges:=True
With Sheets("Feuille de présence")
.ListBox1.Visible = False
End With
supervision
Exit Sub
sortie:
MsgBox "Désolé mais la base de données n'a pas été trouvé."
On Error GoTo 0
End Sub
0
Utilisateur anonyme
5 oct. 2014 à 09:37
Bonjour

On erreur GoTo sortie
Je sais, il faut lutter contre l'anglais envahissant... Mais je crois que ça marcherait mieux avec On Error
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
5 oct. 2014 à 12:05
Bonjour,

en effet, ça ira mieux
0
Nai Messages postés 707 Date d'inscription vendredi 29 avril 2005 Statut Membre Dernière intervention 11 octobre 2024 55
5 oct. 2014 à 17:23
Magnifique ! :D

J'en ai profité pour compléter le message d'information :
    MsgBox "Désolé mais la base de données n'a pas été trouvé." & vbLf & "Pour utiliser une base de données, merci de placer le fichier bdd.xlsx dans le même dossier que ce fichier."
Juste pour savoir, est-ce qu'il est possible de mettre un message de ce type :
MsgBox "Désolé mais la base de données n'a pas été trouvé." & vbLf & "Pour utiliser une base de données, merci de placer le fichier bdd.xlsx dans le dossier <dossier actuel du fichier>."
La macro se débrouillerait pour me trouver le chemin du fichier de pointage :)
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
6 oct. 2014 à 08:13
Bonjour Nai,

Le dossier actuel du fichier, en VBA excel est déterminé par :
ThisWorkbook.Path
.
Donc :
MsgBox "Désolé mais la base de données n'a pas été trouvé." & vbLf & "Pour utiliser une base de données, merci de placer le fichier bdd.xlsx dans le dossier : " & ThisWorkbook.Path & "."
0