Ajouter une feuille au démarrage ???

  • Initiateur de la discussion Initiateur de la discussion cOx
  • 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 !

C

cOx

Guest
Bonjour,
Je voudrais savoir si il est possible d'ajouter une feuille à un classeur à l'ouverture d'un autre classeur.

Je m'explique :
-J'ai enregistré un classeur "1.xls" avec une seule feuille nommée "Infos".
-J'ouvre un classeur appelé "Toto.xls"

Et je voudrais qu'automatiquement la feuille "Infos" du classeur "1.xls" soit ajoutée au classeur "Toto.xls" lorsque j'ouvre ce dernier.

Je pense qu'il faudra écrire une macro dans le WorkbookOpen de "Toto.xls" mais je ne vois pas laquelle.

PS : La feuille "1.xls" s'incrémente donc si je renregistre une nouvelle fois "Infos" alors le fichier s'appelera "2.xls"...
C'est un détail qui à toute son importance, je pense

Merci d'avance
 
Salut cOx, le forum

Humm pas génial ton histoire de fichier qui change de nom pour faire une macro qui tienne la route... Sinon on va jouer avec des Windows.ActiveNext que je trouve dangereux...

Non le mieux est d'essayer de nommer tes fichiers source d'une manière plus cohérente que 1.xls puis 2.xls....

Par exemple, Source 1.xls, Source 2.xls

Ensuite sans faire de test, mais plus ou moins ce devrait être un code dans ce genre :

'Une premiere macro qui va faire le checking si un fichier "Source" se trouve bien ouvert... (1 seul) :

Dim Classeurs As Workbook

Private Sub Workbook_Open()
For Each Classeur In Workbooks

If Left(Classeur.Name, 6) = "Source" Then
i = i + 1
End If
Next
If i < 1 Then
MsgBox "Pas de Classeur Source Ouvert"
ElseIf i > 1 Then
MsgBox "Ambiguité détectée, plusieurs classeurs Source Ouverts"
Else
CopieInfo
End If
End Sub

'Si le checking est OK, alors on fait la Copie de la Feuille "Infos"...

Sub CopieInfo()
For Each Classeur In Workbooks

If Left(Classeur.Name, 6) = "Source" Then
Classeur.Activate
Classeur.Sheets("Infos").Copy Before:=ThisWorkbook.Sheets(1)
End If
Next
End Sub

Je pense que ce devrait marcher... En mettant donc ce code dans le private module "ThisWorkBook" du classeur cible ("Toto.xls")...

Bon Appétit
@+Thierry
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour