Probléme macro disparait lors de l'enregistrement

chasseur44

XLDnaute Occasionnel
Bonjour Forum !
J'ai une macro qui me permet de créer un bouton et d'y associer une macro.
Macro que j'ai récupéré sur le forum et adapté à mon besoin (j'ai srcuté tous les topic mais en vain)


Sub crea_bouton_et_macro()

Dim Ws As Worksheet
Dim Obj As Object
Dim x As Integer

Set Ws = ActiveSheet
Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
With Obj
.Left = 180
.Top = 5
.Width = 190
.Height = 25
.Object.Caption = "Vision : Cumulé"
End With

With ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
x = .CountOfLines
.insertlines x + 1, "private Sub CommandButton1_Click()"
.insertlines x + 2, "cells(5,1).Select"
.insertlines x + 3, "If ActiveSheet.CommandButton1.Caption = ""Vision : Mensuel"" Then"
.insertlines x + 4, "ActiveWorkbook.ShowPivotTableFieldList = True"
.insertlines x + 5, " With ActiveSheet.PivotTables(""TCD3"").PivotFields(""Somme de Nombre d'heures"")"
.insertlines x + 6, " .Calculation = xlNormal"
.insertlines x + 7, " End With"
.insertlines x + 8, "ActiveSheet.PivotTables(""TCD3"").ColumnGrand = True"
.insertlines x + 9, "ActiveSheet.PivotTables(""TCD3"").RowGrand = True"
.insertlines x + 10, "ActiveSheet.CommandButton1.Caption = ""Vision : Cumulé"""
.insertlines x + 11, "ElseIf ActiveSheet.CommandButton1.Caption = ""Vision : Cumulé"" Then"
.insertlines x + 12, "ActiveWorkbook.ShowPivotTableFieldList = True"
.insertlines x + 13, "With ActiveSheet.PivotTables(""TCD3"").PivotFields(""Somme de Nombre d'heures"")"
.insertlines x + 14, " .Calculation = xlRunningTotal"
.insertlines x + 15, " .BaseField = ""Mois année"""
.insertlines x + 16, "End With"
.insertlines x + 17, "ActiveSheet.PivotTables(""TCD3"").ColumnGrand = True"
.insertlines x + 18, "ActiveSheet.PivotTables(""TCD3"").RowGrand = False"
.insertlines x + 19, "ActiveSheet.CommandButton1.Caption = ""Vision : Mensuel"""
.insertlines x + 20, "End if"
.insertlines x + 21, "End Sub"
End With

Range("A1").Select
End Sub


Cette macro fonctionne correctement (création du bouton et affectation de la macro dans la bonne feuille) mais quand j'ajoute ce module dans ma macro générale qui se termine par une sauvegarde (en xlsm) et une fermeture du fichier créée. je vois bien quand j'ouvre le fichier le bouton mais aucune macro affectée (en pas à pas je vois la macro qui s'affecte à la bonne feuille ds ma visu Projet de VBA) ?

Je tourne en rond ! Merci pour votre aide
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re Roland:) STAPLE le forum et Staple
Tu sais Roland, moi je cherche et avec tes propositions que j'ai déjà testé pour la plus part, cela ne marche toujours pas, mais je pense que windows 8.1 n'est pas étranger au problème car sur mon autre PC equipé de Windows Xp la macro me génère bien le fichier le bouton et la macro !!!
alors je vais faire un test de généré la macro création du bouton, dans le classeur de destination et ensuite de lancer la macro de ce même fichier pour voir si cela change la donne ou pas
en tout état de cause, je te tient au courant de mes petites tentatives
Non je rajoute je vs tiens informé Tous y compris Staple et aussi Staple
a+
Papou:)
 

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Bonsoir Roland:) chasseur STAPLE mj et tous (pardon à ceux que j'oublie c'est pour Staple)
bon alors moi j'ai bien avancé, cela ne marche pas mais, je sais pourquoi, du moins je ne sais pas le régler mais je vais vous l'expliquer.
On va dire que là ou je veux la macro c'est classeur2
Lorsque je lance la macro de création de macro et bouton, elle va bien s'écrire dans la feuille et craie bien le bouton dans le Classeur2, mais lorsque j'enregistre et que je ferme, le Classeur2 se ferme, mais pas le projet vba du classeur2, Si j'ouvre à nouveau le classeur2
là dans les projets vba j'ai deux fois Classeur2.xlsm , un seul Classeur2.xlsm d'ouvert, mais deux projets vba Classeur2.xlsm dont un qui contient bien le code vba que j'ai généré avec la macro.
Alors je ne sais pas pourquoi quand on ferme le classeur2 le projet vba du classeur2 ne se ferme pas avec lui , mais c'est sur que c'est cela le problème, du moins chez moi, et j'aimerais bien que Chasseur fasse le test et regarde cela
a+ à tous
Papou:)
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re Bonsoir Roland Staple,Jm Chasseur et Tous et Staple
Pour illustrer ce que j'ai écrit au Post 66
Je n'arrive pas à insérer mes deux captures d'écran, mais je vais les mettre en pièce jointe
Quel couillon c'est comme cela qu'il fallait faire, bref je ne l'avais jamais fait je saurai maintenant.
Et maintenant Messieurs vous avez devant les yeux un seul fichier ouvert Classeur2.xlsm avec Deux projets Vba !!!! ????
Elle est pas belle la vie, et dans un des deux projets il y a la macro, mais hélas pour moi pas dans le bon et pour chasseur c’est pareil c'est sur, ou à peu près
Si vous pouvez m'expliquer comment fermer impérativement le projet Vba avec le fichier du même nom, je suis preneur
(je ne pensais pas que l'on pouvait le faire, fermer le fichier sans le projet vba, mais vous avez les copies d'écran qui en attestent)
a+
Papou:)
 

