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:

MJ13

XLDnaute Barbatruc
Dernière édition:

MJ13

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

Re

Sinon, j'ai une autre méthode pour insérer des codes dans un fichier, avec la sauvegarde de modules en .bas dans un dossier C:\Temp.

Il suffit de suivre la procédure dans ce fichier :).

Si vous pouvez tester et me dire si cela fonctionne chez vous :confused:.
 

Pièces jointes

  • Log.xlsm
    30.7 KB · Affichages: 99
Dernière édition:

Roland_M

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

Bonjour MJ13

franchement c'est un peu trop lourd !?
j'ai essayé mais ça plante, je me retrouve avec des codes idem en double dans le même classeur !?
et pas facile à suivre car l'explication sur la feuille dans log est supprimée après lancement de la macro

j'ai donc pris note, mais il n'y a pas de code dans le nouveau classeur pour lancer la dernière opération !?
 

MJ13

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

Re Roland

Atention, j'ai modifié le fichier car j'avais eu des problèmes :eek:.

Sinon, tu te fais une copie d'écran (touche Impr Ecran puis ctrl + v dans word) sur Word avant de lancer la procédure :). Il faut avoir toujours le fichier Log d'ouvert et lancer la procédure à partir du fichier Log en étant sur le nouveau classeur avec Alt + F8) :confused:. Puis tu refermes le classeur Log, tu enregistres le nouveau classeur et tu le rouvre pour voir si cela fonctionne en cliquant sur les boutons. Le but au final serait de faire un xlam.

C'est surtout fait pour avoir une liste d'onglets à garder sur un fichier qui comprend beaucoup de feuilles. C'est plus le principe qui est important :).
 
Dernière édition:

Paritec

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

Bonjour Roland:) et Michel:) et tous
bon alors les amis vous vous savez lire, c'est super, vous avez donc bien vu l'histoire des deux projets vba du même nom !!!
Monsieur Staple lui apparemment , il dit ne pas avoir la tête dur, mais lui il ne l'a pas vu cet explorateur de Vba avec deux projets vba du même nom ouvert, c'est consternant !!
Il est resté focalisé sur sa macro, alors je te le dis Staple ta macro elle est parfaite, comme toi:).
Sa macro Fonctionne il l'a testé et la mienne non, et je pense qu'il l'a bien fait car il est compétent là je ne le dénigrerai pas, par contre quand il a une idée dans la tête!!! bref passons. Et effectivement la mienne j'avais oublié des bouts mais post 87 c'est modifié.
Je vais regarder ce que Michel donne comme solution pour l'ajout de macro, mais déjà un .bas oui cela me cause
je regarde et je reviens vs dire si je ne comprend rien
Roland:) tu m'as fait marré quand tu as écrit je ne sais plus quel post deux ou trois avant, je ne sais plus ce que j'ai fait, ou alors j'ai laissé tombé simplement !!!!
Je n'aime pas m'avouer vaincu comme cela, je vais donc encore un peu chercher, mais il est possible que cela se termine comme cité juste avant par Roland:)
Roland:) pour la macro je n'ai pas chercher à la faire fonctionner, car des que j'ai vu le problème des 2 projets vba ouvert j'ai simplement laissé la macro telle que sans même la finir, et j'ai commencé à vous écrire pour expliquer ce problème de 2 projets vba ouvert du même nom, et toi tu me dis l'avoir eu aussi sous xp, alors que moi la macro je ne sais plus laquelle mais celle de chasseur je crois sous xp elle me fait bien la fonction d'origine, créer le bouton et la macro et à la réouverture tout est là., mais avec XP et un autre PC , mais pas avec windows8.1 mon Pc et excel2010
Michel:) je saute sur ton fichier et les explications
a+
Papou:)
 
Dernière édition:

Paritec

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

Bonsoir Roland staple Michel chasseur tous le forum
maintenant moi j'arrive avec cette macro à conserver le bouton et la macro
Ne me demandez pas pourquoi, mais quand je lance la macro dans le fichier destination là c'est tout bon et je n'ai plus les deux projets vba du même nom ouvert .
Voilà pour Staple que je remercie, (même si je ne suis pas toujours d'accord avec lui!!) pour la déclaration ws.codemodule, car je l'avais oublié, mais mon idée première était de créer la macro dans le fichier de destination, de ne pas fermer et de lancer la macro du fichier dans lequel on avait écrit la macro, et là c'est OK tout reste à la fermeture chez moi, donc je pense que si chasseur tente chez lui cela va marcher aussi, car à la finale c'est pour chasseur cette macro.
a+
Papou:)
VB:
Sub test()
    Dim Ws As Worksheet, wbKDest As Workbook, Obj As Object, adr$, wb As Workbook, wbks As Workbook
    adr = ThisWorkbook.Path
    Set wbks = ThisWorkbook
    Set Ws = wbks.Sheets(1)
    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(Ws.CodeName).CodeModule
        .insertlines .CountOfLines + 1, x
    End With
    Application.Run "Classeur2.xlsm!feuil1.testparitec"
    wbKDest.Close 1
