Creation de macro par une macro

  • Initiateur de la discussion Cerber
  • Date de début
C

Cerber

Guest
Bonjour le forum !!!

La solution de ce petit probleme pourrait me faciliter grandement la tache:

Je cree une macro par une macro a l'aide des instruction de @+Thierry je crois (pardon si je me trompe...).

Sub EcrireThisWorkBook()
Dim X As Integer

With Workbooks("New.xls").VBProject.VBComponents("ThisWorkbook").CodeModule
X = .CountOfLines
.InsertLines X + 1, "Private Sub Workbook_Open()"
.InsertLines X + 2, "MsgBox ""Coucou"",VBinformation "
.InsertLines X + 3, "End Sub"
End With
End Sub

J'ai besoin de sauvegarder le chemin(qui peut changer) du fichier qui va cree ce fichier "New" avec sa macro dans ce dernier. Actuellement je passe par une cellule de la feuille mais j'aimerai cette transition et inscrire directement ce chemin dans les lignes de code de ce fichier "New". Est ce possible?

J'espere avoir ete suffisamment clair... si ce n'est pas le cas dites le moi!

Merci encore a tout ceux qui posent des questions et surtout a ceux qui y repondent sur ce forum !!!

Cerber
 
Z

ZON

Guest
Bonsoir à tous,

Cerber sans trop de précision c'est un peu vague pour le chemin d'un classeur tu as Workbook("ton classeur").path qui pourrait faire l'affaire , ou application.getsavefilenameas...

A+++
 
C

Cerber

Guest
Salut Zon et Salut le forum!!!
Je vois que je n'ai pas ete assez clair, je vais essayer de donner plus de precisions:
En fait je n'ai pas de probleme pour obtenir le chemin du fichier original, j'utilise activeworkbook.fullname ou thisworkbook.fullname.

Ensuite ce workbook en cree un nouveau et cree une macro a l'interieur de celui ci comme je l'ai dit dans le premier message.
Cette macro dois etre capable de retrouver le fichier qui l'a cree peu importe ou il est, car elle doit effectuer des modifications sur celui ci.
Pour l'instant j'enregistre le chemin complet (du fichier "pere") dans une cellule du nouveau workbook, ensuite la macro de celui ci execute un workbook.open filename:= cells(,).value et hop on rouvre le fichier pere pour les modifs.

Je voudrais eviter de passer par l'inscription de ce chemin sur la feuille car je vais etre oblige de la proteger en ecriture et tout ce qui s'ensuit pour eviter une fausse manip d'un utilisateur.
Pour ca je souhaitais utiliser le fait qu'on "ecrit" la macro et ainsi garder ce chemin dans le code...

Donc la prochaine fois j'eviterai de lancer un nouveau fil avant de n'avoir un peu plus reflechi car je viens de trouver la reponse:

Sub EcrireThisWorkBook()
Dim X As Integer
With Workbooks("New.xls").VBProject.VBComponents("ThisWorkbook").CodeModule
X = .CountOfLines
.InsertLines X + 1, "Private Sub Workbook_Open()"
.InsertLines X + 2, "workbook.open filename;=" & workbooks("Fichierpere.xls").fullname
.InsertLines X + 3, "End Sub"
End With
End Sub

Merci d'avoir pris de ton temps pour me repondre et encore desole si je n'ai pas ete tres clair mais c'etait pas tres facile a expliquer (enfin je trouve).
Merci forum !!!

Salut!
 
C

Cerber

Guest
Bon en fait je me suis enflamme et j'ai pas tout a fait trouve...
On va dire que je suis sur la piste...

La il faudrait qu'une ame charitable m'explique pourquoi j'ai une erreur passque je vois vraiment pas ce qui cloche dans les lignes de codes...
Merci d'avance pour votre aide!!!!

Salut!

Cerber
 

Pièces jointes

  • Book3.zip
    12.3 KB · Affichages: 19
  • Book3.zip
    12.3 KB · Affichages: 15
  • Book3.zip
    12.3 KB · Affichages: 15
Z

ZON

Guest
Bonsoir à tous,

Cerber bon je vois des guillemets partout, lol

le plus simple c'est d'initialiser ta variable lenom différemment comme suit:
dim Lenom as string
.....

Lenom = """" 'on Lenom qui a 1 guillemet
Lenom = Lenom & ActiveWorkbook.FullName 'Lenom="C:\Tempo...
Lenom = Lenom & """" 'Lenom="C:\Temp..."

...

car dans ta procédure befire close lefichier attend une chaine de caractères entre guillement lefichier="C:\Te..." et non lefichier=C:\Te... qui provoque une erreur

A+++
 
C

Cerber

Guest
Bonjour tout le monde!!
Merci a toi Zon, ca marche comme sur des roulettes, je me doutais bien que c'etait une histoire de guillemets mais j'avais pas pense a prendre le probleme avant la ligne fatidique... ca faisait des belles guirlandes de guillemets mais ca marchait po!!!!
Encore merci a toi et au forum!

Cerber

PS: Tu dors un peu la nuit quand meme? ;o)
 

Discussions similaires

Réponses
4
Affichages
563

Statistiques des forums

Discussions
312 492
Messages
2 088 899
Membres
103 982
dernier inscrit
krakencolas