[résolu]Création de macro et bouton depuis excel principal vers excel secondaire

dodoc5

XLDnaute Nouveau
Bonjour,

Je rencontre un soucis avec une macro actuellement. Je dois à partir d'un fichier excel principal générer des sous-fichiers excel qui eux même généreront d'autres sous-fichiers excel.

En fait c'est tout bête, au sein de l'entreprise il y aura le fichier Excel maître, puis les fichiers Excel par service puis les fichiers Excel par ressource humaine du service. Le but étant d'attribuer via le maître des activités à des services puis les services attribuerons ces activités à leurs ressources.
(Et ensuite il faut que je maître consolide chaque petit fichier bien entendu =P)

Le soucis, c'est que chaque sous fichier est en fait une copie du maître sur lequel je fais des traitements pour supprimer les données qui n'intéressent pas ce service.

Le fichier maître possède donc des macros, et les sous-fichiers de service doivent aussi en avoir. Mais actuellement je ne fais que des Sheets.copy en gros

ma question est ou pourrais-je placer une macro dans le maître, qui sera retransmise au sous-fichier auquel je créer un bouton durant le traitement des données et attribuer à ce nouveau bouton cette macro ?

J'espère que vous avez suivi =P
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Bonjour,

ma question est ou pourrais-je placer une macro dans le maître, qui sera retransmise au sous-fichier auquel je créer un bouton durant le traitement des données et attribuer à ce nouveau bouton cette macro ?

bah... sans doute dans le module de la feuille où se trouve le bouton....

bon après midi
@+
 

tototiti2008

XLDnaute Barbatruc
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Bonjour dodoc5, Bonjour Pierrot ;)

En somme, on réinvente la base de données relationnelle sur Excel avec des macros ?
Ce n'est sans doute pas impossible, mais est-ce souhaitable, vaste débat...
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

@Pierrot

En fait si le sous-fichier n'existe pas, je le créer, s'il existe je ne fait que "recopier" les pages du maître. Donc techniquement j'ai pas de module dans les sous-fichiers par défaut. De plus Le bouton des sous-fichiers n'est pas présent sur le fichier maître, puisqu'il ne correspond qu'à une demande au niveau du service.

Il est peut-être possible d'importer un module d'un excel à un autre automatiquement en vba ?

@tototiti Je sais pas =O Je fais de l'informatique mais j'ai peu fait de VBA avant alors je ne veux que me renseigner des possibilités ^^
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

bonjour,
j'ai réglé le soucis de macro à copier via un fichier .txt, une lecture et écriture dans un nouveau module.

Maintenant j'ai un soucis, quand je créer un bouton, je dois lui affecter cette nouvelle macro.

Quand j'arrive à

Code:
Selection.OnAction =
Je me retrouve bloqué après tout un tas de différentes tentatives :

j'ai mis le chemin d'accès en brut du fichier
excel.xlsm!Module1.nomdemamacro

