Passer des parametres

laskachien Messages postés 30 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 27 septembre 2014 - 15 déc. 2010 à 12:06
laskachien Messages postés 30 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 27 septembre 2014 - 17 déc. 2010 à 14:43
Bonjour
Je ne me souviens plus de la forme de passage de parametres pour l appelant et l appelee SUB
J ai a passer a Sub
2 integer A B
1Range R issu d une Target.Address(peut t on passer directement ¨Target.Address¨?
foo A,B,R
Sub foo A as integer,B as integer,R as Range (ou simplement Target.Address?)Je ne sais si la semantique est juste!

4 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
15 déc. 2010 à 12:41
Salut,

pas tres clair la question !

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ValeurA As integer, ValeurB As integer

Call MaMacro(ValeurA, ValeurB, Target.Address )

End Sub

Sub MaMacro (Byval A As integer, Byval B As Integer, Byval R As String)

End Sub


ou alors

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ValeurA As integer, ValeurB As integer

Call MaMacro(ValeurA, ValeurB, Target)

End Sub

Sub MaMacro (Byval A As integer, Byval B As Integer, Byref R As Range) 'pour les objets préférer "byref"

Msgbox "La valeur en " & r.address & " = " & r.Value

End Sub


A+
0
laskachien Messages postés 30 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 27 septembre 2014
16 déc. 2010 à 15:06
Bonjour j ai essaye,mais nouveau pb!Mon code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myrge As Range
Dim.............
If Not Intersect(Target, Range("F6:P30")) Is Nothing Then
DcType = 1
GoTo NUM
End If
If Not Intersect(Target, Range("C6:C30")) Is Nothing Then
DcType = 2
Else
MsgBox ¨ErrorOnenter¨, vbCritical
Exit Sub
End If
NUM: If IsNumeric(Target.Value) Then
newval = Target.Value
myrge = Target.Address
REM var Objet NON DEFINI!!!!!!!!!!!!!!!!!!!!!!
Else
Exit Sub
End If
If DcType = 1 Then
Call watchDebit(newval, myrge)
End If
If DcType = 2 Then
Call watchCredit(newval, myrge)
End If
End Sub
Dans module
Sub watchCredit(ByVal newval, ByRef myrge As Range)
End Sub
Comprends pas car j avais deja avant recupere une address avec target ou R C
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
16 déc. 2010 à 22:08
Salut,

2 erreurs :

1) myrge est dimensionné pour recevoir un objet de type Range (Dim myrge As Range) alors que Target.Address renvois une chaine (string)

2) pour assigner un objet à une variable objet on utilise "Set".

en résumé remplace : myrge = Target.Address

par : Set myrge = Target

A+
0
laskachien Messages postés 30 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 27 septembre 2014
17 déc. 2010 à 14:43
Bonjour
Quelle evidence!On ne reflechi jamais assez inpardonable,on se precipite a traficoter!Merci du tuyau.Cela clos le sujet
0
Rejoignez-nous