Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Macro pour exporter un module de perso.xls dans tous les fichiers d'un dossier

1 réponse
Avatar
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

Merci à tous

Antoine

1 réponse

Avatar
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