Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

passer un array d'une procédure à l'autre

5 réponses
Avatar
le Nordiste
bonjour,

Je n'arrive pas =E0 passer un array d'une proc=E9dure =E0 l'autre pourquoi =
,
et comment faire ?

Voici mon code

'<<<<<<
Function EstElementDEnsemble(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAM=C9TRE 'varElement' APPARTIENT IL =C0 L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'=C9L=C9MENT APPARTIENT =C0 L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

EstElementDEnsemble =3D False

For i =3D 0 To UBound(arrEnsemble)
If varElement =3D arrEnsemble(i) Then EstElementDEnsemble =3D True
Next i

End Function

'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
Sub EstElementDEnsemble_lancement()
'proc=E9dure d'essai de la fonction ci-dessus

ensemble =3D Array("C", "F", "B", "a")

varElement =3D "a"
MsgBox (" appartient =E0 l'ensemble " & EstElementDEnsemble(varElement,
ensemble))

End Sub

'>>>>>>>

Merci de votre aide,

5 réponses

Avatar
FS
Bonjour,

Tu n'as pas besoin d'utiliser ParamArray pour passer un tableau en
argument d'une fonction. Ni de passer un tableau délimité. Et également,
par défaut, une fonction déclarée avec un résultat booléen renvoie False
sauf si tu programmes explicitement le contraire.
Essaye ces modifs de ton code :

'<<<<<<
Function EstElementDEnsemble_1(varElement As Variant, arrEnsemble As
Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

'EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble_1 = True
Next i

End Function

'=================================================================== Sub EstElementDEnsemble_lancement_1()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")

varElement = "q"
MsgBox (" appartient à l'ensemble = " &
EstElementDEnsemble_1(varElement, ensemble))

End Sub

'>>>>>>>

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

le Nordiste a écrit :
bonjour,

Je n'arrive pas à passer un array d'une procédure à l'autre pourquoi ,
et comment faire ?

Voici mon code

'<<<<<<
Function EstElementDEnsemble(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

End Function

'=================================================================== > Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")

varElement = "a"
MsgBox (" appartient à l'ensemble " & EstElementDEnsemble(varElement,
ensemble))

End Sub

'>>>>>>>

Merci de votre aide,


Avatar
FS
Re,

Je ne sais pas, à la réflexion, si j'ai bien répondu à ta question.
Si tu veux utiliser ParamArray, ce n'est pas un tableau qu'il faut
passer à ta fonction mais la liste des valeurs à comparer à l'élément
cherché.
Ça donne ça :

'<<<<<<
Function EstElementDEnsemble_2(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

'EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble_2 = True
Next i

End Function

'=================================================================== Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

Elt = "a"

MsgBox " appartient à l'ensemble = " & _
EstElementDEnsemble_2(Elt, "c", "f", "b", "a")

End Sub

'>>>>>>>


FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

le Nordiste a écrit :
bonjour,

Je n'arrive pas à passer un array d'une procédure à l'autre pourquoi ,
et comment faire ?

Voici mon code

'<<<<<<
Function EstElementDEnsemble(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

End Function

'=================================================================== > Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")

varElement = "a"
MsgBox (" appartient à l'ensemble " & EstElementDEnsemble(varElement,
ensemble))

End Sub

'>>>>>>>

Merci de votre aide,


Avatar
michdenis
En supplément à ce que propose Frédéric,

Et tu pourrais remplacer cette boucle :

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

Par :

If IsNumeric(Application.Match(varElement, arrEnsemble, 0)) Then
EstElementDEnsemble = True
End If





"le Nordiste" a écrit dans le message de groupe de discussion
:
bonjour,

Je n'arrive pas à passer un array d'une procédure à l'autre pourquoi ,
et comment faire ?

Voici mon code

'<<<<<<
Function EstElementDEnsemble(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

End Function

'=================================================================== Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")

varElement = "a"
MsgBox (" appartient à l'ensemble " & EstElementDEnsemble(varElement,
ensemble))

End Sub

'>>>>>>>

Merci de votre aide,
Avatar
Xavier
Je réponds pas à ta question mais on peut simplifier ton code ainsi


Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")
varElement = "a"
If IsNumeric(Application.Match(varElement, ensemble, 0)) Then
MsgBox "c'est dedans!"
Else
MsgBox "c'est pas dedans!"
End If
End Sub

Xavier

le Nordiste a écrit :
bonjour,

Je n'arrive pas à passer un array d'une procédure à l'autre pourquoi ,
et comment faire ?

Voici mon code

'<<<<<<
Function EstElementDEnsemble(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

End Function

'=================================================================== > Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")

varElement = "a"
MsgBox (" appartient à l'ensemble " & EstElementDEnsemble(varElement,
ensemble))

End Sub

'>>>>>>>

Merci de votre aide,


Avatar
michdenis
Oublie ma suggestion.
Match() ne fait pas de distinction entre minuscule et majuscule




"michdenis" a écrit dans le message de groupe de discussion :

En supplément à ce que propose Frédéric,

Et tu pourrais remplacer cette boucle :

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

Par :

If IsNumeric(Application.Match(varElement, arrEnsemble, 0)) Then
EstElementDEnsemble = True
End If





"le Nordiste" a écrit dans le message de groupe de discussion
:
bonjour,

Je n'arrive pas à passer un array d'une procédure à l'autre pourquoi ,
et comment faire ?

Voici mon code

'<<<<<<
Function EstElementDEnsemble(varElement As Variant, ParamArray
arrEnsemble() As Variant) As Boolean
'LE PARAMÉTRE 'varElement' APPARTIENT IL À L'ENSEMBLE arrEnsemble
'RETOURNE 'VRAI' SI L'ÉLÉMENT APPARTIENT À L'ENSEMBLE, SINON RETOURNE
'FAUX'

Dim i As Integer

EstElementDEnsemble = False

For i = 0 To UBound(arrEnsemble)
If varElement = arrEnsemble(i) Then EstElementDEnsemble = True
Next i

End Function

'=================================================================== Sub EstElementDEnsemble_lancement()
'procédure d'essai de la fonction ci-dessus

ensemble = Array("C", "F", "B", "a")

varElement = "a"
MsgBox (" appartient à l'ensemble " & EstElementDEnsemble(varElement,
ensemble))

End Sub

'>>>>>>>

Merci de votre aide,