Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:\ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Merci de ta réponse.
Peux-tu me donner quelques idées pour la détruire ? Et surtout comment
la
recréer ?
L'enregistreur de Macro ne veut rien savoir lorsque j'affecte les
Macros à
mes boutons.
Merci d'avance
JacquesBonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur.
Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" a écrit dans le message
de
news:Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Merci de ta réponse.
Peux-tu me donner quelques idées pour la détruire ? Et surtout comment
la
recréer ?
L'enregistreur de Macro ne veut rien savoir lorsque j'affecte les
Macros à
mes boutons.
Merci d'avance
Jacques
Bonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur.
Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" <anonymous@discussions.microsoft.com> a écrit dans le message
de
news: 421063C5.D9D4B6CA@discussions.microsoft.com...
Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:\ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Merci de ta réponse.
Peux-tu me donner quelques idées pour la détruire ? Et surtout comment
la
recréer ?
L'enregistreur de Macro ne veut rien savoir lorsque j'affecte les
Macros à
mes boutons.
Merci d'avance
JacquesBonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur.
Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" a écrit dans le message
de
news:Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Bonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur. Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" a écrit dans le message de
news:Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Bonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur. Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: 421063C5.D9D4B6CA@discussions.microsoft.com...
Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:\ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Bonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur. Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" a écrit dans le message de
news:Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Essaie le code suivant. Je pense qu'il pourrait facilement être améliorer
notamment en allant faire un tour du côté du site de F. SIGONNEAU
(http://frederic.sigonneau.free.fr/).
Enfin, normalement, ça marche.
Public Sub DetruitBarre(maBarre As String)
Dim tb As CommandBar
For Each tb In CommandBars
If tb.Name = maBarre Then _
Toolbars(maBarre).Delete
Next
End Sub
Public Sub CreerBarre(maBarre As String)
Dim tb As Variant
Set tb = CommandBars.Add(Name:=maBarre, Position:=msoBarFloating)
' ********* Section à répéter autant de fois qu'il y a de boutons à
créer
Set tb = CommandBars(maBarre).Controls.Add(Type:=msoControlButton)
With tb
.BeginGroup = True
.Caption = "Ici le texte de l'infobulle"
.FaceId = 195 'ici le numéro correspond au dessin à intégré
.OnAction = "maMacro"
End With
' ********* fin de section
End Sub
Public Sub maMacro()
MsgBox "Ici le code de maMacro quand je clique sur le bouton de maBarre"
End Sub
Public Sub test()
' A insérer dans le code "Workbook_Open" du module thisWorkBook
DetruitBarre "MaBarreAMoi"
CreerBarre "MaBarreAMoi"
Application.CommandBars("MaBarreAMoi").Visible = True
Application.CommandBars("MaBarreAMoi").Position = 0
End Sub
Public Sub test1()
' A insérer dans le code "Workbook_BeforeClose" du modue ThisWorkBook :
attention à bien gérer
' la non-sortie.
DetruitBarre "MaBarreAMoi"
End Sub
Bruno
"JacquesH" a écrit dans le message de
news:Merci de ta réponse.
Peux-tu me donner quelques idées pour la détruire ? Et surtout comment
la
recréer ?
L'enregistreur de Macro ne veut rien savoir lorsque j'affecte les
Macros à
mes boutons.
Merci d'avance
JacquesBonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur.
Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" a écrit dans le message
de
news:Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Essaie le code suivant. Je pense qu'il pourrait facilement être améliorer
notamment en allant faire un tour du côté du site de F. SIGONNEAU
(http://frederic.sigonneau.free.fr/).
Enfin, normalement, ça marche.
Public Sub DetruitBarre(maBarre As String)
Dim tb As CommandBar
For Each tb In CommandBars
If tb.Name = maBarre Then _
Toolbars(maBarre).Delete
Next
End Sub
Public Sub CreerBarre(maBarre As String)
Dim tb As Variant
Set tb = CommandBars.Add(Name:=maBarre, Position:=msoBarFloating)
' ********* Section à répéter autant de fois qu'il y a de boutons à
créer
Set tb = CommandBars(maBarre).Controls.Add(Type:=msoControlButton)
With tb
.BeginGroup = True
.Caption = "Ici le texte de l'infobulle"
.FaceId = 195 'ici le numéro correspond au dessin à intégré
.OnAction = "maMacro"
End With
' ********* fin de section
End Sub
Public Sub maMacro()
MsgBox "Ici le code de maMacro quand je clique sur le bouton de maBarre"
End Sub
Public Sub test()
' A insérer dans le code "Workbook_Open" du module thisWorkBook
DetruitBarre "MaBarreAMoi"
CreerBarre "MaBarreAMoi"
Application.CommandBars("MaBarreAMoi").Visible = True
Application.CommandBars("MaBarreAMoi").Position = 0
End Sub
Public Sub test1()
' A insérer dans le code "Workbook_BeforeClose" du modue ThisWorkBook :
attention à bien gérer
' la non-sortie.
DetruitBarre "MaBarreAMoi"
End Sub
Bruno
"JacquesH" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: 42107B64.BF619E90@discussions.microsoft.com...
Merci de ta réponse.
Peux-tu me donner quelques idées pour la détruire ? Et surtout comment
la
recréer ?
L'enregistreur de Macro ne veut rien savoir lorsque j'affecte les
Macros à
mes boutons.
Merci d'avance
Jacques
Bonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur.
Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" <anonymous@discussions.microsoft.com> a écrit dans le message
de
news: 421063C5.D9D4B6CA@discussions.microsoft.com...
Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:\ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques
Essaie le code suivant. Je pense qu'il pourrait facilement être améliorer
notamment en allant faire un tour du côté du site de F. SIGONNEAU
(http://frederic.sigonneau.free.fr/).
Enfin, normalement, ça marche.
Public Sub DetruitBarre(maBarre As String)
Dim tb As CommandBar
For Each tb In CommandBars
If tb.Name = maBarre Then _
Toolbars(maBarre).Delete
Next
End Sub
Public Sub CreerBarre(maBarre As String)
Dim tb As Variant
Set tb = CommandBars.Add(Name:=maBarre, Position:=msoBarFloating)
' ********* Section à répéter autant de fois qu'il y a de boutons à
créer
Set tb = CommandBars(maBarre).Controls.Add(Type:=msoControlButton)
With tb
.BeginGroup = True
.Caption = "Ici le texte de l'infobulle"
.FaceId = 195 'ici le numéro correspond au dessin à intégré
.OnAction = "maMacro"
End With
' ********* fin de section
End Sub
Public Sub maMacro()
MsgBox "Ici le code de maMacro quand je clique sur le bouton de maBarre"
End Sub
Public Sub test()
' A insérer dans le code "Workbook_Open" du module thisWorkBook
DetruitBarre "MaBarreAMoi"
CreerBarre "MaBarreAMoi"
Application.CommandBars("MaBarreAMoi").Visible = True
Application.CommandBars("MaBarreAMoi").Position = 0
End Sub
Public Sub test1()
' A insérer dans le code "Workbook_BeforeClose" du modue ThisWorkBook :
attention à bien gérer
' la non-sortie.
DetruitBarre "MaBarreAMoi"
End Sub
Bruno
"JacquesH" a écrit dans le message de
news:Merci de ta réponse.
Peux-tu me donner quelques idées pour la détruire ? Et surtout comment
la
recréer ?
L'enregistreur de Macro ne veut rien savoir lorsque j'affecte les
Macros à
mes boutons.
Merci d'avance
JacquesBonjour Jacques,
Pour éviter ce genre de désagrément tu devrais détruire puis recréer
dynamiquement ta barre d'outils au démarrage de ton classeur.
Eventuellement
tu peux aussi la détruire à la fermeture du classeur.
Cordialement,
Bruno
"JacquesH" a écrit dans le message
de
news:Bonjour à toutes et à tous,
Je viens régulièrement sur le forum et dans ses archives pour
trouver réponse à mes problèmes (tout le code ci-après vient déjà d'ici
et j'en remercie au passage tous les contributeurs), mais là je ne
trouve rien et je me décide à demander l'avis des spécialistes.
Voici en résumé les éléments de mon problème :
J'ai une Macro à la fermeture d'un fichier qui l'archive sous un
autre nom et efface les modules et Macro de la version archivée.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Nom_Fichier As String
'Archive le fichier en cours avec un nom contenu dans la cellule A30
ActiveWorkbook.Save
Nom_Fichier = Sheets("Vérif. Nb ").Range("A30").Value
ChDir "G:ArchivesAnnée en cours"
ActiveWorkbook.SaveAs FileName:=Nom_Fichier, _
FileFormat:=xlNormal
'Efface les modules et macros divers du fichier archivé.
Dim VBC As Object
With ActiveWorkbook.VBProject
For Each VBC In .VBComponents
If VBC.Type = 100 Then
With VBC.CodeModule
.DeleteLines 1, .CountOfLines
.CodePane.Window.Close
End With
Else: .VBComponents.Remove VBC
End If
Next VBC
End With
ActiveWorkbook.Save
End Sub
Jusqu'à là tout va bien, le fichier archivé n'a plus les Macro et
celles de l'original fonctionnent très bien lorsque je l'ouvre à
nouveau.
J'ai voulu améliorer mon système en affichant à l'ouverture du
fichier original une barre d'outils personnalisée avec des boutons qui
font référence à des Macro de ce fichier.
Private Sub Workbook_Open()
Application.CommandBars("Choix_Sélection").Visible = True
End Sub
Dans la Macro de fermeture, j'ai ajouté :
Application.CommandBars("Choix_Sélection").Visible = False
Là encore tout va bien si je teste uniquement cette partie.
Mes soucis ont commencé lorsque j'ai compilé l'ensemble :
Quand je clique sur les boutons de ma barre d'outils, les Macros ne
fonctionnent plus correctement car elles ne font plus référence à mon
fichier original mais à celui archivé : elles ouvrent donc le fichier
archivé et comme il n'y a plus de Macro.
Pourtant les Macros de mon fichier original sont toujours correctes et
fonctionnent très bien si je ne passe pas par les boutons de ma barre.
Merci de votre aide.
Jacques