VBA procédure à plusieurs arguments [Résolu]

Messages postés
5
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
29 janvier 2015
- - Dernière réponse : 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
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
5
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
29 janvier 2015
3
Merci
J'ai enfin trouvé la solution : passer par un "call" :

call maprocédure(arg1,arg2)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de musetiq
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
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
Commenter la réponse de pile_poil
Messages postés
5
Date d'inscription
mardi 29 avril 2008
Statut
Membre
Dernière intervention
29 janvier 2015
0
Merci
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
Commenter la réponse de musetiq
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Statut
Membre
Dernière intervention
4 août 2012
6
0
Merci
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
Commenter la réponse de pile_poil