Pièces jointes

  • 1.jpg
    1.jpg
    43.3 KB · Affichages: 100
  • 1.jpg
    1.jpg
    43.3 KB · Affichages: 111
  • 1.jpg
    1.jpg
    43.3 KB · Affichages: 99
  • 2.jpg
    2.jpg
    40 KB · Affichages: 101
  • 2.jpg
    2.jpg
    40 KB · Affichages: 100
  • 2.jpg
    2.jpg
    40 KB · Affichages: 90
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Bonsoir le forum chasseur44 , Paritec, MJ13


Personne n' a rebondi sur ce que j'écrivais plus bas
Et la principale différence à mon sens avec le code du premier message se situe ici
Dim Ws As Worksheet, wbKDest As Workbook, Obj As Object, cVBA$
Set wbKDest = Workbooks.Open(Filename:="C:\Temp\testJM.xlsm")
Set Ws = wbKDest.Sheets(1)

Le code du premier message utilisant ActiveWorkBook et ActiveSheet
(donc le classeur A contenant la macro et pas le classeur B où l'on doit créer le bouton et le code VBA s'y rattachant.

Le code soumis par chasseur44 dans le message #54 utilise encore ActiveWorkBook
alors que mon code qui fonctionne chez moi, non.

Qu'en pensez-vous ?
 

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re Staple le forum
si tu lis le post 66 et 67 et que tu regardes les miniatures tu vas l'expliquer comment ??
Deux projets VBA pour un fichier ouvert normal pour toi?
Et un des projets comporte la macro et l'autre du même nom est rigoureusement vide
Et ton code je l'ai essayé et il n'est pas plus miraculeux, il ne fonctionne pas chez moi, du moins si, il me fait le bouton et pas la macro après enregistrement fermeture et réouverture.
Merci d'ouvrir et de regarder les deux miniatures et tu verras les deux projets vba pour un seul fichier classeurs2.xlsm ouvert.
Et aussi comment tu expliques que le projet vba Classeur2.xlsm , un est toujours présent quand je ferme le classeur2.xlsm??
moi je suis preneur d'explications étant incapable de comprendre seul.
a+
Papou:)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re


Paritec
Relis mon précédent message ;)
Sur ta copie d'écran, on peut voir que tu utilises
Set wbKDest = ThisWorkBook
que chasseur44 utilise
Set wbKDest = ActiveWorkBook

alors que moi j'utilise
Set wbKDest = Workbooks.Open(Filename:="C:\Temp\testJM.xlsm")


D’où mes deux précédentes remarques à ce sujet
 

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re Staple le forum
bon alors tu es borné et quand tu ne veux pas comprendre, toi tu ne veux pas !!!!
La macro qui est affiché en feuille 1 sur la miniature 2 c'est la macro que j'ai généré avec la macro que j'ai fait pour mon test Paritec dans Classeur2.xlsm , mon fichier de départ étant lui Test.xlsm.
Mais c'est pas là le problème, le problème est que tu as vu l'explorateur vba ??? Tu as toi quand tu ouvres un fichier x.xlsm deux projets X.xlsm????
la réponse est non
J'ai fait des miniatures pour que vous voyez bien tous que avec un seul fichier Classeur2.xlsm ouvert, j'avais deux projets Classeurs2.xlsm
les deux miniatures montrent que si je sélectionne Feuil1 du projet Vba en haut je n'ai pas de Macro
et que en bas si je vais dans Feuil1 du projet Vba le deuxième du même nom, j'ai la macro générée par ma macro test du fichier Test.xlsm
a+
Papou:)

