Passer des parametres

Signaler
Messages postés
30
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
27 septembre 2014
-
Messages postés
30
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
27 septembre 2014
-
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

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
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+
Messages postés
30
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
27 septembre 2014

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
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
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+
Messages postés
30
Date d'inscription
lundi 21 mai 2007
Statut
Membre
Dernière intervention
27 septembre 2014

Bonjour
Quelle evidence!On ne reflechi jamais assez inpardonable,on se precipite a traficoter!Merci du tuyau.Cela clos le sujet