Microsoft 365 ouvrir deux fichiers au même temps contient un programme Vba

  • Initiateur de la discussion Initiateur de la discussion halimhamdi
  • Date de début Date de début

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 !

halimhamdi

XLDnaute Junior
bonjour
j'ai un problème d'ouvrir deux fichiers au mem temps avec un programme vba , est ce que possible d'ouvrir deux classeurs et l'utiliser au même temps ou non !!je partage avec vous les deux fichiers pour voir le problème .
merci pour vos aide 🤗🤗🤗
 

Pièces jointes

Bonjour,
Bien sûr que c'est possible d'ouvrir 2 ou plus classeurs à partir du VBA.
Le dernier ouvert est le classeur actif.
VB:
Set WB1 = Workbooks.Open("<chemin complet>")
Set WB2 = Workbooks.Open("<chemin complet>")
Le Workbook qui exécute le code VBA est ThisWorkbook.
Il peut par exemple être réactivé avec Windows(ThisWorkbook.Name).Activate.
Pour activer l'un des autres ce sera Windows(WB1.Name).Activate.
Dans ce genre de cas, il plus qu'essentiel de bien qualifier complètement les références aux données:
<Workbook>.<Worksheet>.Range()

Si les classeurs ouverts ont du code dans leurs fonctions Workbook_Open() ou Auto _Open() il peut être inhibé en plaçant avant leur ouverture une Application.EnableEvents = False et l'inverse après.
 
Dernière édition:
Bonjour Dudu2, halimhamdi,

Si les classeurs ouverts ont du code dans leurs fonctions Workbook_Open() ou Auto _Open()

pour Auto_Open() : oh la la, que c'est vieux, ça ! 😄 c'était pour Excel 2003 (et versions antérieures) ! à partir d'Excel 2007, ça ne lit même pas Auto_Open() ! car même s'il est présent : il est tout simplement ignoré, et ça cherche s'il y a ou non Workbook_Open() ; petit détail : halimhamdi est sur Microsoft 365 ! 😜 donc c'est sûr qu'il n'utilise pas Excel 2003 (ou une version antérieure) !

pour toutes les infos que tu as écrites à propos de Application.EnableEvents = False, c'est très bien de les avoir mentionnées ! 🙂👍​

soan
 
Dernière édition:
Bonjour Dudu2, halimhamdi,



pour Auto_Open() : oh la la, que c'est vieux, ça ! 😄 c'était pour Excel 2003 (et versions antérieures) ! à partir d'Excel 2007, ça ne lit même pas Auto_Open() ! car même s'il est présent : il est tout simplement ignoré, et ça cherche s'il y a ou non Workbook_Open() ; petit détail : le demandeur est sur Microsoft 365 ! 😜 donc c'est sûr qu'il n'utilise pas Excel 2003 (ou une version antérieure) !



pour toutes les infos que tu as écrites à propos de Application.EnableEvents = False, c'est très bien de les avoir mentionnées ! 🙂👍​

soan
Bonjour @soan
sur les versions après 2007 il est déclenché après le workbook-open alors que sur 2007 c'est lui en premier qui était déclenché


c'est là toute l'astuce en fait

la solution est simple donc pour les versions +2007
transférer le code du workbook_open dans le sub auto_open
et voilà le code du classeur 2 ne sera exécuté uniquement si le classeur 2 est ouvert par l'utilisateur

oserais-je dire que cet event non implémenté est fait justement pour çà😉
 
re
une autre solution serait de faire un pseudo event workbook_open de remplacement de l'original
piloté par la sub auto_open


dans le classeur qui est sensé être ouvert par l'autre
dans le module thisworkbook
VB:
Public Sub Workbook2_Open()
MsgBox "coucou je suis ouvert par l'utilisateur"
End Sub
dans le module standard
VB:
Sub auto_open()
ThisWorkbook.Workbook2_Open
End Sub
essaie de l'ouvrir seul et par un autre 😉
 
Bonjour @soan, @patricktoulon, les visiteurs du dimanche,

En effet, je m'en suis servi une fois (Excel 2013, 2016) pour différencier une ouverture par l'utilisateur et une ouverture par macro d'un autre classeur. C'est pratique pour ça.
Parfois aussi je mets dans Auto _Open() du code que je devrais mettre dans Workbook_Open() pour avoir tout sous les yeux dans un module.
Il y a le symétrique Auto_Close().
 
Je précise que:
- Auto _Open() n'est pas déclenché si le classeur est ouvert par la macro d'un autre classeur.
- Auto_Close() n'est pas déclenché si le classeur est fermé par la macro d'un autre classeur.
Donc ce sont des fonctions qui valorisent le travail manuel
1656237828761.gif
1656237828780.gif
 
Quand vous ouvrez les deux fichiers sur le bureau tu ne peut pas utiliser les deux seulement un seul fichier
Qu'est-ce que tu veux dire par là ?
Quand j'ouvre les 2 fichiers il ne se passe rien, aucun problème.
Alors si tu veux exposer un dysfonctionnement, faudrait expliquer en quoi ça ne fonctionne pas précisément.
 
- 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

Réponses
5
Affichages
267
Réponses
40
Affichages
1 K
Réponses
72
Affichages
1 K
Retour