Appeler une procédure dans une procédure - VB/VBA/VBS - Programmation
Marsh Posté le 28-12-2010 à 01:21:38
Qu'est ce que tu appelles "onglet excel" ? Les feuilles de calculs ? les cellules ?
Ensuite je ne vois pas ou est le problème pour que ta fonction fonctionne avec des arguments ? Ou est-ce que tu bloques ?
Développe un peu ta question parce que pour l'instant c'est pas très clair, au besoin post ton sub pour qu'on y voit plus clair !
Marsh Posté le 28-12-2010 à 01:55:27
les onglets excel c'est les sheets, mais j'ai le code qu'il faut pour ça
Sinon bah je ne connais pas le fonctionnement des Sub avec des arguments en fait, comment initialiser le truc, et comment appeler la sub ?
Marsh Posté le 28-12-2010 à 09:22:12
En Basic, il y a deux sortes deux fonctions (alors qu'il n'y en a qu'un en C) : les Sub... et les Function...
Les Sub s'appelllent avec l'instruction Call ...
Les Function s'appellent avec ma_variable = ...
Les données en paramètre des Sub et des Fonctions se mettent comme en C, mais sans que l'on ait besoin d'indiquer le type.
Sub ma_routine(ma_var1, ma_var2)
MsgBox("var1 = " & ma_var1 & ", var2 = " & ma_var2 & "." )
End Sub
Marsh Posté le 28-12-2010 à 12:27:18
Ta sub, il faut que tu la mettes dans un module à part, mais je pense que tu l'as déjà fait.
Ensuite, si tu veux passer en paramètre le nom des onglets le début de ta sub sera :
sub MaRoutine(NomOnglet1 as String, NomOnglet2 as String) |
ensuite, tu lances ta routine ainsi :
Call MaRoutine("Nom de l'onglet 1", "Nom de l'onglet 2" ) |
La routine attendant une chaine de caractères. Mais tu peux aussi lui passer en paramètre des variables de type String :
Dim strOnglet1 as String strOnglet1="Feuil1" Call MaRoutine(strOnglet1, strOnglet2) |
Marsh Posté le 30-12-2010 à 11:17:44
Bon alors quand j'executé la Sub en écrivant clairement en dur le nom des onglets ça marche, mais en mode Sub appelée avec 2 arguments ça ne fonctionne plus. Si vous pouvez m'aider :
Code :
|
Mon sub d'appel dans un module différent :
Code :
|
Et enfin le message d'erreur est :
Code :
|
Et il me surligne en jaune la ligne #31.
Merci de votre aide je ne vois pas
Sachant que la Sub qui fonctionne (sans être "dynamique" ) est celle la :
Code :
|
Marsh Posté le 30-12-2010 à 11:59:06
Enlever les guillemets dans
Citation : Sheets("arg2" ).Select |
Si on laisse les guillemets, le programme croit que l'onglet s'appelle "arg2", alors qu'en fait, il s'appelle par le nom qui est contenu dans arg2.
Il faut soit mettre le vrai nom entre guuillemets, Sheets("Feuil2" ).Select, soit mettre le nom de la variable sans les guillemets, Sheets(arg2).Select
Marsh Posté le 27-12-2010 à 18:09:12
Bonjour,
j'ai fais un petit code VBA sous forme de SUB qui permet d'enrichir les données d'un onglet excel en fonction des données d'un autre onglet excel. Jusqu'ici rien de sorcier.
J'aimerais rendre ce sub "réutilisable" avec comme arguments le nom de l'onglet source et celui de l'onglet cible.
Comment procéder s'il vous plait ?
- pour transformer mon SUB en "SUB GENERIQUE"
- appeler ce SUB GENERIQUE en lui plaçant en argument des noms d'onglet (de manière fixe dans le code directement, pas de saisie utilisateur ou autre)
Merci d'avance