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 09/02/2012, 23h50   #1
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
Par défaut Copier le code VBA d'une feuille à une autre avec une macro

Bonsoir à tous !
J'ai créé un application qui génère une nouvelle feuille automatiquement au début de chaque mois. Ce que je souhaite c'est que le code ci-dessous fasse partie du code de la feuille lors de sa création :

Code :
1
2
3
Private Sub Worksheet_Activate()
    [a1].Select
End Sub
Merci de votre aide !
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 08h33   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 921
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 921
Points : 7 246
Points : 7 246
Bonjour,

pour faire cela, il te faudra utiliser VBComponents.

Un bon tutoriel ici : http://silkyroad.developpez.com/VBA/VisualBasicEditor/
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 11h16   #3
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
J'obtiens un run time error 1024... Pourtant j'ai bien coché la réference Microsoft Visual Basic for Applications Extensibility 5.3 dans l'editeur de VBA... Voici le bout de code que j'utilise pour essayer de rajouter une macro (NNF est une variable publique qui donne le nom aux Sheets créés) :

Code :
1
2
3
4
5
6
7
8
9
10
11
 
Sub ADD_Macro()
    Dim y As Integer
 
    With ActiveWorkbook.VBProject.VBComponents(NNF).CodeModule
        y = .CountOfLines
        .InsertLines y + 1, "Private Sub Worksheet_Activate()"
        .InsertLines y + 2, "[a1].Select"
        .InsertLines y + 3, "End Sub"
    End With
End Sub
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 15h57   #4
Futur Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 18
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Boutique - Magasin

Informations forums :
Inscription : octobre 2011
Messages : 18
Points : 17
Points : 17
Je viens de trouver la cause de cet erreur de run time. Cocher la case pour activer la référence ne suffit pas. Il faut, en plus, aller sur excel (dans le classeur et pas dans l'editeur) et selectionner Tools/Macro/Security et cliquer sur l'onglet Trusted Publishers. Une fois dans cet onglet, il faut cocher la casse Trust to access Visual Basic Projet (ça serait pas mal de rajouter cette info sur le tuto de SilkyRoad sur le Visual Basic Editor).

J'oubliais de dire que le code fonctionne correctement !

Merci à jfontaine de m'avoir mis sur les bons rails !

Et voici le module fini (maintenant la macro prend en charge les feuilles si le "codename" et le "name" des feuilles n'est pas le même) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub ADD_Macro()
    Dim y As Integer
    Dim z As Integer
 
    For z = 1 To Worksheets.Count
        If Worksheets(z).Name = NNF Then
            With ActiveWorkbook.VBProject.VBComponents(Worksheets(z).CodeName).CodeModule
                    y = .CountOfLines
                    .InsertLines y + 1, "Private Sub Worksheet_Activate()"
                    .InsertLines y + 2, "[a1].Select"
                    .InsertLines y + 3, "End Sub"
            End With
        End If
    Next
End Sub
Pimpampoum est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h47.


 
 
 
 
Partenaires

Hébergement Web