VBA procédure à plusieurs arguments

Résolu
musetiq Messages postés 5 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 29 janvier 2015 - 18 mai 2011 à 15:16
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 - 18 mai 2011 à 16:03
Bonjour,

Je voudrais créer une procédure prenant en entrée deux arguments. ça à l'air simple, mais je n'y parviens pas...

Voici comment je procède :
[i]sub maprocédure (argument1 as Integer, Argument2 as integer)
.
.
.
End Sub/i

Et pour l'appeler (d'une autre procédure) :

maprocédure (arg1,arg2)

Malheuresement, cette dernière ligne n'est pas accepté, et m'est renvoyé :
"Erreur de compilation, Attendu : = "

Des idées ?

Merci

4 réponses

musetiq Messages postés 5 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 29 janvier 2015
18 mai 2011 à 16:02
J'ai enfin trouvé la solution : passer par un "call" :

call maprocédure(arg1,arg2)
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
18 mai 2011 à 15:27
bonjour
mets nous ta procédure exacte sinon on en est réduit à la boule de cristal pour trouver l'erreur


si c'est la solution, penser : REPONSE ACCEPTEE
0
musetiq Messages postés 5 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 29 janvier 2015
18 mai 2011 à 15:45
Dans la procédure principale :
Calcul_rdt_1016 (nb_colonnes_restantes, i )


Et la procédure Calcul_rdt_1016 en question :

Sub Calcul_rdt_1016(nb_colonnes, _
jour As Integer)

Dim nb_ligne, num_ligne_10h, num_ligne_16h, num_col, num_ondu As Integer
Dim formule As String

nb_ligne = 7
num_col = 2

' Recherche de la dernière ligne et des ligne "10h" et "16h"
While Not IsEmpty(Cells(nb_ligne, 1))
If Cells(nb_ligne, 1) 10 / 24 Then num_ligne_10h nb_ligne '24h correspond à 1 numériquement. 10 correspond donc à 10 / 24
If Cells(nb_ligne, 1) 16 / 24 Then num_ligne_16h nb_ligne
nb_ligne = nb_ligne + 1
Wend
Cells(nb_ligne, 1) = "Rendement entre 10 et 16h"

' Recherche de la colonne contenant les rendements
While num_col < nb_colonnes
While Not IsEmpty(Cells(num_ligne_10h, num_col))
num_col = num_col + 1
Wend 'num_colonne correspond à la colonne vide
num_col = num_col - 1 'num_colo correspond à la colonne où ont été calculés les rendements
formule = "=AVERAGE(" & Cells(num_ligne_10h, num_col).Address & " : " & Cells(num_ligne_16h, num_col).Address & ")"
Cells(nb_ligne, num_col).Value = formule

num_ondu = Cells(2, num_col).Value
Sheets("Bilan").Cells(jour, num_ondu).Value = Cells(nb_ligne, num_col).Value

num_col = num_col + 2



Wend

End Sub
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
18 mai 2011 à 16:03
je ne vois pas où est l'erreur
est ce que ta procédure est dans le même module que la procédure où se trouve l'appel ?
si ce n'est pas le cas ta procédure doit être déclarée Public

d'autre part je n'aime pas trop "nb_colonnes_restantes" il est préférable de faire "NbColonnesRestantes" les caractères spéciaux sont à proscrire dans les nom de procédures et/ou les variables


si c'est la solution, penser : REPONSE ACCEPTEE
0
Rejoignez-nous