End Sub
 
Dernière édition:

Roland_M

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

Bonjour à tous,

Paritec, tu dis (que je dis)

Roland tu m'as fait marré quand tu as écrit je ne sais plus quel post deux ou trois avant, je ne sais plus ce que j'ai fait, ou alors j'ai laissé tombé simplement !!!!
Je n'aime pas m'avouer vaincu comme cela, je vais donc encore un peu chercher, mais il est possible que cela se termine comme cité juste avant par Roland

mais tu sais moi c'est pareil j'abandonne pas facilement.
mais pourquoi j'ai dis que peut être j'avais laissé tomber, c'est parce que ce problème n'est apparu que qq fois seulement !
ne le voyant plus j'ai laissé tomber car je n'arrivai plus à le reproduire !

allez, sur ce, bonne journée à tous !
perso je vais au repas des anciens élèves de mon village de naissance.
 

Staple1600

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

Bonjour à tous

Paritec
Bonjour Roland:) et Michel:) et tous
bon alors les amis vous vous savez lire, c'est super, vous avez donc bien vu l'histoire des deux projets vba du même nom !!!
Monsieur Staple lui apparemment , il dit ne pas avoir la tête dur, mais lui il ne l'a pas vu cet explorateur de Vba avec deux projets vba du même nom ouvert, c'est consternant !!
Il est resté focalisé sur sa macro, alors je te le dis Staple ta macro elle est parfaite, comme toi:).
Avant de tenir ces propos peu amènes, merci de lire tous mes messages ...:rolleyes:
Notamment celui-ci (message du 29/04/2015)
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.
C'est bien ton code VBA que l'on voit dans ma copie d'écran, non ?
 

Paritec

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

Re Staple le forum
je t'ai posé une question et bien que tu tournes autour du pot, tu n'as pas répondu!!
Est-ce que toi, quand tu ouvres un fichier .xlsm, tu as deux projets vba avec le même nom pour un seul fichier ouvert ??? Comme moi j'ai dans les miniatures que j'ai mis dans mon post 67 de mémoire??
Le problème de macro que ce soit la tienne ou la mienne n'a rien à voir avec ma demande, la macro n'était pas finie, et maintenant elle l'est, et je ne l'avais pas terminé, car quand j'ai vu que j'avais deux projets vba avec le même nom , pour un seul fichier d'ouvert, je n'ai pas été plus loin que d'essayer de comprendre pourquoi moi j'avais deux projets vba du même nom.
Et je t'ai demandé de regardé si toi tu avais deux projets vba du même nom et tu n'as jamais répondu, du moins pas sur ce sujet, et c'est bien le seul qui m'intéresse vraiment, car dans l'un deux deux la macro généré par le code(même s'il n'était pas fini) était bien présent dans un des deux projets vba qui AVAIENT LE MÊME NOM.
Bref, la réponse, pourquoi je voulais écrire la macro complète dans le fichier de destination, c'était pour faire ce que j'ai fait dans le dernier post que j'ai laissé, pour lancer la macro du fichier destination et là chez moi maintenant cela marche et je n'ai plus deux projets VBA du même nom, mais un seul et après fermeture et réouverture la macro et le bouton sont bien là.
Alors que avec ta macro à toi, je n'y arrive pas, même si tu penses que je n'ai pas su la recopier, ce qui n'est pas le cas sois en certain!!
Cela n'explique tout de même pas, pourquoi je pouvais avoir deux projets vba avec le même nom, avec un seul fichier ouvert de ce nom, ce qui est normalement impossible, tu en conviendras tout de même, et pourtant mes miniatures te montrent bien que c'est ce que j'obtenais!!!
bonne journée
Papou:)
 
Dernière édition:

chasseur44

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

Bonjour à Tous (Staple, Paritec, MJ13 ...)
J'ai résolu mon souci , quand même grace à vous et avec bcp de sueur !
Je dépose ici mon code final (testé sur plusieurs "machines") et enfin cela marche

