Appel procedure

panorama12 Messages postés 39 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 21 juin 2006 - 22 mars 2006 à 12:02
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 - 23 mars 2006 à 18:14
bonjour.
je voudrais en fait créer une procédure qui prend comme parametre une feuille excel.
j'ai en fait 2 feuilles de calcul excel et je traite les données de la m^me manière pour les 2 feuilles:il y'a juste le nom de la feuille qui change dans mon code.
pour eviter de le réecrire, je voudrais utiliser une procedure que j'appellerai 2 fois,une fois pour pour chacune des feuilles.
j'ai essayé:

sub traitement(feuille as worksheet)


end sub

mais quand j'appelle

sub travail()
traitement feuil1
end sub

j'ai un message d'erreur.

sui quelqu'unpeut m'aider...
merci

5 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
22 mars 2006 à 12:05
Salut,

- C est quoi exactement le message d erreur?
- Est tu sur que la Feuille passée en parametre à un nom correct
- essaie: Call Traitement(ActiveWorkbook.Sheets("Feuil1"))

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
0
AdilELHASSOUNI Messages postés 145 Date d'inscription vendredi 11 janvier 2002 Statut Membre Dernière intervention 19 juin 2007 1
22 mars 2006 à 12:25
Salut
essaye de declarer
sub traitement( ByVal feuille as worksheet)
peut etre c'est a cause de cela
bonne chance
0
panorama12 Messages postés 39 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 21 juin 2006
22 mars 2006 à 13:30
salut.
j'ai essayé ce que tu m'as dit et ca fait toujours pareil.
en fait il me met :erreur définie par l'application ou par l'objet
je continue à chercher
0
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
22 mars 2006 à 15:27
En fait, ta procédure demande un objet worksheet comme argument.
Il faut donc lui passer un objet et pas un nom.

la syntaxe de jrivet est bonne :

call traitement (activeworkbook.sheets("Feuil1"))

Maintenant, si ça bloque toujours, c'est que ça ne vient pas de l'appel de procédure mais d'une erreur dans le code de la procédure

Essaye l'exécution pas à pas pour déceler la ligne qui bug

Essaye aussi de faire un bouclage sur tes feuiles pour être sur de l'argument que tu utilises :

Sub Tester()
Dim sht as worksheet
For each sht in thisworkbook.sheets
call traitement (sht) ' "traitement sht" marche aussi
next
end sub

@+++
[mailto:K@lobit K@lobit]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
23 mars 2006 à 18:14
Salut Panorama, salut à tous,

comme je vais dire du mal, j'attaque par du bien :
splendide réflexe que de préférer améliorer une fonction en la rendant plus générique, et éviter de dupliquer du code! Un exemple à suivre !Chapeau bas !

bon, ça c'est fait,...
ensuite :
je pense que Kalobit a raison, s'il y a une erreur dans la procédure, et qu'elle n'y est pas traitée, elle remonte à l'appelant (après, en ce qui concerne la syntaxe, ta syntaxe originelle devrait, il me semble, fonctionner [déclaration et instanciation implicite, comme Form1 dans VB], mais ce n'est pas fiable, il vaut mieux faire comme le dit jrivet).

Indice, si tu as développé le contenu de ta fonction dans le code de la feuille, et que tu l'as ensuite déporté dans une fonction autonome (voire même dans un module standard), et vu que tu utilises les facilités du langage (passer feuil1 est une facilité), tu devrais vérifier toutes tes références, une fois qu'elles sont délocalisées (ex: ActiveSheet, Me,...) et tu devrais vérifier la portée des variables que tu y utilise (sont elles visibles, utilise-je bien la locale ou la globale ou l'argument, sont-elles initialisées???)

Notes-bien que si toutes ces vérifs sont fastidieuses, elles sont dues au fait que tu utilises peut-être trop les facilités du langage, donc la syntaxe de jrivet est décidément la bonne!

à+


rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>
0
Rejoignez-nous