Appel de fonction VBA [Résolu]

Signaler
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
1 octobre 2008
-
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
1 octobre 2008
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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"
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
1 octobre 2008

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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
39
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  
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
1 octobre 2008

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
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Statut
Membre
Dernière intervention
1 octobre 2008

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