Appel de fonction VBA [Résolu]

Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Dernière intervention
1 octobre 2008
- - Dernière réponse : justin92330
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
3
Merci
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"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
3
Merci
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"

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de mortalino
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Dernière intervention
1 octobre 2008
0
Merci
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
Commenter la réponse de justin92330
Messages postés
13368
Date d'inscription
lundi 13 décembre 2004
Dernière intervention
3 février 2018
0
Merci
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  
Commenter la réponse de PCPT
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Dernière intervention
1 octobre 2008
0
Merci
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
Commenter la réponse de justin92330
Messages postés
32
Date d'inscription
lundi 21 juillet 2008
Dernière intervention
1 octobre 2008
0
Merci
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
Commenter la réponse de justin92330

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.