Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 01/07/2009, 11h33   #1
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
Par défaut Une macro qui permet de de referencer un .xla sur plusieurs CL avec un code dans le "thisworkbook"

Hello tous le monde

J'ai un programme qui crée plusieurs fichiers excel et je voudrais creer un script qui permet de donné pour reference un fichier .xla (c'est à dire automatiser la procedure: Alt+F11 --> outils --> reference --> cocher le xla) + rajouter un code dans le 'thisworkbook" (idem dans le alt+F11 --> this workbook)

Merci
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 12h40   #2
Membre confirmé
 
Inscription : octobre 2007
Messages : 232
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 232
Points : 235
Points : 235
Bonjour,

cette ligne de code, dans le WorkBook_Open, te permet de référencer la xla...

Code :
1
2
ThisWorkbook.VBProject.References.AddFromFile _
"C:\Documents and Settings\Ta_Macro.xla"
Chemin et nom de la macro à adapter...
mapeh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 13h04   #3
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
ok merci et pour le code dans le "thisworkbook"
Exemple: je souhaite que le fichier A.xls rajoute un code dans le "thiswokbook" du fichier .xls
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 13h08   #4
Membre Expert
 
Avatar de Krovax
 
Inscription : juillet 2008
Messages : 1 889
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : juillet 2008
Messages : 1 889
Points : 1 937
Points : 1 937
Un tuto pour manipuler l'éditeur de macro par macro, et donc écrire du code par macro
http://silkyroad.developpez.com/VBA/VisualBasicEditor/

Tu devrais y trouver ton bonheur
Krovax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 13h20   #5
Membre confirmé
 
Inscription : octobre 2007
Messages : 232
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 232
Points : 235
Points : 235
Re-,

le code suivant ajoute un code évènementiel dans le ThisWorkBook du classeur actif

Lorsque tu créés ton fichier (WorkBooks.Add....), tu es donc dans ce nouveau classeur..

Essaie :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Insert_Proc()
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim S As String
 
S = "ThisWorkbook.VBProject.References.AddFromFile _" & vbLf
S = S & """C:\Documents and Settings\TaMacro.xla"""
 
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
    DebutCode = .CreateEventProc("Open", "Workbook")
    .InsertLines DebutCode + 1, S
End With
 
End Sub
N'oublie pas d'activer la référence citée en haut du code (ne sera utile que pour le classeur qui exécute le code....)
mapeh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 14h31   #6
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
Merci j'ai trouvé ce code:

Code :
1
2
3
4
5
6
7
8
 
    'Ajoute une macro dans le module
    With VBComp.CodeModule
        X = .CountOfLines
        .InsertLines X + 1, "Sub laMacro()"
        .InsertLines X + 2, "Range(""A1"").Value = ""Coucou"""
        .InsertLines X + 3, "End Sub"
    End With
Mais pas j'ai pas trop compris la syntaxe ici je dois remplacer "CodeModule" par le code de mon module donc "thisworkbook"? mais ensuite je coprend l'autre paris du code.. la fonction... ou faut il que je copie le code que je souahite transferer?

Merci
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 14h48   #7
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
Citation:
Envoyé par mapeh Voir le message
Re-,

le code suivant ajoute un code évènementiel dans le ThisWorkBook du classeur actif

Lorsque tu créés ton fichier (WorkBooks.Add....), tu es donc dans ce nouveau classeur..

Essaie :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Insert_Proc()
'nécessite une référence à :
'Microsoft Visual Basic For Applications Extensibility 5.3
Dim DebutCode As Long
Dim S As String
 
S = "ThisWorkbook.VBProject.References.AddFromFile _" & vbLf
S = S & """C:\Documents and Settings\TaMacro.xla"""
 
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
    DebutCode = .CreateEventProc("Open", "Workbook")
    .InsertLines DebutCode + 1, S
End With
 
End Sub
N'oublie pas d'activer la référence citée en haut du code (ne sera utile que pour le classeur qui exécute le code....)

Ok merci pour la reponse

Ici on active le addin :
Code :
1
2
S = "ThisWorkbook.VBProject.References.AddFromFile _" & vbLf
S = S & """C:\Documents and Settings\TaMacro.xla"""

mais ici j'ai pas trop compris la synthaxe:
Code :
.InsertLines DebutCode + 1, S
ou est ce que je peux rajouter mon code ?
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2009, 15h07   #8
Membre confirmé
 
Inscription : octobre 2007
Messages : 232
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 232
Points : 235
Points : 235
Re-,

Tu as déjà un code de fait?

Citation:
J'ai un programme qui crée plusieurs fichiers excel
Montre-le, et on pourra peut-être t'aider....

Je te conseille également

pour la ligne de code que tu ne comprends pas

Et S n'est nullement un Add-in, mais une variable String, qui a la valeur marquée en Rouge....

Lorsque tu as inséré cette variable, elle devient une ligne de procédure, dans le WorkBook_Open
mapeh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2009, 18h03   #9
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
Citation:
Envoyé par mapeh Voir le message
Re-,
Tu as déjà un code de fait?
Montre-le, et on pourra peut-être t'aider....
C'est un programme à part realiser par quelqu'un d'autre

Sinon pour le bouton F1 j'ai pas compris la ligne
Code :
.InsertLines DebutCode + 1, S
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2009, 15h20   #10
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
Est ce que qu'un pourrais m'aider ?

donc pour rajouter la reference je fais rajoute cela:
Code :
1
2
ThisWorkbook.VBProject.References.AddFromFile _
"C:\Documents and Settings\Ta_Macro.xla"
et pour ajouter une macro dans le module "thisworkbook" je fais comment?


Code :
1
2
3
4
With ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
    DebutCode = .CreateEventProc("Open", "Workbook")
    .InsertLines DebutCode + 1, S
End With

la macro fait une 50ene de ligne il n'y pas de methode plus facile?

merci

et til possible d'exporter une module directement?
car je dois transférer un module entier

Dernière modification par AlainTech ; 27/07/2009 à 16h14. Motif: Fusion de 2 messages
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2009, 15h44   #11
Inactif
 
Inscription : juin 2007
Messages : 2 055
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2 055
Points : 2 023
Points : 2 023
Bonjour,
Exporter le module ne présente aucun intérêt, tu peu l'exporter manuellement dans un répertoir.
Et dans le classeur que tu ouvre tu peu importer le module.

et en VBA
Code :
1
2
Workbooks("NomDuClasseur.xls").VBProject.VBComponents.Import _
"C:\Rép\Rép\Module1.Bas"
Si le nom est Module1.
Je ne crois pas que ça fonctionne pour un module de feuille ou de classeur. (jamais essayer)
A+
LeForestier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2009, 17h32   #12
Invité de passage
 
Inscription : juin 2009
Messages : 38
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 38
Points : 2
Points : 2
non cela ne marche pas:
De plus, le fichier orignal s'appel "diesearbeitmap" et dans la version "francaise de word cela donne "thisworkbook" :/
Esmax666 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 20h31.


 
 
 
 
Partenaires

Hébergement Web