casDir + "\ref_" + excel + ".xlsm"!Module1.nomdemamacro (c'est ce genre de résultat qui m'interesse)
[ou casDir = chemin d'accès du dossier]

caFic!Module1.nomdemamacro
[ou caFic = chemin d'accès au fichier]

classeurDestination!Module1.nomdemamacro (Ce genre là aussi m'interesse)
[ou classeurDestination = Set Application.Workbook.open( ... )

Le tout testé avec des ' ' des " " des " ' ' " et autres joyeusetés de guillemets.

Une idée ?
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Up !

Je vais réexpliquer mon problème plus clairement.

J'ai un excel principal, qui effectue des traitements sur plusieurs fichiers excel.
L'un de ces traitements consiste à créer un module et à copier le contenu d'un .txt dans ce module pour créer une macro dans le sous excel.

Ensuite le principal construit un bouton sur un onglet du sous excel. C'est ici que ça coince.

Tout est fait automatiquement, c'est à a dire qu'on choisi l'excel via une combobox, puis on clique sur un bouton et tout les traitements se font à la suite grâce au VBA.

Le soucis c'est quand je créer le bouton à la ligne
Code:
 .OnAction =
je n'arrive pas à attribuer la macro du sous-excel.

J'ai essayé ce genre de manipulations :

les différentes variables :
casDir : chemin d'accès du sous directory (donc le dossier du sous excel)
caFic : chemin d'accès jusqu'au fichier (donc ...\...\excel.xlsm)
classeurDestination : Set Application.Workbook.Open(...)


J'ai donc essayé de mettre

.OnAction = "C://accès_brut_au_fichier\excel.xlsm"
Le brut n'est pas la solution qui m'interesse il s'agissait d'un test

.OnAction = casDir + "\ref_"+ excel + ".xlsm"!Module1.nomdemamacro

.OnAction = caFic!Module1.nomdemamacro

.OnAction = classeurDestination!Module1.nomdemamacro


Aucune de ces solutions ne fonctionne, si vous avez une solution, une idée ...
 
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Salut docdoc5

Rien qu'à te lire, j'ai un put*n de mal à la tête :p

J'ai un excel principal, qui effectue des traitements sur plusieurs fichiers excel.
L'un de ces traitements consiste à créer un module et à copier le contenu d'un .txt dans ce module pour créer une macro dans le sous excel.
Whaouuu punaise .... rien que ça !?

Tu n'as pas l'impression de te compliquer énormément la tâche
Excel principal ... sous Excel ... heuu c quoi ta langue ?
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

C'est à la demande d'un client ^^
Je suis stagiaire et voilà mon sujet de stage =P
Mais en gros ça fonctionne plutôt bien avec VBA.

L'idée c'est que on réduit de plus en plus les informations, puis on consolide les emplois du temps =P

ça semble monstrueux, ça l'ai un peu mais c'est la solution que l'entreprise a creusée.

Sinon une idée de comment attribuer une macro à un bouton depuis un fichier excel dans un autre fichier excel ? ^^
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Voici le code :

Code:
                Dim moduleGCRA As Object
                Dim CodeGCRA As String
                Dim intFic As Integer
                Dim test As String
                
                
                Set moduleGCRA = classeurDestination.VBProject.VBComponents.Add(1) 'créé un module
                
                intFic = FreeFile
                
                Open (caDir + "\code.txt") For Input As intFic 'fonction de lecture d'un fichier .txt
                While Not EOF(intFic)
                    Line Input #intFic, CodeGCRA
                    If (CodeGCRA) <> "" Then
                        test = test + CodeGCRA & vbCrLf 'stockage du fichier texte dans un string avec saut de ligne
                    Else
                        MsgBox ("Vide")
                    End If
                Wend
                MsgBox (test)
                moduleGCRA.CodeModule.AddfromString test 'copie du string complet dans le module
                Close intFic
                
    classeurDestination.Sheets("ACCUEIL").Select 'création bouton
    ActiveSheet.Buttons.Add(60, 375, 121.5, 30).Select
    Selection.OnAction = "" ' là je bloque, je dois attribuer la macro du module du sous-excel au bouton créé ici
    Selection.Characters.Text = "générer CRA"
 

tototiti2008

XLDnaute Barbatruc
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Bonjour dodoc, Salut Bruno ;)

Je suppose que le bouton doit lancer la macro nouvellement importée dans un des modules du "sous-excel" ?
question bête, as-tu essayé

Code:
.OnAction ="nomdemamacro"

?
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Oui déjà essayé, dans ce cas le bouton cherche la macro dans l'excel principal

je pense que ça doit être un truc comme

.OnAction = classeurDestination!Module1.mamacro

mais je dois pas maîtriser le jeu des " " déjà, car j'ai une erreur en faisant comme si dessus
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

Re,

un essai bidon que j'ai fait de mon côté

Code:
Sub test()
    texte = "sub toto()" & vbCrLf & "msgbox ""toto""" & vbCrLf & "end sub"
    Set classeurDestination = Workbooks("Classeur4.xls")
    Set moduleGCRA = classeurDestination.VBProject.VBComponents.Add(1)
    moduleGCRA.CodeModule.AddfromString texte
    Set btn = classeurDestination.Sheets("Feuil1").Buttons.Add(60, 375, 121.5, 30)
    btn.OnAction = "Classeur4.xls!toto"
End Sub
 

dodoc5

XLDnaute Nouveau
Re : Placement d'une macro qui doit être transférée vers un autre fichier excel

J'ai adapté pour le fonctionnement de mon projet de la sorte :

Code:
classeurDestination.Sheets("ACCUEIL").Select
    ActiveSheet.Buttons.Add(60, 375, 121.5, 30).Select
    Selection.OnAction = casDir + "\Référentiel_" + ComboBoxVal + ".xlsm!Bouton_générer_CRA"
    Selection.Characters.Text = "générer CRA"


Code:
classeurDestination.Sheets("ACCUEIL").Select
    ActiveSheet.Buttons.Add(60, 375, 121.5, 30).Select
    Selection.OnAction = caFic + !Bouton_générer_CRA 'caFic chemin complet jusqu'au fichier excel
    Selection.Characters.Text = "générer CRA"

aucun ne fonctionne, le deuxième code renvoie "Référence incorrecte ou non qualifiée"
 

Discussions similaires

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i