Bonjour à tous,
Mon problème est le suivant : je voudrais écrire une macro qui écrirait une macro dans ThisWorkbook. Cette macro se lancerait à l'ouverture du classeur et permettrait d'afficher l'onglet historique à chaque ouverture.
J'arrive à écrire dans ThisWorkbook en utilisant :
J'appelle ma fonction ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 .VBComponents(1).CodeModule 'et .InsertLines X + 1 "..."
La fonction qui écrit la macro d'affichage de l'onglet
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'destinationWorkbook.KeepChangeHistory = True 'active le suivi des révisions 'destinationWorkbook.SaveAs AccessMode:=xlShared 'partage le classeur ce qui est obligatoire pour que le suivi fonctionne mais cette ligne 'fait planter Excel sans déclencher d'erreur (chargement infini...) CreateMacroInThisWorkbook
Sans macro, il faut activer le suivi puis sauvegarder avant de pouvoir faire apparaître l'onglet historique.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Function CreateMacroInThisWorkbook() Dim Line As Integer With destinationWorkbook.VBProject.VBComponents(1).CodeModule Line = .CountOfLines .InsertLines Line + 1, "Private Sub Workbook_Open()" .InsertLines Line + 2, "With ThisWorkbook" .InsertLines Line + 3, ".HighlightChangesOptions When:=xlAllChanges, Who:=""Tous""" .InsertLines Line + 4, ".ListChangesOnNewSheet = True" .InsertLines Line + 5, ".HighlightChangesOnScreen = False" .InsertLines Line + 6, "End With" .InsertLines Line + 7, "End Sub" End With End Function
Si le classeur n'est pas partagé, pas de suivi possible. Si le classeur est partagé pas d'édition de macro possible (on ne peut même pas les afficher).
La méthode .HighlightChangesOptions échoue la plupart du temps. Si j'écris d'abord la macro puis active le suivi et sauvegarde, il se passe quelque chose au démarrage (chargement), mais l'historique ne s'affiche pas.
C'est sûrement très simple, mais je ne comprends pas comment parvenir à contourner cette difficulté !
Auriez-vous des pistes ?
Merci![]()
Partager