Probleme renvoi de données suite condition Si entre module et feuille VBA

Résolu
chamttt Messages postés 16 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 28 décembre 2009 - 20 juil. 2009 à 17:05
chamttt Messages postés 16 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 28 décembre 2009 - 21 juil. 2009 à 09:00
Bonjour à tous,

Je débute en vba et ai quelques problemes...

Je souhaite récupérer une donnée provenant d'une cellule excel via la fonction blop ci-dessous et placée dans un module. Ensuite je souhaite récupérer dans ma feuille la valeur du booléen pour que quand mon client vient cliquer, le test détermine s'il faut appeler les autres procédures ou mettre un mesgbox.

Apres plusieurs essais, l'erreur affichée est type d'argument byref incompatible....

A l'aide....
******************************************************
Public Function blop(Prout As Boolean) As Boolean

'Test la valeur de la cellule poids max. Si sup à 2000 Kilos alors retourne vrai et message d'erreur

If Sheets("Outils de calcul").Range("B16").Value > 1999 Then
Prout = [True]
End If
MsgBox (Prout)

End Function
********************************************************

Public Sub bouton_valider_Click()
Dim Pinpon As Boolean

Pinpon = Vrai


Call Module1.blop(Prout)

If Pinpon = Prout Then
MsgBox ("Pour toutes commandes dont le poids est supérieur à 2000 Kilos, merci de contacter le service Import")
Else
Call gnou
Call blabla
End If


End Sub

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 juil. 2009 à 17:18
Salut
Et quel est ton problème ?
Ta fonction blop semble correcte
Par contre, bizarre :
Tu définis blop pour qu'elle renvoie un Boolean.
Or, le résultat modifie la variable passée en paramètre.
Tu aurais pu la définir comme ça :
Public Function blop() As Boolean 
'Test la valeur de la cellule poids max. Si sup à 2000 Kilos alors retourne vrai et message d'erreur 
If Sheets("Outils de calcul").Range("B16").Value > 1999 Then 
    blop = True
End If 
End Function
en oubliant ce Prout qui n'a aucun intérêt

Et l'utiliser comme ça :
If blop = True Then
en oubliant ce Pinpon qui n'a aucun intérêt

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 juil. 2009 à 17:19
Remarque, la fonction elle non plus n'a pas beaucoup d'intérêt, sauf si tu dois la réutiliser plusieurs fois dans ton code
3
chamttt Messages postés 16 Date d'inscription mardi 30 juin 2009 Statut Membre Dernière intervention 28 décembre 2009
21 juil. 2009 à 09:00
Ah Jack merci beaucoup !!

Tu avais raison, je ne sais pas pourquoi j'ai voulu passer par une fonction alors que je pouvais mettre le code en direct...

Merci cela fonctionne au poil !
0
Rejoignez-nous