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 = NothingC' 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.