Voilà la macro ci-dessous qui a servi à générer la macro que tu vois dans Classeur2.xlsm
Car je me disais que si je mettais la macro directement dans le fichier et que je la lance du fichier je réglerais peut-être le problème, et c'est là, que j'ai vu que j'avais non pas un, mais deux projets vba pour un seul classeur ouvert Classeur2.xlsm

Code:
Sub test()
    Dim Ws As Worksheet, wbKDest As Workbook, Obj As Object, adr$, wb As Workbook, wbks As Workbook,x$
    adr = ThisWorkbook.Path
    Set wbks = ThisWorkbook
    Set wbKDest = Workbooks.Open(adr & "\" & "Classeur2.xlsm")
    Dim x$
    x = x & "Sub testparitec()" & vbCrLf
    x = x & "Dim Ws As Worksheet,wbKDest As Workbook, Obj As Object,x$" & vbCrLf
    x = x & "Set wbKDest = thisworkbook" & vbCrLf
    x = x & "Set Ws = wbKDest.Sheets(1)" & vbCrLf
    x = x & "Set Obj = Ws.OLEObjects.Add(ClassType:=""Forms.CommandButton.1"", Left:=180, Top:=5, Width:=190, Height:=25)" & vbCrLf
    x = x & "Obj.Object.Caption = ""Vision : Cumulé""" & vbCrLf
    x = x & "End Sub" & vbCrLf & vbCrLf
    x = x & "Private Sub CommandButton1_Click()" & vbCrLf
    x = x & "msgbox ""Coucou""" & vbCrLf
    x = x & "end sub" & vbCrLf & vbCrLf
    With wbKDest.VBProject.VBComponents(Sheets(1).CodeName).CodeModule
        .insertlines .CountOfLines + 1, x
    End With
    wbKDest.Close 1
    Workbooks.Open (adr & "\" & "Classeur2.xlsm")
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re

Paritec
Je ne suis par borné.
J'ai simplement émis une hypothèse sur laquelle personne n'avait donné son avis.
Bonsoir le forum chasseur44 , Paritec, MJ13
Personne n' a rebondi sur ce que j'écrivais plus bas
Qu'en pensez-vous ?
J'ai donc fait un up pour avoir vos avis.

Maintenant dans le code qui fonctionne chez moi, j'avais ajouté la référence au classeur dans tout la ligne
With wbKDest.VBProject.VBComponents(wbKDest.Sheets(1).CodeName).CodeModule
.insertlines .CountOfLines + 1, x
End With
(chose que tu ne fais pas dans le code de ton dernier message)
With wbKDest.VBProject.VBComponents(Sheets(1).CodeName).CodeModule
.insertlines .CountOfLines + 1, x
End With
 
Dernière édition:

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re Staple le forum
C'est impossible de converser avec toi, tu restes buté sur ton jugement sans même lire les réponses que l'on te fait
une question:
Quand tu ouvres un fichier x.xlsm, dans l'explorateur de vba tu as combien de projet x.xlsm??
si maintenant tu as la curiosité d'aller regarder attentivement mes miniatures on reparlera, avant cela ne servira à rien.
dans l'explorateur de VBA pas dans la partie droite
a+
papou:)

Edit : pour ne passer à coté de rien j'ai rajouté pour que tu ne puisses pas dire que je ne teste pas tes idées.
Code:
With wbKDest.VBProject.VBComponents(wbKDest.Sheets(1).CodeName).CodeModule
et là oh merveille, cela ne marche toujours pas mieux, et j'ai toujours deux projets vba du même nom
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re

Paritec
Si je restais sur mon jugement comme tu dis, je ne demanderai pas vos avis, non ?
et je ne vous poserai pas la question : "Qu'en pensez-vous ?"

J'ai regardé tes copies d'écran, et j'ai fait une remarque (pas une critique) pensant que cela pouvait expliquer le phénomène que tu rencontres.
 

Paritec

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re Staple le forum
tu n'as pas répondu pour le nombre de projet vba que tu avais pour un fichier ouvert??
regarde ce que j'ai dans l'explorateur après avoir lancé la macro test
Là tu en penses quoi?? moi je ne comprend pas mais il y a peut-être(même surement une explication) mais laquelle??
a+
Papou:)
 

Pièces jointes

  • 3.jpg
    3.jpg
    89.7 KB · Affichages: 106
  • 3.jpg
    3.jpg
    89.7 KB · Affichages: 100
  • 3.jpg
    3.jpg
    89.7 KB · Affichages: 96
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Re

