Bonjours,
tout d'abord merci pour ta réponse.... Mais il y a un ptit pb: je suis
débutant en VBA, et mes connaissances sont très limités. En résumé je ne
comprend pas grand chose à ce que tu m'a écris.
Du coup je vais reformuler le pb: Le principe, c'est que j'ai une macro
rataché à une zone de texte.
Voici cette macro:
Workbooks.Open ("C:Bandetype.xls")
ActiveWindow.WindowState = xlMaximized
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Application.WindowState = xlMaximized
Windows("Bandetype.xls").Close
Application.DisplayAlerts = False
Sheets("Création").Select
End Sub
Mon pb, c'est qu'une fois ma "nouvelle bande" créée, les macros affectées à
"bande type" ne fonctionnent plus. Serait-il possible, en quelques lignes, de
faire en sorte que les "bandes types" de mes macros se transforment en
"nouvelle bande" dans le nouveau classeur?
Merci d'avance...
--
Flo CharoSlt,
Voilà ce que ça donne sur des boutons, les macros affectent le classeur actif.
Ce module est enregistrer dans un classeur nommer en xla "Astuces.xla".
Tel que préciser, les fonctions de création et de supression de la barre
d'outils
sont appellées par les évènements d'ouverture/fermeture du classeur.
Option Explicit
Sub TestXLA()
If Not (ActiveWorkbook Is Nothing) Then
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil1").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil1").Select
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Sub Test()
If Not (ActiveWorkbook Is Nothing) Then
DoEvents
MsgBox "En cours !"
DoEvents
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Function AjoutMaBarre() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, Btn1, Btn2 As Object
On Error GoTo Err_Barre
Flag = SupprimeMaBarre
Flag = False
On Error Resume Next
Set BarreMenu = Application.CommandBars.Add("MaBarre")
With BarreMenu
Set Btn1 = .Controls.Add(msoControlButton)
With Btn1
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 70
'.Style = msoButtonCaption 'Si en rem FaceID assume
'passage paramètre dans une variable
'Chainnecommande = "'UnePourDeux """ & Btn1.Caption & """'"
.OnAction = "Module1.TestXLA" 'ChaineCommande
.TooltipText = "Test déplacement de feuille par XLA"
End With
Set Btn2 = .Controls.Add(msoControlButton)
With Btn2
.Caption = "Second bouton"
.FaceId = 71
.Style = msoButtonCaption 'Si en rem FaceID assume
.OnAction = "Module1.Test"
End With
.Position = msoBarTop
.Visible = True
End With
AjoutMaBarre = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMaBarre = False
Texte = "Erreur dans la routine AjoutMaBarre"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMaBarre() As Boolean
Dim MsgTexte As String
On Error Resume Next
Application.CommandBars("MaBarre").Delete
SupprimeMaBarre = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMaBarre = False
MsgTexte = "Erreur dans la routine SupprimeMaBarre du classeur
Astuces.xla!"
MsgTexte = MsgTexte & " et le classeur actif est :" & ActiveWorkbook.Name
MsgBox MsgTexte & vbCrLf & Err.Number & " - " & Err.Description
End Function
'bonjours,
Les macros sont accrochés sur des [bouton]
--
Flo Charore:
Les macros sont accrochés sur quel type d'objet !
menu][feuille] ?
Spécifie l'objet et je pourrai t'aider pour la syntaxe !
mousnynaoMerci, je vais essayer
--
Flo CharoBonjour,
Suggestion :
Gestion dynamique des liens !
Exemple de menu dynamique :
Les fonctions AjoutMonMenu et SupprimeMonMenu
sont appellés par
[ ThisWorkBook.Workbook_Open() & ThisWorkBook.Workbook_BeforeClose(Cancel As
Boolean) ]
Sub TestXLA()
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil3").Select
End Sub
'
Sub Test()
DoEvents
MsgBox "En cours !"
DoEvents
End Sub
'
Function AjoutMonMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object
On Error GoTo Err_Barre
Flag = SupprimeMonMenu
Flag = False
'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)
MaBarre.Caption = "Astuces"
'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 2579
End With
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Test"
.FaceId = 222
End With
AjoutMonMenu = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMonMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMonMenu() ' As Boolean
Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl
Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
Application.CommandBars("Worksheet Menu
Bar").Controls("Automatisme").Delete
End If
Next Cmpt
SupprimeMonMenu = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMonMenu = False
MsgBox "Erreur dans la routine SupprimeMenu du classeur MenuPerso!"
MsgBox Err.Number & " - " & Err.Description
End Function
mousnynaoBonjours et bonne année,
Je veux, à partir d'un classeur type, créer des classeurs spéfique à telle
ou telle personne, avec le nom de la personne concernée. J'arrive à copier
mon classeur type, et à le renomer, seulement je n'arrive pas à faire en
sorte que les macros s'addaptent aux nouveaux noms de mes classeurs. Y a-t-il
un moyen de mettre à jours les macro automatiquement ?
Merci d'avance...
--
Flo Charo
Bonjours,
tout d'abord merci pour ta réponse.... Mais il y a un ptit pb: je suis
débutant en VBA, et mes connaissances sont très limités. En résumé je ne
comprend pas grand chose à ce que tu m'a écris.
Du coup je vais reformuler le pb: Le principe, c'est que j'ai une macro
rataché à une zone de texte.
Voici cette macro:
Workbooks.Open ("C:Bandetype.xls")
ActiveWindow.WindowState = xlMaximized
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Application.WindowState = xlMaximized
Windows("Bandetype.xls").Close
Application.DisplayAlerts = False
Sheets("Création").Select
End Sub
Mon pb, c'est qu'une fois ma "nouvelle bande" créée, les macros affectées à
"bande type" ne fonctionnent plus. Serait-il possible, en quelques lignes, de
faire en sorte que les "bandes types" de mes macros se transforment en
"nouvelle bande" dans le nouveau classeur?
Merci d'avance...
--
Flo Charo
Slt,
Voilà ce que ça donne sur des boutons, les macros affectent le classeur actif.
Ce module est enregistrer dans un classeur nommer en xla "Astuces.xla".
Tel que préciser, les fonctions de création et de supression de la barre
d'outils
sont appellées par les évènements d'ouverture/fermeture du classeur.
Option Explicit
Sub TestXLA()
If Not (ActiveWorkbook Is Nothing) Then
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil1").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil1").Select
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Sub Test()
If Not (ActiveWorkbook Is Nothing) Then
DoEvents
MsgBox "En cours !"
DoEvents
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Function AjoutMaBarre() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, Btn1, Btn2 As Object
On Error GoTo Err_Barre
Flag = SupprimeMaBarre
Flag = False
On Error Resume Next
Set BarreMenu = Application.CommandBars.Add("MaBarre")
With BarreMenu
Set Btn1 = .Controls.Add(msoControlButton)
With Btn1
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 70
'.Style = msoButtonCaption 'Si en rem FaceID assume
'passage paramètre dans une variable
'Chainnecommande = "'UnePourDeux """ & Btn1.Caption & """'"
.OnAction = "Module1.TestXLA" 'ChaineCommande
.TooltipText = "Test déplacement de feuille par XLA"
End With
Set Btn2 = .Controls.Add(msoControlButton)
With Btn2
.Caption = "Second bouton"
.FaceId = 71
.Style = msoButtonCaption 'Si en rem FaceID assume
.OnAction = "Module1.Test"
End With
.Position = msoBarTop
.Visible = True
End With
AjoutMaBarre = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMaBarre = False
Texte = "Erreur dans la routine AjoutMaBarre"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMaBarre() As Boolean
Dim MsgTexte As String
On Error Resume Next
Application.CommandBars("MaBarre").Delete
SupprimeMaBarre = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMaBarre = False
MsgTexte = "Erreur dans la routine SupprimeMaBarre du classeur
Astuces.xla!"
MsgTexte = MsgTexte & " et le classeur actif est :" & ActiveWorkbook.Name
MsgBox MsgTexte & vbCrLf & Err.Number & " - " & Err.Description
End Function
'
bonjours,
Les macros sont accrochés sur des [bouton]
--
Flo Charo
re:
Les macros sont accrochés sur quel type d'objet !
menu][feuille] ?
Spécifie l'objet et je pourrai t'aider pour la syntaxe !
mousnynao
Merci, je vais essayer
--
Flo Charo
Bonjour,
Suggestion :
Gestion dynamique des liens !
Exemple de menu dynamique :
Les fonctions AjoutMonMenu et SupprimeMonMenu
sont appellés par
[ ThisWorkBook.Workbook_Open() & ThisWorkBook.Workbook_BeforeClose(Cancel As
Boolean) ]
Sub TestXLA()
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil3").Select
End Sub
'
Sub Test()
DoEvents
MsgBox "En cours !"
DoEvents
End Sub
'
Function AjoutMonMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object
On Error GoTo Err_Barre
Flag = SupprimeMonMenu
Flag = False
'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)
MaBarre.Caption = "Astuces"
'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 2579
End With
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Test"
.FaceId = 222
End With
AjoutMonMenu = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMonMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMonMenu() ' As Boolean
Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl
Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
Application.CommandBars("Worksheet Menu
Bar").Controls("Automatisme").Delete
End If
Next Cmpt
SupprimeMonMenu = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMonMenu = False
MsgBox "Erreur dans la routine SupprimeMenu du classeur MenuPerso!"
MsgBox Err.Number & " - " & Err.Description
End Function
mousnynao
Bonjours et bonne année,
Je veux, à partir d'un classeur type, créer des classeurs spéfique à telle
ou telle personne, avec le nom de la personne concernée. J'arrive à copier
mon classeur type, et à le renomer, seulement je n'arrive pas à faire en
sorte que les macros s'addaptent aux nouveaux noms de mes classeurs. Y a-t-il
un moyen de mettre à jours les macro automatiquement ?
Merci d'avance...
--
Flo Charo
Bonjours,
tout d'abord merci pour ta réponse.... Mais il y a un ptit pb: je suis
débutant en VBA, et mes connaissances sont très limités. En résumé je ne
comprend pas grand chose à ce que tu m'a écris.
Du coup je vais reformuler le pb: Le principe, c'est que j'ai une macro
rataché à une zone de texte.
Voici cette macro:
Workbooks.Open ("C:Bandetype.xls")
ActiveWindow.WindowState = xlMaximized
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Application.WindowState = xlMaximized
Windows("Bandetype.xls").Close
Application.DisplayAlerts = False
Sheets("Création").Select
End Sub
Mon pb, c'est qu'une fois ma "nouvelle bande" créée, les macros affectées à
"bande type" ne fonctionnent plus. Serait-il possible, en quelques lignes, de
faire en sorte que les "bandes types" de mes macros se transforment en
"nouvelle bande" dans le nouveau classeur?
Merci d'avance...
--
Flo CharoSlt,
Voilà ce que ça donne sur des boutons, les macros affectent le classeur actif.
Ce module est enregistrer dans un classeur nommer en xla "Astuces.xla".
Tel que préciser, les fonctions de création et de supression de la barre
d'outils
sont appellées par les évènements d'ouverture/fermeture du classeur.
Option Explicit
Sub TestXLA()
If Not (ActiveWorkbook Is Nothing) Then
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil1").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil1").Select
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Sub Test()
If Not (ActiveWorkbook Is Nothing) Then
DoEvents
MsgBox "En cours !"
DoEvents
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Function AjoutMaBarre() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, Btn1, Btn2 As Object
On Error GoTo Err_Barre
Flag = SupprimeMaBarre
Flag = False
On Error Resume Next
Set BarreMenu = Application.CommandBars.Add("MaBarre")
With BarreMenu
Set Btn1 = .Controls.Add(msoControlButton)
With Btn1
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 70
'.Style = msoButtonCaption 'Si en rem FaceID assume
'passage paramètre dans une variable
'Chainnecommande = "'UnePourDeux """ & Btn1.Caption & """'"
.OnAction = "Module1.TestXLA" 'ChaineCommande
.TooltipText = "Test déplacement de feuille par XLA"
End With
Set Btn2 = .Controls.Add(msoControlButton)
With Btn2
.Caption = "Second bouton"
.FaceId = 71
.Style = msoButtonCaption 'Si en rem FaceID assume
.OnAction = "Module1.Test"
End With
.Position = msoBarTop
.Visible = True
End With
AjoutMaBarre = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMaBarre = False
Texte = "Erreur dans la routine AjoutMaBarre"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMaBarre() As Boolean
Dim MsgTexte As String
On Error Resume Next
Application.CommandBars("MaBarre").Delete
SupprimeMaBarre = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMaBarre = False
MsgTexte = "Erreur dans la routine SupprimeMaBarre du classeur
Astuces.xla!"
MsgTexte = MsgTexte & " et le classeur actif est :" & ActiveWorkbook.Name
MsgBox MsgTexte & vbCrLf & Err.Number & " - " & Err.Description
End Function
'bonjours,
Les macros sont accrochés sur des [bouton]
--
Flo Charore:
Les macros sont accrochés sur quel type d'objet !
menu][feuille] ?
Spécifie l'objet et je pourrai t'aider pour la syntaxe !
mousnynaoMerci, je vais essayer
--
Flo CharoBonjour,
Suggestion :
Gestion dynamique des liens !
Exemple de menu dynamique :
Les fonctions AjoutMonMenu et SupprimeMonMenu
sont appellés par
[ ThisWorkBook.Workbook_Open() & ThisWorkBook.Workbook_BeforeClose(Cancel As
Boolean) ]
Sub TestXLA()
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil3").Select
End Sub
'
Sub Test()
DoEvents
MsgBox "En cours !"
DoEvents
End Sub
'
Function AjoutMonMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object
On Error GoTo Err_Barre
Flag = SupprimeMonMenu
Flag = False
'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)
MaBarre.Caption = "Astuces"
'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 2579
End With
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Test"
.FaceId = 222
End With
AjoutMonMenu = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMonMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMonMenu() ' As Boolean
Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl
Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
Application.CommandBars("Worksheet Menu
Bar").Controls("Automatisme").Delete
End If
Next Cmpt
SupprimeMonMenu = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMonMenu = False
MsgBox "Erreur dans la routine SupprimeMenu du classeur MenuPerso!"
MsgBox Err.Number & " - " & Err.Description
End Function
mousnynaoBonjours et bonne année,
Je veux, à partir d'un classeur type, créer des classeurs spéfique à telle
ou telle personne, avec le nom de la personne concernée. J'arrive à copier
mon classeur type, et à le renomer, seulement je n'arrive pas à faire en
sorte que les macros s'addaptent aux nouveaux noms de mes classeurs. Y a-t-il
un moyen de mettre à jours les macro automatiquement ?
Merci d'avance...
--
Flo Charo
"BandeType.xls" ?
Oui, j'ai effectivement d'autres macro dans ce classeur. De plus elles font
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
"BandeType.xls",
si j'ai bien compris bien sur.
re:
en premier je me permets queuques modifs sur la routine :
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Workbooks("Bandetype.xls").Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Création").Select
End Sub
Pour être sur qu'une macro soit intègre au classeur, tu indiques en début de
module [ Option Private Module ].
Ensuite, ce ne doit pas être cette macro qui est dans le fichier
"BandeType.xls",
si j'ai bien compris bien sur.
En fait, tu as d'autres macros qui se trouvent dans le classeur
"BandeType.xls" ?
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
Donc allons-y pas à pas !
Répond à ces 2 questions !
mousnynaoBonjours,
tout d'abord merci pour ta réponse.... Mais il y a un ptit pb: je suis
débutant en VBA, et mes connaissances sont très limités. En résumé je ne
comprend pas grand chose à ce que tu m'a écris.
Du coup je vais reformuler le pb: Le principe, c'est que j'ai une macro
rataché à une zone de texte.
Voici cette macro:
Workbooks.Open ("C:Bandetype.xls")
ActiveWindow.WindowState = xlMaximized
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Application.WindowState = xlMaximized
Windows("Bandetype.xls").Close
Application.DisplayAlerts = False
Sheets("Création").Select
End Sub
Mon pb, c'est qu'une fois ma "nouvelle bande" créée, les macros affectées à
"bande type" ne fonctionnent plus. Serait-il possible, en quelques lignes, de
faire en sorte que les "bandes types" de mes macros se transforment en
"nouvelle bande" dans le nouveau classeur?
Merci d'avance...
--
Flo CharoSlt,
Voilà ce que ça donne sur des boutons, les macros affectent le classeur actif.
Ce module est enregistrer dans un classeur nommer en xla "Astuces.xla".
Tel que préciser, les fonctions de création et de supression de la barre
d'outils
sont appellées par les évènements d'ouverture/fermeture du classeur.
Option Explicit
Sub TestXLA()
If Not (ActiveWorkbook Is Nothing) Then
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil1").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil1").Select
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Sub Test()
If Not (ActiveWorkbook Is Nothing) Then
DoEvents
MsgBox "En cours !"
DoEvents
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Function AjoutMaBarre() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, Btn1, Btn2 As Object
On Error GoTo Err_Barre
Flag = SupprimeMaBarre
Flag = False
On Error Resume Next
Set BarreMenu = Application.CommandBars.Add("MaBarre")
With BarreMenu
Set Btn1 = .Controls.Add(msoControlButton)
With Btn1
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 70
'.Style = msoButtonCaption 'Si en rem FaceID assume
'passage paramètre dans une variable
'Chainnecommande = "'UnePourDeux """ & Btn1.Caption & """'"
.OnAction = "Module1.TestXLA" 'ChaineCommande
.TooltipText = "Test déplacement de feuille par XLA"
End With
Set Btn2 = .Controls.Add(msoControlButton)
With Btn2
.Caption = "Second bouton"
.FaceId = 71
.Style = msoButtonCaption 'Si en rem FaceID assume
.OnAction = "Module1.Test"
End With
.Position = msoBarTop
.Visible = True
End With
AjoutMaBarre = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMaBarre = False
Texte = "Erreur dans la routine AjoutMaBarre"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMaBarre() As Boolean
Dim MsgTexte As String
On Error Resume Next
Application.CommandBars("MaBarre").Delete
SupprimeMaBarre = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMaBarre = False
MsgTexte = "Erreur dans la routine SupprimeMaBarre du classeur
Astuces.xla!"
MsgTexte = MsgTexte & " et le classeur actif est :" & ActiveWorkbook.Name
MsgBox MsgTexte & vbCrLf & Err.Number & " - " & Err.Description
End Function
'bonjours,
Les macros sont accrochés sur des [bouton]
--
Flo Charore:
Les macros sont accrochés sur quel type d'objet !
menu][feuille] ?
Spécifie l'objet et je pourrai t'aider pour la syntaxe !
mousnynaoMerci, je vais essayer
--
Flo CharoBonjour,
Suggestion :
Gestion dynamique des liens !
Exemple de menu dynamique :
Les fonctions AjoutMonMenu et SupprimeMonMenu
sont appellés par
[ ThisWorkBook.Workbook_Open() & ThisWorkBook.Workbook_BeforeClose(Cancel As
Boolean) ]
Sub TestXLA()
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil3").Select
End Sub
'
Sub Test()
DoEvents
MsgBox "En cours !"
DoEvents
End Sub
'
Function AjoutMonMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object
On Error GoTo Err_Barre
Flag = SupprimeMonMenu
Flag = False
'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)
MaBarre.Caption = "Astuces"
'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 2579
End With
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Test"
.FaceId = 222
End With
AjoutMonMenu = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMonMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMonMenu() ' As Boolean
Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl
Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
"BandeType.xls" ?
Oui, j'ai effectivement d'autres macro dans ce classeur. De plus elles font
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
"BandeType.xls",
si j'ai bien compris bien sur.
re:
en premier je me permets queuques modifs sur la routine :
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Workbooks("Bandetype.xls").Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Création").Select
End Sub
Pour être sur qu'une macro soit intègre au classeur, tu indiques en début de
module [ Option Private Module ].
Ensuite, ce ne doit pas être cette macro qui est dans le fichier
"BandeType.xls",
si j'ai bien compris bien sur.
En fait, tu as d'autres macros qui se trouvent dans le classeur
"BandeType.xls" ?
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
Donc allons-y pas à pas !
Répond à ces 2 questions !
mousnynao
Bonjours,
tout d'abord merci pour ta réponse.... Mais il y a un ptit pb: je suis
débutant en VBA, et mes connaissances sont très limités. En résumé je ne
comprend pas grand chose à ce que tu m'a écris.
Du coup je vais reformuler le pb: Le principe, c'est que j'ai une macro
rataché à une zone de texte.
Voici cette macro:
Workbooks.Open ("C:Bandetype.xls")
ActiveWindow.WindowState = xlMaximized
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Application.WindowState = xlMaximized
Windows("Bandetype.xls").Close
Application.DisplayAlerts = False
Sheets("Création").Select
End Sub
Mon pb, c'est qu'une fois ma "nouvelle bande" créée, les macros affectées à
"bande type" ne fonctionnent plus. Serait-il possible, en quelques lignes, de
faire en sorte que les "bandes types" de mes macros se transforment en
"nouvelle bande" dans le nouveau classeur?
Merci d'avance...
--
Flo Charo
Slt,
Voilà ce que ça donne sur des boutons, les macros affectent le classeur actif.
Ce module est enregistrer dans un classeur nommer en xla "Astuces.xla".
Tel que préciser, les fonctions de création et de supression de la barre
d'outils
sont appellées par les évènements d'ouverture/fermeture du classeur.
Option Explicit
Sub TestXLA()
If Not (ActiveWorkbook Is Nothing) Then
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil1").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil1").Select
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Sub Test()
If Not (ActiveWorkbook Is Nothing) Then
DoEvents
MsgBox "En cours !"
DoEvents
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Function AjoutMaBarre() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, Btn1, Btn2 As Object
On Error GoTo Err_Barre
Flag = SupprimeMaBarre
Flag = False
On Error Resume Next
Set BarreMenu = Application.CommandBars.Add("MaBarre")
With BarreMenu
Set Btn1 = .Controls.Add(msoControlButton)
With Btn1
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 70
'.Style = msoButtonCaption 'Si en rem FaceID assume
'passage paramètre dans une variable
'Chainnecommande = "'UnePourDeux """ & Btn1.Caption & """'"
.OnAction = "Module1.TestXLA" 'ChaineCommande
.TooltipText = "Test déplacement de feuille par XLA"
End With
Set Btn2 = .Controls.Add(msoControlButton)
With Btn2
.Caption = "Second bouton"
.FaceId = 71
.Style = msoButtonCaption 'Si en rem FaceID assume
.OnAction = "Module1.Test"
End With
.Position = msoBarTop
.Visible = True
End With
AjoutMaBarre = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMaBarre = False
Texte = "Erreur dans la routine AjoutMaBarre"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMaBarre() As Boolean
Dim MsgTexte As String
On Error Resume Next
Application.CommandBars("MaBarre").Delete
SupprimeMaBarre = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMaBarre = False
MsgTexte = "Erreur dans la routine SupprimeMaBarre du classeur
Astuces.xla!"
MsgTexte = MsgTexte & " et le classeur actif est :" & ActiveWorkbook.Name
MsgBox MsgTexte & vbCrLf & Err.Number & " - " & Err.Description
End Function
'
bonjours,
Les macros sont accrochés sur des [bouton]
--
Flo Charo
re:
Les macros sont accrochés sur quel type d'objet !
menu][feuille] ?
Spécifie l'objet et je pourrai t'aider pour la syntaxe !
mousnynao
Merci, je vais essayer
--
Flo Charo
Bonjour,
Suggestion :
Gestion dynamique des liens !
Exemple de menu dynamique :
Les fonctions AjoutMonMenu et SupprimeMonMenu
sont appellés par
[ ThisWorkBook.Workbook_Open() & ThisWorkBook.Workbook_BeforeClose(Cancel As
Boolean) ]
Sub TestXLA()
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil3").Select
End Sub
'
Sub Test()
DoEvents
MsgBox "En cours !"
DoEvents
End Sub
'
Function AjoutMonMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object
On Error GoTo Err_Barre
Flag = SupprimeMonMenu
Flag = False
'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)
MaBarre.Caption = "Astuces"
'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 2579
End With
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Test"
.FaceId = 222
End With
AjoutMonMenu = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMonMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMonMenu() ' As Boolean
Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl
Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
"BandeType.xls" ?
Oui, j'ai effectivement d'autres macro dans ce classeur. De plus elles font
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
"BandeType.xls",
si j'ai bien compris bien sur.
re:
en premier je me permets queuques modifs sur la routine :
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Workbooks("Bandetype.xls").Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Sheets("Création").Select
End Sub
Pour être sur qu'une macro soit intègre au classeur, tu indiques en début de
module [ Option Private Module ].
Ensuite, ce ne doit pas être cette macro qui est dans le fichier
"BandeType.xls",
si j'ai bien compris bien sur.
En fait, tu as d'autres macros qui se trouvent dans le classeur
"BandeType.xls" ?
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
Donc allons-y pas à pas !
Répond à ces 2 questions !
mousnynaoBonjours,
tout d'abord merci pour ta réponse.... Mais il y a un ptit pb: je suis
débutant en VBA, et mes connaissances sont très limités. En résumé je ne
comprend pas grand chose à ce que tu m'a écris.
Du coup je vais reformuler le pb: Le principe, c'est que j'ai une macro
rataché à une zone de texte.
Voici cette macro:
Workbooks.Open ("C:Bandetype.xls")
ActiveWindow.WindowState = xlMaximized
ActiveWorkbook.SaveCopyAs ("C:BandeNouvelle Bande.xls")
Workbooks.Open ("C:BandeNouvelle bande.xls")
Application.WindowState = xlMaximized
Windows("Bandetype.xls").Close
Application.DisplayAlerts = False
Sheets("Création").Select
End Sub
Mon pb, c'est qu'une fois ma "nouvelle bande" créée, les macros affectées à
"bande type" ne fonctionnent plus. Serait-il possible, en quelques lignes, de
faire en sorte que les "bandes types" de mes macros se transforment en
"nouvelle bande" dans le nouveau classeur?
Merci d'avance...
--
Flo CharoSlt,
Voilà ce que ça donne sur des boutons, les macros affectent le classeur actif.
Ce module est enregistrer dans un classeur nommer en xla "Astuces.xla".
Tel que préciser, les fonctions de création et de supression de la barre
d'outils
sont appellées par les évènements d'ouverture/fermeture du classeur.
Option Explicit
Sub TestXLA()
If Not (ActiveWorkbook Is Nothing) Then
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil1").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil1").Select
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Sub Test()
If Not (ActiveWorkbook Is Nothing) Then
DoEvents
MsgBox "En cours !"
DoEvents
Else
MsgBox "Aucun classeur d'actif !"
End If
End Sub
'
Function AjoutMaBarre() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, Btn1, Btn2 As Object
On Error GoTo Err_Barre
Flag = SupprimeMaBarre
Flag = False
On Error Resume Next
Set BarreMenu = Application.CommandBars.Add("MaBarre")
With BarreMenu
Set Btn1 = .Controls.Add(msoControlButton)
With Btn1
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 70
'.Style = msoButtonCaption 'Si en rem FaceID assume
'passage paramètre dans une variable
'Chainnecommande = "'UnePourDeux """ & Btn1.Caption & """'"
.OnAction = "Module1.TestXLA" 'ChaineCommande
.TooltipText = "Test déplacement de feuille par XLA"
End With
Set Btn2 = .Controls.Add(msoControlButton)
With Btn2
.Caption = "Second bouton"
.FaceId = 71
.Style = msoButtonCaption 'Si en rem FaceID assume
.OnAction = "Module1.Test"
End With
.Position = msoBarTop
.Visible = True
End With
AjoutMaBarre = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMaBarre = False
Texte = "Erreur dans la routine AjoutMaBarre"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMaBarre() As Boolean
Dim MsgTexte As String
On Error Resume Next
Application.CommandBars("MaBarre").Delete
SupprimeMaBarre = True
Exit_Close:
Exit Function
Err_Close:
SupprimeMaBarre = False
MsgTexte = "Erreur dans la routine SupprimeMaBarre du classeur
Astuces.xla!"
MsgTexte = MsgTexte & " et le classeur actif est :" & ActiveWorkbook.Name
MsgBox MsgTexte & vbCrLf & Err.Number & " - " & Err.Description
End Function
'bonjours,
Les macros sont accrochés sur des [bouton]
--
Flo Charore:
Les macros sont accrochés sur quel type d'objet !
menu][feuille] ?
Spécifie l'objet et je pourrai t'aider pour la syntaxe !
mousnynaoMerci, je vais essayer
--
Flo CharoBonjour,
Suggestion :
Gestion dynamique des liens !
Exemple de menu dynamique :
Les fonctions AjoutMonMenu et SupprimeMonMenu
sont appellés par
[ ThisWorkBook.Workbook_Open() & ThisWorkBook.Workbook_BeforeClose(Cancel As
Boolean) ]
Sub TestXLA()
ActiveWorkbook.Sheets("Feuil1").Select
MsgBox ActiveWorkbook.Sheets("Feuil2").Range("D4").Value
MsgBox ActiveWorkbook.Sheets("Feuil3").Range("D4").Value
ActiveWorkbook.Sheets("Feuil3").Select
End Sub
'
Sub Test()
DoEvents
MsgBox "En cours !"
DoEvents
End Sub
'
Function AjoutMonMenu() As Boolean
'
Dim Texte As String
Dim I As Integer
Dim Flag As Boolean
Dim BarreMenu, MaBarre, MonItem As Object
On Error GoTo Err_Barre
Flag = SupprimeMonMenu
Flag = False
'Création de la barre de menu
Set BarreMenu = Application.CommandBars.ActiveMenuBar
Set MaBarre = BarreMenu.Controls.Add(Type:=msoControlPopup,
temporary:=True)
MaBarre.Caption = "Astuces"
'Insère menu
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Test déplacement de feuille par XLA"
.OnAction = "Module1.TestXLA"
.FaceId = 2579
End With
Set MonItem = MaBarre.Controls.Add(Type:=msoControlButton)
With MonItem
.Caption = "Nouveau"
.OnAction = "Test"
.FaceId = 222
End With
AjoutMonMenu = True
Exit_Barre:
Exit Function
Err_Barre:
AjoutMonMenu = False
Texte = "Erreur dans la routine AjoutBarreMenu"
Texte = Texte & Chr(13) & Err.Number
Texte = Texte & Chr(13) & Err.Description
MsgBox Texte
Resume Next
End Function
'
Function SupprimeMonMenu() ' As Boolean
Dim Cmpt, Nombre As Integer
Dim Barre As CommandBarControl
Nombre = Application.CommandBars.ActiveMenuBar.Controls.Count
For Cmpt = 1 To Nombre
If
(Application.CommandBars.ActiveMenuBar.Controls.Item(Cmpt).Caption =
"Automatisme") Then
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
"BandeType.xls",
si j'ai bien compris bien sur.
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
"BandeType.xls",
si j'ai bien compris bien sur.
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
"BandeType.xls",
si j'ai bien compris bien sur.
Tout d'abord merci de ta patience et de ton aide....
Voilà je vais essayer de répondre à tes questions le plus clairement possible.
En fait, tu as d'autres macros qui se trouvent dans le classeur
"BandeType.xls" ?
Oui, j'ai effectivement d'autres macro dans ce classeur. De plus elles font
appelle au classeur "bande type", car elles me servent à voyager entre le
classeur "menu" et le classeur "bande type".
-->> donc quelques part dans ce code, on retrouve des instructions du genre:
Workbooks("BandeType.xls").Activate, ce sont ces lignes qu'il te faudra
modifier !
Le problème c'est qu'une fois mon classeur renommé "nouvelle bande", ces
macros ne fonctionnent plus. Ce que je voudrais, c'est que dans toutes les
macros de ce nouveau classeur "nouvelle bande", à chaque fois que la
référence "bande type" apparait, elle se transforme en "nouvelle bande".Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
Oui, l'objectif est de le fermer pour pouvoir rentrer mes données dans le
nouveau classeur. Il me faut le copier, et non juste changer son nom, car je
dois pouvoir le réutiliser pour créer d'autres classeurs à partir de celui ci.
-->> Ici avec ces lignes, le fichier est bel et bien recopié sous un nouveau
nom et non juste changer de nom !
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
Workbooks("Bandetype.xls").SaveAs ("C:BandeNouvelle Bande.xls")
Sheets("Création").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
En résumé !
Un fichier menu avec cette routine
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
Workbooks("Bandetype.xls").SaveAs ("C:BandeNouvelle Bande.xls")
Sheets("Création").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Un fichier BandeType.xls avec cette routine de test :
Sub TestClasseurActif()
MsgBox Workbooks(ThisWorkbook.Name).Name & vbCrLf & ActiveWorkbook.Name
End Sub
d'où cette macro comporte un objet particulier
[Workbooks(ThisWorkbook.Name).Activate]
qui devrait remplacer tout tes lignes qui appelle
[Workbooks("BandeType.xls").Activate].
Ainsi, une fois le nouveau fichier créé, tu verras que l'appel à la routine
[TestClasseurActif]
est bien détourné vers le bon classeur!
Ensuite, ce ne doit pas être cette macro qui est dans le fichier"BandeType.xls",
si j'ai bien compris bien sur.
Oui c'est bien ça. Cette macro se trouve dans un classeur "menu" qui permet
de créer de nouveaux classeurs "nouvelle bande".
-->> Pour te promener d'un classeur à l'autre, tu peux aussi toujours savoir
où tu es
avec la syntaxe suivante :
Sub TrouveClasseur()
Dim Classeur As Workbook
For Each Classeur In Workbooks
If (Classeur.Name = "Menu.xls") Then
MsgBox "Classeur trouvé"
Classeur.Activate
End If
Next Classeur
End Sub
voilà, je crois qu'avec cela ça devrait aller !
mousnynao
Tout d'abord merci de ta patience et de ton aide....
Voilà je vais essayer de répondre à tes questions le plus clairement possible.
En fait, tu as d'autres macros qui se trouvent dans le classeur
"BandeType.xls" ?
Oui, j'ai effectivement d'autres macro dans ce classeur. De plus elles font
appelle au classeur "bande type", car elles me servent à voyager entre le
classeur "menu" et le classeur "bande type".
-->> donc quelques part dans ce code, on retrouve des instructions du genre:
Workbooks("BandeType.xls").Activate, ce sont ces lignes qu'il te faudra
modifier !
Le problème c'est qu'une fois mon classeur renommé "nouvelle bande", ces
macros ne fonctionnent plus. Ce que je voudrais, c'est que dans toutes les
macros de ce nouveau classeur "nouvelle bande", à chaque fois que la
référence "bande type" apparait, elle se transforme en "nouvelle bande".
Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
Oui, l'objectif est de le fermer pour pouvoir rentrer mes données dans le
nouveau classeur. Il me faut le copier, et non juste changer son nom, car je
dois pouvoir le réutiliser pour créer d'autres classeurs à partir de celui ci.
-->> Ici avec ces lignes, le fichier est bel et bien recopié sous un nouveau
nom et non juste changer de nom !
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
Workbooks("Bandetype.xls").SaveAs ("C:BandeNouvelle Bande.xls")
Sheets("Création").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
En résumé !
Un fichier menu avec cette routine
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
Workbooks("Bandetype.xls").SaveAs ("C:BandeNouvelle Bande.xls")
Sheets("Création").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Un fichier BandeType.xls avec cette routine de test :
Sub TestClasseurActif()
MsgBox Workbooks(ThisWorkbook.Name).Name & vbCrLf & ActiveWorkbook.Name
End Sub
d'où cette macro comporte un objet particulier
[Workbooks(ThisWorkbook.Name).Activate]
qui devrait remplacer tout tes lignes qui appelle
[Workbooks("BandeType.xls").Activate].
Ainsi, une fois le nouveau fichier créé, tu verras que l'appel à la routine
[TestClasseurActif]
est bien détourné vers le bon classeur!
Ensuite, ce ne doit pas être cette macro qui est dans le fichier
"BandeType.xls",
si j'ai bien compris bien sur.
Oui c'est bien ça. Cette macro se trouve dans un classeur "menu" qui permet
de créer de nouveaux classeurs "nouvelle bande".
-->> Pour te promener d'un classeur à l'autre, tu peux aussi toujours savoir
où tu es
avec la syntaxe suivante :
Sub TrouveClasseur()
Dim Classeur As Workbook
For Each Classeur In Workbooks
If (Classeur.Name = "Menu.xls") Then
MsgBox "Classeur trouvé"
Classeur.Activate
End If
Next Classeur
End Sub
voilà, je crois qu'avec cela ça devrait aller !
mousnynao
Tout d'abord merci de ta patience et de ton aide....
Voilà je vais essayer de répondre à tes questions le plus clairement possible.
En fait, tu as d'autres macros qui se trouvent dans le classeur
"BandeType.xls" ?
Oui, j'ai effectivement d'autres macro dans ce classeur. De plus elles font
appelle au classeur "bande type", car elles me servent à voyager entre le
classeur "menu" et le classeur "bande type".
-->> donc quelques part dans ce code, on retrouve des instructions du genre:
Workbooks("BandeType.xls").Activate, ce sont ces lignes qu'il te faudra
modifier !
Le problème c'est qu'une fois mon classeur renommé "nouvelle bande", ces
macros ne fonctionnent plus. Ce que je voudrais, c'est que dans toutes les
macros de ce nouveau classeur "nouvelle bande", à chaque fois que la
référence "bande type" apparait, elle se transforme en "nouvelle bande".Et la ligne [Windows("Bandetype.xls").Close] ferme vraiment le fichier de
base ?
Oui, l'objectif est de le fermer pour pouvoir rentrer mes données dans le
nouveau classeur. Il me faut le copier, et non juste changer son nom, car je
dois pouvoir le réutiliser pour créer d'autres classeurs à partir de celui ci.
-->> Ici avec ces lignes, le fichier est bel et bien recopié sous un nouveau
nom et non juste changer de nom !
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
Workbooks("Bandetype.xls").SaveAs ("C:BandeNouvelle Bande.xls")
Sheets("Création").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
En résumé !
Un fichier menu avec cette routine
Sub TestVBA()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Workbooks.Open ("C:Bandetype.xls")
Workbooks("Bandetype.xls").SaveAs ("C:BandeNouvelle Bande.xls")
Sheets("Création").Select
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Un fichier BandeType.xls avec cette routine de test :
Sub TestClasseurActif()
MsgBox Workbooks(ThisWorkbook.Name).Name & vbCrLf & ActiveWorkbook.Name
End Sub
d'où cette macro comporte un objet particulier
[Workbooks(ThisWorkbook.Name).Activate]
qui devrait remplacer tout tes lignes qui appelle
[Workbooks("BandeType.xls").Activate].
Ainsi, une fois le nouveau fichier créé, tu verras que l'appel à la routine
[TestClasseurActif]
est bien détourné vers le bon classeur!
Ensuite, ce ne doit pas être cette macro qui est dans le fichier"BandeType.xls",
si j'ai bien compris bien sur.
Oui c'est bien ça. Cette macro se trouve dans un classeur "menu" qui permet
de créer de nouveaux classeurs "nouvelle bande".
-->> Pour te promener d'un classeur à l'autre, tu peux aussi toujours savoir
où tu es
avec la syntaxe suivante :
Sub TrouveClasseur()
Dim Classeur As Workbook
For Each Classeur In Workbooks
If (Classeur.Name = "Menu.xls") Then
MsgBox "Classeur trouvé"
Classeur.Activate
End If
Next Classeur
End Sub
voilà, je crois qu'avec cela ça devrait aller !
mousnynao