Sub crea_bouton_et_macro_ht()
Dim Ws As Worksheet, wbKDest As Workbook, Obj As Object, cVBA$
Set wbKDest = ActiveWorkbook
Set Ws = wbKDest.Sheets("Suivi des heures travaillées")
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(5,1).Select" & vbCrLf
cVBA = cVBA & "If ActiveSheet.CommandButton1.Caption = ""Vision : Mensuel"" Then" & vbCrLf
cVBA = cVBA & " With ActiveSheet.PivotTables(""TCD3"").PivotFields(""Somme de Nombre d'heures"")" & vbCrLf
cVBA = cVBA & " .Calculation = xlNormal" & vbCrLf
cVBA = cVBA & " End With" & vbCrLf
cVBA = cVBA & "ActiveSheet.PivotTables(""TCD3"").ColumnGrand = True" & vbCrLf
cVBA = cVBA & "ActiveSheet.PivotTables(""TCD3"").RowGrand = True" & vbCrLf
cVBA = cVBA & "ActiveWorkbook.ShowPivotTableFieldList = False" & vbCrLf
cVBA = cVBA & "ActiveSheet.CommandButton1.Caption = ""Vision : Cumulé""" & vbCrLf
cVBA = cVBA & "ElseIf ActiveSheet.CommandButton1.Caption = ""Vision : Cumulé"" Then" & vbCrLf
cVBA = cVBA & " With ActiveSheet.PivotTables(""TCD3"").PivotFields(""Somme de Nombre d'heures"")" & vbCrLf
cVBA = cVBA & " .Calculation = xlRunningTotal" & vbCrLf
cVBA = cVBA & " .BaseField = ""Mois année""" & vbCrLf
cVBA = cVBA & " End With" & vbCrLf
cVBA = cVBA & "ActiveSheet.PivotTables(""TCD3"").ColumnGrand = True" & vbCrLf
cVBA = cVBA & "ActiveSheet.PivotTables(""TCD3"").RowGrand = False" & vbCrLf
cVBA = cVBA & "ActiveWorkbook.ShowPivotTableFieldList = False" & vbCrLf
cVBA = cVBA & "ActiveSheet.CommandButton1.Caption = ""Vision : Mensuel""" & vbCrLf
cVBA = cVBA & "End if" & vbCrLf
cVBA = cVBA & "End Sub" & vbCrLf
With wbKDest.VBProject.VBComponents(Ws.CodeName).CodeModule
.insertlines .CountOfLines + 1, cVBA
End With
DoEvents
wbKDest.Close True
End Sub


Encore merci à tous :)
 

Staple1600

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

Bonsoir à tous

Paritec
Re Staple le forum
je t'ai posé une question et bien que tu tournes autour du pot, tu n'as pas répondu!!
Est-ce que toi, quand tu ouvres un fichier .xlsm, tu as deux projets vba avec le même nom pour un seul fichier ouvert ??? Comme
J'ai répondu à ta question (de manière implicite) dans le même message du 29/04 ;)
Voila ce que j'ai dans VBE
La copie d'écran ne montrant pas deux projets VBA avec le même nom, c'est donc mon image qui réponds à ta question. ;)

Donc, tout cela pour dire que tes propos "désobligeants" à mon égard ne se justifiaient pas.
(en tout cas assurément pas dans le fil)

@ à tous
Pour revenir à la question, à mon sens, le nœud du problème se situait dans l'hypothèse que j'émettais dans ce message
https://www.excel-downloads.com/threads/probleme-macro-disparait-lors-de-lenregistrement.231187/
Mais sauf erreur, personne dans le fil n'a infirmé ou confirmé cette hypothèse, non ?
 
Dernière édition:

Paritec

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

Re Staple le forum
oui encore une réponse à coté, mais ce n'est pas grave, tu as raison , tu as toujours raison dirais-je même.
L'art et la manière d'éluder les réponses, quand elle peuvent te prendre en défaut!!!!!
Chasseur a réglé son problème et c'est bien pour lui, car c'était de toute façon pour lui, et moi je sais que avec ma configuration je ne peux pas écrire directement une macro dans un autre fichier, sauf à faire la bidouille que j'ai fait, créer la macro dans ce fichier et la lancer dans ce même fichier avant d'enregistrer.
bonne soirée
Papou:)
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
385
Réponses
0
Affichages
308

Statistiques des forums

Discussions
314 645
Messages
2 111 536
Membres
111 184
dernier inscrit
amiko