Paritec
Je viens de tester ta macro
(mais je ne comprends pas pourquoi tu veux copier testparitec dans la feuille du classeur B)
La macro qui fonctionne chez moi (et c'est comme cela que j'avais compris la question initiale) doit créer un bouton et son code dans un classeur B à partir d'un code présent dans le classeur A.

Voila ce que j'ai dans VBE
(avec ta macro test, le bouton n'est pas créé, ni le code VBA dans la feuille 1 du classeur B.)
TESTPARITEC.jpg

Ci-dessous ta macroCi-dessous ma macro
Sub test()
Dim Ws As Worksheet, wbKDest As Workbook, Obj As Object, adr$, wb As Workbook, wbks As Workbook, x$
Set wbKDest = Workbooks.Open(Filename:="C:\Temp\testJM.xlsm")
x = x & "Sub testparitec()" & vbCrLf
x = x & "Dim Ws As Worksheet,wbKDest As Workbook, Obj As Object,x$" & vbCrLf
x = x & "Set wbKDest = thisworkbook" & vbCrLf
x = x & "Set Ws = wbKDest.Sheets(1)" & vbCrLf
x = x & "Set Obj = Ws.OLEObjects.Add(ClassType:=""Forms.CommandButton.1"", Left:=180, Top:=5, Width:=190, Height:=25)" & vbCrLf
x = x & "Obj.Object.Caption = ""Vision : Cumulé""" & vbCrLf
x = x & "End Sub" & vbCrLf & vbCrLf
x = x & "Private Sub CommandButton1_Click()" & vbCrLf
x = x & "msgbox ""Coucou""" & vbCrLf
x = x & "end sub" & vbCrLf & vbCrLf
With wbKDest.VBProject.VBComponents(wbKDest.Sheets(1).CodeName).CodeModule
.insertlines .CountOfLines + 1, x
End With
wbKDest.Close True
Workbooks.Open Filename:="C:\Temp\testJM.xlsm"
End Sub
Sub crea_bouton_et_macro_TESTOK()
Dim Ws As Worksheet, wbKDest As Workbook, Obj As Object, cVBA$
Set wbKDest = Workbooks.Open(Filename:="C:\Temp\testJM.xlsm")
Set Ws = wbKDest.Sheets(1)
Set Obj = Ws.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Left:=180, Top:=5, Width:=190, Height:=25)
Obj.Object.Caption = "Vision : Cumulé"
cVBA = "Private Sub CommandButton1_Click()" & vbCrLf
cVBA = cVBA & "Cells(1,1).Font.Bold=true" & vbCrLf
cVBA = cVBA & "Cells(1,1)=""TEST""" & vbCrLf
cVBA = cVBA & "End Sub" & vbCrLf
With wbKDest.VBProject.VBComponents(Ws.CodeName).CodeModule
.insertlines .CountOfLines + 1, cVBA
End With
wbKDest.Close True
Workbooks.Open Filename:="C:\Temp\testJM.xlsm"
End Sub
 

chasseur44

XLDnaute Occasionnel
Re : Probléme macro disparait lors de l'enregistrement

Bonjour Staple, Paritec et Cie
@Staple : Je viens de tester ta macro (un simple copier-coller ds un module) et malheureusement pour moi, le bouton OK, la Macro affectée KO
Copie d'écran :
Capturer.jpg
 

Pièces jointes

  • Capturer.jpg
    Capturer.jpg
    49.2 KB · Affichages: 96
  • Capturer.jpg
    Capturer.jpg
    49.2 KB · Affichages: 106
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Probléme macro disparait lors de l'enregistrement

Bien le bonjour à tous,

concernant le problème de Paritec expliqué aux post#66 et 67
classeur refermé et projet vba toujours présent j'ai déjà eu ça avec xp
!
maintenant je ne me souvient plus comment j'ai réglé ce problème ou si j'ai simplement laissé passer !?
mais il est vrai que c'est déroutant !

pour le reste, peut importe toutes les manières de procéder, il est inutile de tergiverser puisque le seul problème, au demeurant, c'est que la même macro que j'avais remise sur le fil qui venait de chasseur et modifié par Staple
cette même macro fonction chez moi et chez Staple mais pas chez Chasseur ni Paritec, c'est tout !?

il faut peut être en rester là pour l'instant avec cette simple macro et chercher ailleurs !


EDIT:
je confirme que la macro mis par Paritec ne fonctionne pas !

alors que celle de Staple fonctionne !
(j'avais eu un problème à cause d'un mauvais copier/coller !)

RE EDIT:

merci MJ13 pour le rappel de ce problème au post#80
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
164
Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 117
dernier inscrit
augustin.morille