Appel de fonction VBA [Résolu]

justin92330 32 Messages postés lundi 21 juillet 2008Date d'inscription 1 octobre 2008 Dernière intervention - 23 juil. 2008 à 10:40 - Dernière réponse : justin92330 32 Messages postés lundi 21 juillet 2008Date d'inscription 1 octobre 2008 Dernière intervention
- 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

mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 23 juil. 2008 à 10:48
+3
Utile
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"
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 23 juil. 2008 à 11:04
+3
Utile
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"
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de mortalino
justin92330 32 Messages postés lundi 21 juillet 2008Date d'inscription 1 octobre 2008 Dernière intervention - 23 juil. 2008 à 10:57
0
Utile
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
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 23 juil. 2008 à 11:00
0
Utile
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
justin92330 32 Messages postés lundi 21 juillet 2008Date d'inscription 1 octobre 2008 Dernière intervention - 23 juil. 2008 à 11:05
0
Utile
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
justin92330 32 Messages postés lundi 21 juillet 2008Date d'inscription 1 octobre 2008 Dernière intervention - 23 juil. 2008 à 11:15
0
Utile
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.