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

halimhamdi

XLDnaute Nouveau
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

  • Check liste 1704.xlsm
    62.6 KB · Affichages: 4
  • Test.xlsm
    80.5 KB · Affichages: 5

Dudu2

XLDnaute Barbatruc
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:

soan

XLDnaute Barbatruc
Inactif
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:

patricktoulon

XLDnaute Barbatruc
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 çà;)
 

patricktoulon

XLDnaute Barbatruc
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 ;)
 

Dudu2

XLDnaute Barbatruc
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().
 

Dudu2

XLDnaute Barbatruc
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
 

halimhamdi

XLDnaute Nouveau
Quand vous ouvrez les deux fichiers sur le bureau tu ne peut pas utiliser les deux seulement un seul fichier mais pour compléter les taches il faut utiliser les deux le premier pour traçabilité et le deuxième pour avoir un check list de suivi
 

Dudu2

XLDnaute Barbatruc
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.
 

Discussions similaires

Statistiques des forums

Discussions
299 774
Messages
1 979 031
Membres
206 527
dernier inscrit
LONESSA