Appel de fonction VBA

Résolu
justin92330 Messages postés 32 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 1 octobre 2008 - 23 juil. 2008 à 10:40
justin92330 Messages postés 32 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 1 octobre 2008 - 23 juil. 2008 à 11:15
Bonjour,

Voila je travaille sous excel dans visual basic editor,

J'avais un prg qui fonctionnait sous VB6.0 mais la il bug lors de l'appel d'une fonction voila le code :

J'ai un bouton  qui appel une fonction Echange:

Private Sub cmdAdd_Click()
Function Echange(lstDispo, LstExport)
End Function

Et voila la déclaration de ma fonction :

Function Echange(lstSource As ListBox, lstDestination As ListBox)
.......
End function

Lors de l'exécution, un message d'erreur :
Incompatibilité type erreur d'execution 13

Je ne comprends pas pkoi

Merci de votre aide

Bien cordialement

6 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 juil. 2008 à 10:48
salut,

il faut rajouter le nom de la bibliothèque du control :

Function Echange(lstSource As MSForms.ListBox, lstDestination As MSForms.ListBox)

@++

le mystérieux chevalier,"Provençal, le gaulois"
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
23 juil. 2008 à 11:04
oui, j'ai + qu'une idée :
ListBox VB6 <> ListBox VBA, tout comme VB6 <> VBA (se ressemble, certe, mais.. tu commences à voir les différences)

Bref, comme le message d'erreur te le dit, cette propriété n'existe pas en VBA.

@++

le mystérieux chevalier,"Provençal, le gaulois"
3
justin92330 Messages postés 32 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 1 octobre 2008
23 juil. 2008 à 10:57
C'est super y a plus ce message d'erreur mais y en a un autre un peu plus loin

:

Private Sub cmdAdd_Click()
Function Echange(lstDispo, LstExport)
End Function

Function Echange(lstSource As MSForms.ListBox, lstDestination As MSForms.ListBox)
Dim lgTmp As Long
If (lstSource.ListCount > 0) Then
    If (lstSource.ListIndex > -1) Then
        lgTmp = lstSource.ListIndex
        lstDestination.AddItem lstSource.List(lgTmp)
        lstDestination.ItemData(lstDestination.NewIndex) = lstSource.ItemData(lgTmp)     <------------ message d'erreur a cette ligne : Propriété ou methode non géré par cet objet

Aurais tu une idée?

Merci de ton aide

Bien cordialement
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
23 juil. 2008 à 11:00
salut,

Private Sub cmdAdd_Click()
Function Echange(lstDispo, LstExport)
End Function

on appelle pas une fonction en écrivant FUNCTION

une fonction retourne un résultat
valeur = Echange(lstDispo, LstExport)

si ta fonction Echange ne retourne rien, fais en une procédure

Sub Echange(lstSource As ListBox, lstDestination As ListBox)
.......
End Sub

et appelle-la
Call Echange(lstDispo, LstExport)
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
justin92330 Messages postés 32 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 1 octobre 2008
23 juil. 2008 à 11:05
Autant pour moi je me suis trompé en l'écrivant sur le forum c'est bien :

Private Sub cmdAdd_Click()
Call Echange(lstDispo, LstExport)
End Sub

Cdt
0
justin92330 Messages postés 32 Date d'inscription lundi 21 juillet 2008 Statut Membre Dernière intervention 1 octobre 2008
23 juil. 2008 à 11:15
C'est bon j'ai pu faire fonctionner mon prg

Apperement il n'y a pas besoin de faire la gestion des index en VBA, il s'en occupe tout seul.

Encore merci 

Cdt
0
Rejoignez-nous