Macro qui ecrit une macro dans une feuille

Bonsoir

J ai un petit souci avec une macro je m explique :

j ai cree dans mon classeur de macro personnels une macro qui as la fonction suivante :

creer un classeur vide contenant une seule feuille dans un repertoire que je lui specifie

une fois ce fichier cree je l ouvre et l active donc pour travailler dessus

grace aux commandes insertlines , je fais en sorte de placer une petite macro dans la seule feuille du classeur que je viens de creer

cette macro gere juste la couleur des cellules suivant ce qui est rentre par l utilisateur dans certaines cellules ( c est un fichier qui sert a faire une liste des taches a faire du jour )

fin de la macro

la macro marche tres bien sauf que :

lorsque je fais la sauvegarde manuel de mon classeur nouvellement cree avec une seule page contenant une macro en arriere plan tout est sauvegarde et lorsque je vais chercher mon fichier nouvellement cree et que je l ouvre bah la macro est bien dans la page et marche correctement

par contre si je fais une sauvegarde et une fermeture du classeur nouvellement cree avec un saveas et un close workbook dans ma macro de mon classeur personnel , tout se passe normalement le fichier est cree avec la page deisrée , sauf que meme en sauvegardant en xlsm et bah lorsque je le rouvre pour voir le resultat la macro ne marche pas car celle ci ne se trouve pas dans la page de mon classeur nouvellement cree

je ne sais que faire

en vous remerciant d avance pour avoir pris la peine de me lire et pour vos eventuelles reponses

Bonne soirée

Cordialement

Bonsoir,

comme ça je ne peux vous répondre... mais avec un fichier muni d'un code à déchiffrer... peut-être...

@ bientôt

LouReeD

le code est a mon travail , etant vendredi soir ...

mais je m etais inspiré de ca :

ce morceau de code est place dans le sub de ma macro situé dans mon classeur personnel PERSO.xlsb

'monnclasseurcree est au prealable activée avant de mettre ce bout de code
'cette macro sert a ecrire une macro dans le classeur monclasseurcree plus precisement dans la Feuil1

' Nécessite d'activer la référence :
'"Microsoft Visual Basic for Applications Extensibility 5.3"
Dim f1 As Worksheet
Dim X As Integer
Dim code As String

Workbook(monclasseurcrée).Activate

    Set f1 = Worksheets("Feuil1")

    code = "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)" & vbCrLf
    code = code & "     If Not Application.Intersect(Target, Range(""K2:K65500"")) Is Nothing Then" & vbCrLf
    code = code & "         If Target.Offset(0, 0).Value <> ""OUI"" Then" & vbCrLf
    code = code & "             Application.Run ""MenuReach.xls!LOADCA"" " & vbCrLf
    code = code & "             Cancel = True" & vbCrLf
    code = code & "         Else" & vbCrLf
    code = code & "             MsgBox ""Pour modifier un article, vous devez le faire depuis le fichier BDDA."", 128, ""Information"" " & vbCrLf
    code = code & "         End If" & vbCrLf
    code = code & "     End If" & vbCrLf
    code = code & "End Sub"

    'Ajoute la procédure dans la feuille
   With ActiveWorkbook.VBProject.VBComponents(f1.CodeName).CodeModule
        X = .CountOfLines + 1
        .InsertLines X, code
    End With

    Set f1 = Nothing

C' est tout ce que je peux vous proposer pour le moment , j en suis désolée

Merci de votre consideration

pas d autres idees concernant la non sauvagarde de la macro inseree dans le classeur concernée grace a ce bout de code ?

et ce meme en faisant un save as puis un close sur l' objet workbook associe ?

Bonne soirée

en fait pour essayer de vous donner plus de details voici de maniere detaille ce que je cherche a faire

Mon but est de creer une macro qui se situerait dans mon classeur personnel et quand je la lancerais cela executerait la procedure suivante :

1) creer un fichier xls vide dans un repertoire que je lui specifie

2) ne garde que la premiere page de ce classeur nouvellement cree et la renommer " donnes hebdomadaires"

3) Initier toutes les cellules de cette feuille en arriere plan rouge

4) Dans cette seule feuille restante Feuil1(Donnes hebdomadaires ) inserer un code qui as pour but de changer la couleur de la cellule lorsque l on double clic dessus ( passage du rouge au vert par exemple )

De maniere a ce que une fois que la macro ait fini de s executer , j ai mon fichier qui est cree avec une seule feulle , et toutes les cellules de cette feuille initialisé au rouge , de maniere a ce que lorsque je clique sur les cellules leur couleur change .

Comme ca si je donne mon fichier que je viens de creer a quelqu un qui ne dispose pas de mon classeur de macros personneles , bah que le changement de couleur par cette meme personne des cellules par double clic intervienne bien.

D ou mon titre peu evocateur " installer une macro dans une feuille grace a une macro "

J ' espere avoir ete un peu plus clair que lors de mon permier message

En vous souhaitant une bonne soiree

Cordialement

Bonsoir,

Tu n'as pas fourni assez d'éléments pour que l'on voit ce qui pourrait clocher dans l'opération. La macro inscrivant le code dans le module n'est qu'un élément, les autres ne sont pas dans le code que tu publies...

Ceci étant il me semble que tu prends des détours un peu compliqués pour ce que tu veux faire !

Il te suffirait d'avoir un modèle de la feuille que tu veux créer dans un nouveau classeur. un simple export de cette feuille vers un nouveau classeur aboutit à la création d'un classeur doté d'une seule feuille et comportant une macro évènementielle. A supposer que tu renommes la feuille après export, 4 lignes de code suffiraient à boucler l'opération (copie, renommage, sauvegarde classeur, fermeture classeur).

Cordialement.

Bonsoir MFerrand

J ai opte pour votre solution , effectivement plus simple et fiable

Merci encore

Je considere le sujet comme résolu de mon coté

Merci encore et bonne soirée

Bonne continuation et bonne soirée également.

Rechercher des sujets similaires à "macro qui ecrit feuille"