Macro pour exporter un module de perso.xls dans tous les fichiers d'un dossier
1 réponse
Antoine
Bonjour à tous
Je voudrais exporter plusieurs macros regroupées dans le module 1 de
perso.xls pour les transférer dans un module à créer propre à chaque fichier
"cible". Les fichiers cibles (qui ne contiennent aucun module) sont en fait
tous regroupés dans un même dossier (qui ne contient que ces fichiers
cibles). Ces fichiers cibles ne contiennent chacun qu'une seule feuille,
toujours du même nom.
Je ne sais pas s'il est possible de faire une macro qui fasse le transfert
du module 1 de perso.xls dans chacun des fichiers de la boîte ?
Par ailleurs, dans chacun de ces fichiers "d'architecture" toujours
identique, il y a six boutons (du genre boutons à options, mais je ne suis
pas sur du type !) qui appellent les six programmes contenus dans le module
1 de perso.xls.
Une macro pourrait-elle aussi réaffecter la macro cible de ces touches non
plus sur perso.xls, mais sur la macro du même nom désormais située dans le
module propre à ce fichier ?
Je mets en Cjoint le fichier si nécessaire : http://cjoint.com/?iBtsW3vORK
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
papou
Bonjour Tout cela est faisable. Avant de lancer la macro, il faut exporter le module du PERSO.XLS dans un répertoire que tu définis. Tu dois bien sûr adapter le code exemple à ton besoin (noms de répertoires et nom du module) Tu ne dis pas si les noms des boutrons d'option sont tous les mêmes, j'ai pris les noms définis dans le classeur que tu as placé sur cijoint. (attention aux retours à la ligne intempestifs dans le code ci-dessous)
Cordialement Pascal
Sub zozo() Dim Nombk$ Dim lebk As Workbook With Application.FileSearch .NewSearch .LookIn = "C:Documents and SettingspapouMes documentsAssistancempfetests" If .Execute() > 0 Then For I = 1 To .FoundFiles.Count Nombk = .FoundFiles(I) Set lebk = Workbooks.Open(Nombk) lebk.VBProject.VBComponents.Import "C:Documents and SettingspapouMes documentsAssistancempfemoduleperso.bas" lebk.Worksheets(1).Shapes("Option Button 539").OnAction = "moduleperso!formulairesnoemie" lebk.Worksheets(1).Shapes("Option Button 540").OnAction = "moduleperso!reduction" lebk.Worksheets(1).Shapes("Option Button 541").OnAction = "moduleperso!extension" lebk.Worksheets(1).Shapes("Option Button 542").OnAction = "moduleperso!formuleautomatique" lebk.Worksheets(1).Shapes("Option Button 543").OnAction = "moduleperso!entete" lebk.Worksheets(1).Shapes("Option Button 576").OnAction = "moduleperso!nouveausalarie" lebk.Close (True) Next I
Else: MsgBox "pas de fichier trouvé dans le répertoire", vbInformation, "Arrêt" End If MsgBox "Module moduleperso.bas importé dans les classeurs du répertoire spécifié" End With
End Sub
"Antoine" a écrit dans le message de news: %
Bonjour à tous
Je voudrais exporter plusieurs macros regroupées dans le module 1 de perso.xls pour les transférer dans un module à créer propre à chaque fichier "cible". Les fichiers cibles (qui ne contiennent aucun module) sont en fait tous regroupés dans un même dossier (qui ne contient que ces fichiers cibles). Ces fichiers cibles ne contiennent chacun qu'une seule feuille, toujours du même nom.
Je ne sais pas s'il est possible de faire une macro qui fasse le transfert du module 1 de perso.xls dans chacun des fichiers de la boîte ?
Par ailleurs, dans chacun de ces fichiers "d'architecture" toujours identique, il y a six boutons (du genre boutons à options, mais je ne suis pas sur du type !) qui appellent les six programmes contenus dans le module 1 de perso.xls. Une macro pourrait-elle aussi réaffecter la macro cible de ces touches non plus sur perso.xls, mais sur la macro du même nom désormais située dans le module propre à ce fichier ?
Je mets en Cjoint le fichier si nécessaire : http://cjoint.com/?iBtsW3vORK
Merci à tous
Antoine
Bonjour
Tout cela est faisable.
Avant de lancer la macro, il faut exporter le module du PERSO.XLS dans un
répertoire que tu définis.
Tu dois bien sûr adapter le code exemple à ton besoin (noms de répertoires
et nom du module)
Tu ne dis pas si les noms des boutrons d'option sont tous les mêmes, j'ai
pris les noms définis dans le classeur que tu as placé sur cijoint.
(attention aux retours à la ligne intempestifs dans le code ci-dessous)
Cordialement
Pascal
Sub zozo()
Dim Nombk$
Dim lebk As Workbook
With Application.FileSearch
.NewSearch
.LookIn = "C:Documents and SettingspapouMes
documentsAssistancempfetests"
If .Execute() > 0 Then
For I = 1 To .FoundFiles.Count
Nombk = .FoundFiles(I)
Set lebk = Workbooks.Open(Nombk)
lebk.VBProject.VBComponents.Import "C:Documents and SettingspapouMes
documentsAssistancempfemoduleperso.bas"
lebk.Worksheets(1).Shapes("Option Button 539").OnAction =
"moduleperso!formulairesnoemie"
lebk.Worksheets(1).Shapes("Option Button 540").OnAction =
"moduleperso!reduction"
lebk.Worksheets(1).Shapes("Option Button 541").OnAction =
"moduleperso!extension"
lebk.Worksheets(1).Shapes("Option Button 542").OnAction =
"moduleperso!formuleautomatique"
lebk.Worksheets(1).Shapes("Option Button 543").OnAction =
"moduleperso!entete"
lebk.Worksheets(1).Shapes("Option Button 576").OnAction =
"moduleperso!nouveausalarie"
lebk.Close (True)
Next I
Else: MsgBox "pas de fichier trouvé dans le répertoire", vbInformation,
"Arrêt"
End If
MsgBox "Module moduleperso.bas importé dans les classeurs du répertoire
spécifié"
End With
End Sub
"Antoine" <awerel2006@neuf.fr> a écrit dans le message de news:
%23sOowzfyGHA.4976@TK2MSFTNGP04.phx.gbl...
Bonjour à tous
Je voudrais exporter plusieurs macros regroupées dans le module 1 de
perso.xls pour les transférer dans un module à créer propre à chaque
fichier "cible". Les fichiers cibles (qui ne contiennent aucun module)
sont en fait tous regroupés dans un même dossier (qui ne contient que ces
fichiers cibles). Ces fichiers cibles ne contiennent chacun qu'une seule
feuille, toujours du même nom.
Je ne sais pas s'il est possible de faire une macro qui fasse le transfert
du module 1 de perso.xls dans chacun des fichiers de la boîte ?
Par ailleurs, dans chacun de ces fichiers "d'architecture" toujours
identique, il y a six boutons (du genre boutons à options, mais je ne suis
pas sur du type !) qui appellent les six programmes contenus dans le
module 1 de perso.xls.
Une macro pourrait-elle aussi réaffecter la macro cible de ces touches non
plus sur perso.xls, mais sur la macro du même nom désormais située dans le
module propre à ce fichier ?
Je mets en Cjoint le fichier si nécessaire : http://cjoint.com/?iBtsW3vORK
Bonjour Tout cela est faisable. Avant de lancer la macro, il faut exporter le module du PERSO.XLS dans un répertoire que tu définis. Tu dois bien sûr adapter le code exemple à ton besoin (noms de répertoires et nom du module) Tu ne dis pas si les noms des boutrons d'option sont tous les mêmes, j'ai pris les noms définis dans le classeur que tu as placé sur cijoint. (attention aux retours à la ligne intempestifs dans le code ci-dessous)
Cordialement Pascal
Sub zozo() Dim Nombk$ Dim lebk As Workbook With Application.FileSearch .NewSearch .LookIn = "C:Documents and SettingspapouMes documentsAssistancempfetests" If .Execute() > 0 Then For I = 1 To .FoundFiles.Count Nombk = .FoundFiles(I) Set lebk = Workbooks.Open(Nombk) lebk.VBProject.VBComponents.Import "C:Documents and SettingspapouMes documentsAssistancempfemoduleperso.bas" lebk.Worksheets(1).Shapes("Option Button 539").OnAction = "moduleperso!formulairesnoemie" lebk.Worksheets(1).Shapes("Option Button 540").OnAction = "moduleperso!reduction" lebk.Worksheets(1).Shapes("Option Button 541").OnAction = "moduleperso!extension" lebk.Worksheets(1).Shapes("Option Button 542").OnAction = "moduleperso!formuleautomatique" lebk.Worksheets(1).Shapes("Option Button 543").OnAction = "moduleperso!entete" lebk.Worksheets(1).Shapes("Option Button 576").OnAction = "moduleperso!nouveausalarie" lebk.Close (True) Next I
Else: MsgBox "pas de fichier trouvé dans le répertoire", vbInformation, "Arrêt" End If MsgBox "Module moduleperso.bas importé dans les classeurs du répertoire spécifié" End With
End Sub
"Antoine" a écrit dans le message de news: %
Bonjour à tous
Je voudrais exporter plusieurs macros regroupées dans le module 1 de perso.xls pour les transférer dans un module à créer propre à chaque fichier "cible". Les fichiers cibles (qui ne contiennent aucun module) sont en fait tous regroupés dans un même dossier (qui ne contient que ces fichiers cibles). Ces fichiers cibles ne contiennent chacun qu'une seule feuille, toujours du même nom.
Je ne sais pas s'il est possible de faire une macro qui fasse le transfert du module 1 de perso.xls dans chacun des fichiers de la boîte ?
Par ailleurs, dans chacun de ces fichiers "d'architecture" toujours identique, il y a six boutons (du genre boutons à options, mais je ne suis pas sur du type !) qui appellent les six programmes contenus dans le module 1 de perso.xls. Une macro pourrait-elle aussi réaffecter la macro cible de ces touches non plus sur perso.xls, mais sur la macro du même nom désormais située dans le module propre à ce fichier ?
Je mets en Cjoint le fichier si nécessaire : http://cjoint.com/?iBtsW3vORK