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

Le
le Nordiste
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,
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FS
Le #20193381
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,


FS
Le #20193471
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,


michdenis
Le #20193461
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" :
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,
Xavier
Le #20193451
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,


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




"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" :
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,
Publicité
Poster une réponse
Anonyme