Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code Verifier Fichier a l'ouverture en Erreur

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Foufoudora

XLDnaute Occasionnel
Bonjour le forum,

je rencontre 2 problemes avec le code suivant:
le code verifie a l'ouverture du FileSouce si un fichier existe:
1- si le fichier n'existe pas il le cree par contre il m'envoie un code erreur '9' subscipt out of range sur la ligne en rouge dans le code.

2- si le fichier existe il ouvre le fichier mais ne ferme pas le fichier source.

Merci par avance de m'eclairer sur ces 2 problemes

Salutations

Private Sub Workbook_Open()
Dim fso As Object, x As Boolean
Dim RepSource As String, FileSource As String
Set fso = CreateObject("Scripting.FileSystemObject")
RepSource = ThisWorkbook.Path
FileSource = ThisWorkbook.Name
x = fso.FileExists(RepSource & "\" & Application.UserName & ".xls")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If x = True Then
Workbooks.Open (RepSource & "\" & Application.UserName & ".xls")
Workbooks(FileSource).Close
Else
ActiveWorkbook.SaveAs (RepSource & "\" & Application.UserName & ".xls")
'Workbooks(FileSource).Activate
Workbooks(FileSource).Close
End If
Application.DisplayAlerts = True
Sheets("Instructions").Activate
End Sub
 
Dernière édition:
Re : Code Verifier Fichier a l'ouverture en Erreur

bonjour Foufoudora

Un des problèmes vient de :

Code:
ActiveWorkbook.SaveAs (RepSource & "\" & Application.UserName & ".xls")
L'aciveWorkbook change de nom !! (d'ailleurs a cet instant il ne doit y avoir qu'un seul fichier ouvert)
pour l'autre, il faudrait verifier si le Name n'a pas besoin d'etre complété par .xls (cas d'un fichier qui n'a pas encore été enregistré
 
Re : Code Verifier Fichier a l'ouverture en Erreur

Bonjour Pierrejean, le Forum,

Merci pour ta reponse.
J'ai essaye de remplacer la variable FileSource par le vrai nom du fichier et il me donne la meme erreur.
meme erreur en ecrivant comme ca:
Workbooks(RepSource & "\" & Application.UserName & ".xls").SaveAs

Merci par avance
Salutations
 
Dernière édition:
Re : Code Verifier Fichier a l'ouverture en Erreur

Bonjour Foufoudora, Pierrejean

Essayez le code suivant.

Quand le fichier n'existe pas, il est créé par SaveAs, donc le fichier source n'est plus ouvert, et il ne faut donc pas écrire Workbooks(FileSource).Close

Quand le fichier existe, il est ouvert, mais il faut désactiver par Enable.Events son Workbook_Open()

Code:
Private Sub Workbook_Open()
Dim fso As Object, x As Boolean
Dim RepSource, FileSource As String
Set fso = CreateObject("Scripting.FileSystemObject")
RepSource = ThisWorkbook.Path
FileSource = ThisWorkbook.Name
x = fso.FileExists(RepSource & "\" & Application.UserName & ".xls")
Set fso = Nothing
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If x = True Then
Application.EnableEvents = False
Workbooks.Open (RepSource & "\" & Application.UserName & ".xls")
Application.EnableEvents = True
Sheets("Instructions").Activate
Workbooks(FileSource).Close
End If
ActiveWorkbook.SaveAs (RepSource & "\" & Application.UserName & ".xls")
Sheets("Instructions").Activate
End Sub
A+

Edit : attention, il manquait un E au 2ème EnableEvents
 
Dernière édition:
Re : Code Verifier Fichier a l'ouverture en Erreur

Bonjour Job75, Pierrejean, le Forum

Merci pour ta reponse Job75,

j'ai essaye ton code il fonctionne bien si le fichier n'existe pas. par contre j'ai une erreur code 438 : "Object doesn't support property or method" sur la ligne Application.Enablevents = True

Merci par avance
Salutations
 
Re : Code Verifier Fichier a l'ouverture en Erreur

Bonjour Job75, pierrejean, le forum

Merci beaucoup, ca fonctionne a merveille.
tu peux me donner l'explication si ca ne te derange pas. je cherche a comprendre
Merci par avance
Bonne journee
Salutations
 
Re : Code Verifier Fichier a l'ouverture en Erreur

Re

Quand le fichier n'existe pas, je pense que vous avez compris, SaveAs donne un nouveau nom au fichier, il n'est donc plus ouvert sous son ancien nom, mais avec l'ancien nom il existe toujours sur le dique dur.

Quand le fichier existe, la macro l'ouvre, mais n'oubliez pas qu'il possède la même macro Workbook_Open qui va donc s'exécuter si on ne la désactive pas. C'est le rôle de Application.EnableEvents = False qui désactive toute action des évènements (Open en est un). Il faut ensuite impérativement réactiver en donnant la valeur True.

Bien noter aussi que Workbooks(FileSource).Close arrête la macro immédiatement (donc pas besoin de Else dans le test).

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
903
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…