Pramettres en VB macro excel

Fermé
bonjour - 19 sept. 2003 à 10:28
 bonjour - 19 sept. 2003 à 12:08
Bonjour,

comment on fait pour passer un paramettre a un sub ou a une fonction ?

sub toto()
...
truc(TT,YY)
....
end sub

fonction truc(gfdgfd,gfgd)
....
end fonction ???

merci
A voir également:

12 réponses

nebulus Messages postés 47 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2004 4
19 sept. 2003 à 10:41
Salut,

Un petit exemple inutile mais juste pour illustrer ;-))
Sub ma_sub_1()
   Call ma_sub_2("world")
End Sub

Sub ma_sub_2(mon_param)
  MsgBox ("hello " & mon_param)
  MsgBox (ma_func1(5, 9))
End Sub

Function ma_func1(param1, param2)
  ma_func1 = param1 + param2
End Function


@+
Nebulus
En route pour de nouvelles aventures !
0
merci
0
choubaka Messages postés 39396 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 8 juin 2024 2 101
19 sept. 2003 à 10:51
salut, petit exemple...

Private Sub GetTotal()
   Dim curTotal As Currency
   Dim sngDisc As Single

  ................................

   Call SalesTax(curTotal, sngDisc)
End sub

Public sub salesTax(curTotal As Currency, sngRateDisc As single)
    Dim intMsg As Integer
 .....................................

   intMsg = MsgBox("Taxation Totale : " & curTotal)


End sub


   


voilà, ça veut pas dire grand chose, mais c'est la technique...

Le nom des variables passées ne doit pas correspondre forcément au nom des arguments reçus, par contre le type des données doit être identique.

Il existe deux méthode de passage d'arguments, par référence et par valeur. Par référence étant la méthode par défaut, ce qui signifie que la procédure appelée peut modifier les arguments de la procédure appelante. L'autre méthode étant le passage par valeur, la procédure appelée ne peut pas modifier les arguments. La signature de la méthode est différente...

Public sub salesTax(ByVal curTotal As Currency, ByVal sngRateDisc As single)


voilà 8)

ChoubaPostor 10000 :
Le soulèvement des modos.
0
choubaka Messages postés 39396 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 8 juin 2024 2 101
19 sept. 2003 à 10:53
oups, sorry, j'ai été un peu lent sur le coup

ChoubaPostor 10000 :
Le soulèvement des modos.
0
bon ben ca marche pas terrible j'ai oublié un truc ?

Sub toto()
nom = "BX"
coment = "HS"
datage (nom_serveur)
End Sub

Function datage(veur As String)
For x = 2 To 100
If Cells(1, x).Value <> "" Then
If Cells(1, x).Value = veur Then
Cells(Day(Date) + 1, x).Value = Date
Cells(Day(Date) + 1, x).Select
If commentaire <> "" Then
Selection.Interior.ColorIndex = 37
End If
End If
End If
Next x
End Function

ca ca marche

Sub toto()
nom_serveur = "BX"
coment = "HS"
datage (nom,coment)
End Sub

Function datage(veur As String, commentaire As String)
For x = 2 To 100
If Cells(1, x).Value <> "" Then
If Cells(1, x).Value = veur Then
Cells(Day(Date) + 1, x).Value = Date
Cells(Day(Date) + 1, x).Select
If commentaire <> "" Then
Selection.Interior.ColorIndex = 37
End If
End If
End If
Next x
End Function

comment on fait pour passer 2 paramettres a une fonction ?
0
choubaka Messages postés 39396 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 8 juin 2024 2 101
19 sept. 2003 à 11:05
ça ? ça marche?

datage (nom_serveur, coment)


ChoubaPostor 10000 :
Le soulèvement des modos.
0

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

Posez votre question
oups erreur de nom de variables,
mais la ca marche pas si je mets un deuxieme paramettre
la ligne
datage(nom_serveur,coment) repond "syntaxe erreur"

alors qu'elle marche avec un seul des paramettres pourquoi ?
0
autant dire que
datage (nom_serveur, coment) -> syntaxe erreur
avec la ligne :
Function datage(veur As String, commentaire As String)

alors que datage (nom_serveur) marche avec la ligne
Function datage(veur As String)

donc je comprend pas pourquoi
0
choubaka Messages postés 39396 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 8 juin 2024 2 101
19 sept. 2003 à 11:15
il est fort possible que le problème se trouve au coeur même de ta mfonction datage, dans ton premier essai où "commentaire" est testé, je ne vois pas à quoi celà fait référence. alors que dans le deuxième essai, commentaire est passé en argument, et là ça foire.. Je pense donc que le problème vient de là..

ChoubaPostor 10000 :
Le soulèvement des modos.
0
non c'est pas le probleme commentaire fixé a la main (donc 1 seul parametre) ca marche

si je passe le paramettre ca marche pas

c'est donc bien la syntaxe

nomdefonction(arg,arg) qui n'est pas bonne...
0
nebulus Messages postés 47 Date d'inscription mardi 29 juillet 2003 Statut Membre Dernière intervention 1 septembre 2004 4
19 sept. 2003 à 11:34
En déclarant la fonction comme ceci :
Function datage(veur, commentaire)
(donc sans les "as string") ça passe non ?

@+
Nebulus
En route pour de nouvelles aventures !
0
non plus
c'est pareil des que je tape
datage(XXXXXXX,YYYYYYY) ca repond syntaxe erreur
meme sans mettre de variable dedant mais directement des valeurs c'est pareil :

une function ne doit pas pouvoir se lancer comme une fonction
x=datage(tttt,fffff)
passe en syntaxe
mais biensur ne peut pas s'executer correctement

donc la syntaxe c'est autre chose .....
0
j'ai trouvé c'est comme ca

Function datage(serveur, commentaire)
For x = 2 To 100
If Cells(1, x).Value <> "" Then
If Cells(1, x).Value = serveur Then
Cells(Day(Date) + 1, x).Value = Date
Cells(Day(Date) + 1, x).Select
If commentaire <> "" Then
Selection.Interior.ColorIndex = 37
End If
End If
End If
Next x
End Function

Sub toto()
nom_serveur = "DI"
coment = "TEST"
Call datage(nom_serveur, coment)
End Sub

en fait c'est parceque cette merde d'excel ne sait pas appeler une fonction comme un mot clé...

apres la 11eme version ....

bref encore à cause de la logique M$ ...
Je veux rebosser sur des projets unix .....ouinnnnn....j'aurrai jamais du accepter de donner un coup de main sur ce tableau excel
0
Merci en tout cas.
0