blord
XLDnaute Impliqué
Bonjour à tous,
J'utilise Application.GetOpenFilename pour faire afficher la boite de dialogue qui permet à l'utilisateur d'ouvrir le fichier désiré.
Le problème est que l'utilisateur peut sélectionner tous les fichiers qui sont affichés. Mon code intercepte l'erreur si la feuille que l'on doit copier n'est pas dans le fichier ouvert ou si l'utilisateur ne sélectionne aucun fichier mais je ne suis pas capable d’intercepter l’erreur si l'utilisateur sélectionne le fichier qui est déjà ouvert...
Voici mon code :
Donc ce que j'aimerais c'est que mon code ne "plante pas" si le fichier sélectionné pour ouverture est celui qui est déjà ouvert.
Merci pour votre aide !
Benoit Lord
J'utilise Application.GetOpenFilename pour faire afficher la boite de dialogue qui permet à l'utilisateur d'ouvrir le fichier désiré.
Le problème est que l'utilisateur peut sélectionner tous les fichiers qui sont affichés. Mon code intercepte l'erreur si la feuille que l'on doit copier n'est pas dans le fichier ouvert ou si l'utilisateur ne sélectionne aucun fichier mais je ne suis pas capable d’intercepter l’erreur si l'utilisateur sélectionne le fichier qui est déjà ouvert...
Voici mon code :
Code:
Sub ChoixFichier()
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Copie des données la facture électronique dans le classeur macro
'---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
'Affiche les feuille de travail
Application.ScreenUpdating = False
Worksheets("Members With Budgeted Rates").Visible = True
Worksheets("Stub").Visible = True
'Vide la feuille DataFactureEl qui reçoit les données de la facture électronique
Sheets("Members With Budgeted Rates").Cells.Delete Shift:=xlUp
Range("A1").Select
'Déclaration des variables
Dim wbSource As String
Dim Fichier As Variant
'Attribution du nom du classeur macro à la variable wbSource
wbSource = ActiveWorkbook.Name
'Affiche la boîte de dialogue "Ouvrir"
'Attribue le nom du fichier choisi à la variable Fichier
Fichier = Application.GetOpenFilename("Tous les fichiers (*.xls),*.xls")
'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur a cliqué sur le bouton Annuler ou sur la croix de fermeture
If Fichier = False Then Exit Sub
'Ouvre le fichier sélectionné
Workbooks.Open Filename:=Fichier
'Associe le nom du fichier ouvert à la variable wbFacture
Set wbFacture = ActiveWorkbook
'On tente d'accéder à la feuille qui contient les informations de facturation
On Error Resume Next
Set shFacture = wbFacture.Worksheets("Detailed billing information")
'Si la feuille est inexistante : message d'erreur
If Err.Number <> 0 Then
MsgBox "The file selected does not include a 'Detailed billing information' sheet." & Chr(10) & _
"Please ensure that you have chosen a valid billing file and that the sheet is not deleted, hidden or renamed.", vbExclamation
Workbooks(wbFacture.Name).Close SaveChanges:=False
Application.DisplayAlerts = True
Exit Sub
End If
On Error GoTo 0
'Copie des données de facturation dans le classeur macro dans la feuille "DataFactureEl"
shFacture.Activate
Cells.Copy
Workbooks(wbSource).Activate
Sheets("Members With Budgeted Rates").Activate
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("A1").Select
'Fermeture du classeur de la facture électronique
Workbooks(wbFacture.Name).Close SaveChanges:=False
Workbooks(wbSource).Activate
Application.EnableEvents = True
End Sub
Donc ce que j'aimerais c'est que mon code ne "plante pas" si le fichier sélectionné pour ouverture est celui qui est déjà ouvert.
Merci pour votre aide !
Benoit Lord