[VBA] Inserer du code dans un sub() par macro
Fermé
Bonjour,
Je voudrais savoir si il est possible d'inserer du code dans un sub() par macro.
Disons que j'ai un programme qui teste l'existence de fichier puis qui lance une serie de macro, je voudrais qu'un utilisateur puisse inserer un bout de code dans le cas de la création d'un nouveau fichier.
merci pour vos réponses
Je voudrais savoir si il est possible d'inserer du code dans un sub() par macro.
Disons que j'ai un programme qui teste l'existence de fichier puis qui lance une serie de macro, je voudrais qu'un utilisateur puisse inserer un bout de code dans le cas de la création d'un nouveau fichier.
merci pour vos réponses
A voir également:
- [VBA] Inserer du code dans un sub() par macro
- Insérer vidéo dans powerpoint - Guide
- Voici du code ascii : - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Code puk bloqué - Guide
13 réponses
Personne n'a jamais fais cela ?
je voudrais qu'un utilisateur en rentrant les données dans une textbox puisse générer automatiquement du code dans un programme existant!
merci pour votre aide, je sais absolument pas comment faire
je voudrais qu'un utilisateur en rentrant les données dans une textbox puisse générer automatiquement du code dans un programme existant!
merci pour votre aide, je sais absolument pas comment faire
blux
Messages postés
26756
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
1 avril 2025
3 332
14 mars 2007 à 10:13
14 mars 2007 à 10:13
Salut,
ben non, on n'a jamais du faire ça...
Je ne comprends toujours pas l'intérêt : si quelqu'un saisit qq chose et veut l'exécuter alors pourquoi le code n'existe-il pas avant ?
Parce que exécuter du code si un fichier est présent, on sait faire, mais rajouter du code dynamiquement dans une proc, ça sent le masochisme...:-)
ben non, on n'a jamais du faire ça...
Je ne comprends toujours pas l'intérêt : si quelqu'un saisit qq chose et veut l'exécuter alors pourquoi le code n'existe-il pas avant ?
Parce que exécuter du code si un fichier est présent, on sait faire, mais rajouter du code dynamiquement dans une proc, ça sent le masochisme...:-)
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
14 mars 2007 à 10:16
14 mars 2007 à 10:16
En plus, ça suppose que les utilisateurs connaissent la structure... et VBA.
voilà mon code
If Not Dir(chemin & "\fichier.xls") = "" Then
Workbooks.Open chemin & "\fichier.xls", , True
'Set wb = Workbooks("fichier.xls")
Run "remplir_BDD"
End If
Set wb = Nothing
je voudrais rajouter ce code dans le même module lors de la création d'un nouveau fichier. Le but étant d'interdire le changement de nom de fichier par les utilisateurs, mais en permettant à un admnistrateur de rajouter un autre fichier.
pour la structure, il y a surement moyen d'automatiser la procédure.
Mais il n'y a donc pas moyen d'ajouter dynamiquement du code dans une procédure :( ???
If Not Dir(chemin & "\fichier.xls") = "" Then
Workbooks.Open chemin & "\fichier.xls", , True
'Set wb = Workbooks("fichier.xls")
Run "remplir_BDD"
End If
Set wb = Nothing
je voudrais rajouter ce code dans le même module lors de la création d'un nouveau fichier. Le but étant d'interdire le changement de nom de fichier par les utilisateurs, mais en permettant à un admnistrateur de rajouter un autre fichier.
pour la structure, il y a surement moyen d'automatiser la procédure.
Mais il n'y a donc pas moyen d'ajouter dynamiquement du code dans une procédure :( ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
blux
Messages postés
26756
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
1 avril 2025
3 332
14 mars 2007 à 10:56
14 mars 2007 à 10:56
Tu gardes ton code, tu le mets dans un "if" conditionné par le test de l'utilisateur pour savoir s'il est admin...
Aie non c'est un peu plus compliqué :( !
l'administrateur, à la création d'un fichier modifierais (automatiquement via macro) le code de mon classeur de base! Mais bon ca n'a pas l'air possible :'(
l'administrateur, à la création d'un fichier modifierais (automatiquement via macro) le code de mon classeur de base! Mais bon ca n'a pas l'air possible :'(
Utilisateur anonyme
14 mars 2007 à 12:50
14 mars 2007 à 12:50
Bonjour,
suggestion :
sur cette page :
http://www.excel-downloads.com/telechargements/utilitaires/5-4.htm
repérer VizioXLA
ce fichier excel démontre comment travailler avec les objets Excel et
entre autre le code. Dés l'ouverture du fichier, celui-ci détecte la non-présence d'une référence de VBE et la charge si nécessaire.
Pour faire le test de la non-présence, le programme tente d'ajouter
une routine dans un module, s'il y a erreur, c'est que la référence est
absente. Celle-ci étant indispensable pour manipuler du code.
Voir routine dans module ThisWorkbook, routine Workbook_Open
qui appelle :
Module Chargement - Public Function PresenceExtension() As Boolean
Bon, ce classeur n'a pas toute les qualité d'un bon bouquin, mais
enfin, mieux vaut avoir un que deux tu l'auras !
Lupin
suggestion :
sur cette page :
http://www.excel-downloads.com/telechargements/utilitaires/5-4.htm
repérer VizioXLA
ce fichier excel démontre comment travailler avec les objets Excel et
entre autre le code. Dés l'ouverture du fichier, celui-ci détecte la non-présence d'une référence de VBE et la charge si nécessaire.
Pour faire le test de la non-présence, le programme tente d'ajouter
une routine dans un module, s'il y a erreur, c'est que la référence est
absente. Celle-ci étant indispensable pour manipuler du code.
Voir routine dans module ThisWorkbook, routine Workbook_Open
qui appelle :
Module Chargement - Public Function PresenceExtension() As Boolean
Bon, ce classeur n'a pas toute les qualité d'un bon bouquin, mais
enfin, mieux vaut avoir un que deux tu l'auras !
Lupin
Bon ok, j'ai pas encore le niveau pour tout comprendre :) je débute VBA, je vais essayer de faire autrement en amont. merci pour votre aide
Je pense que la fonction dont j'aurais besoin ça serait ".InsertLines ligne, code"
mais pas moyen de la faire fonctionner dans ma version d'excel :'(
mais pas moyen de la faire fonctionner dans ma version d'excel :'(
Utilisateur anonyme
14 mars 2007 à 18:26
14 mars 2007 à 18:26
re :
quel version d'Excel avez-vous ?
n.b. Il faut charger la référence :
Microsoft Visual Basic for Applications Extensibility
sous Excel, tapez [ Alt F11 //Outils/Références… ]
ajouter la librairie ...
je vous fournirai un petit exemple simple ce soir !
Lupin
quel version d'Excel avez-vous ?
n.b. Il faut charger la référence :
Microsoft Visual Basic for Applications Extensibility
sous Excel, tapez [ Alt F11 //Outils/Références… ]
ajouter la librairie ...
je vous fournirai un petit exemple simple ce soir !
Lupin
Bonjour,
Merci Lupin, la fonction "insertLines" est reconnue par VBA, a propos de la version Excel c'est la 2000. Je vais surement trouver comment la faire fonctionner en cherchant sur le net aujourd'hui !
merci en tout cas ;)
ps: comment signalé que le problème est résolu sur le forum ?
Merci Lupin, la fonction "insertLines" est reconnue par VBA, a propos de la version Excel c'est la 2000. Je vais surement trouver comment la faire fonctionner en cherchant sur le net aujourd'hui !
merci en tout cas ;)
ps: comment signalé que le problème est résolu sur le forum ?
voilà mon code, je vais réussir faire ce que je veux !
With Workbooks("Classeur1").VBProject.VBComponents("Module2").CodeModule
x = .CountOfLines
.InsertLines x + 1, "Public Sub MaProcedure"
.InsertLines x + 2, "... du code ici"
.InsertLines x + 650, "... la suite du code"
.InsertLines x + 651, "End Sub"
End With
End Sub
merci
Yvan
With Workbooks("Classeur1").VBProject.VBComponents("Module2").CodeModule
x = .CountOfLines
.InsertLines x + 1, "Public Sub MaProcedure"
.InsertLines x + 2, "... du code ici"
.InsertLines x + 650, "... la suite du code"
.InsertLines x + 651, "End Sub"
End With
End Sub
merci
Yvan
Utilisateur anonyme
15 mars 2007 à 12:40
15 mars 2007 à 12:40
Bonjour,
Un empêchement de dernière minute m'a empêché de t'écrire
ce bout de code qui provient d'un bouquin, ma mémoire n'est
pas très bonne.
donc, je vais reporter à ce soir !
@+
Lupin
Un empêchement de dernière minute m'a empêché de t'écrire
ce bout de code qui provient d'un bouquin, ma mémoire n'est
pas très bonne.
donc, je vais reporter à ce soir !
@+
Lupin
Utilisateur anonyme
15 mars 2007 à 22:29
15 mars 2007 à 22:29
re :
voilà, c'est simple mais je ne me souviens jamais de la syntaxe !
ce n'est pas tout, ce code fonctionne sous 2002 mais sous 2000 !
il me semble que j'avais éprouvé mon fichier Vizio sous la version 2K!
bonne continuité.
Lupin
voilà, c'est simple mais je ne me souviens jamais de la syntaxe !
Sub AjouterCode() Dim LignesDeCode As String Dim LigneSuivante As Long 'Ajout de l'évènement LignesDeCode = "Sub CommandButton1_Click()" & vbCrLf LignesDeCode = LignesDeCode & " On error Resume Next" & vbCrLf & vbCrLf LignesDeCode = LignesDeCode & " Sheets(" & "Feuil1" & ").Activate" & vbCrLf LignesDeCode = LignesDeCode & " If ( Err <> 0 ) Then" & vbCrLf LignesDeCode = LignesDeCode & " MsgBox " & """" & _ "Impossible d'activer la feuille 1" & """" & vbCrLf & vbCrLf LignesDeCode = LignesDeCode & " End If" & vbCrLf & vbCrLf LignesDeCode = LignesDeCode & "End Sub" & vbCrLf With ThisWorkbook.VBProject.VBComponents("Nom_Du_Module").CodeModule LigneSuivante = (.CountOfLines + 1) .InsertLines LigneSuivante, LignesDeCode End With End Sub
ce n'est pas tout, ce code fonctionne sous 2002 mais sous 2000 !
il me semble que j'avais éprouvé mon fichier Vizio sous la version 2K!
bonne continuité.
Lupin