begin process at 2012 02 14 14:54:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Objet Listbox comme argument d'une procédure VBA Excel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Objet Listbox comme argument d'une procédure VBA Excel

jeudi 6 novembre 2008 à 22:37:08 | Objet Listbox comme argument d'une procédure VBA Excel

beaujack

Bonjour,

Avec excel 2000 et VBA
Depuis 2 jours, je ne trouve pas; ni dans les forum ni dans les tutoriels ni dans les ouvrages spécialisés grand public et professionnels l'explication de passage d'objet comme argument d'une procédure VBA excel
Voilà ce que je souhaite faire :

Dans Userform1 j'ai 3 ListBox (ListBox1,ListBox2,ListBox3) chacune contient des informations  différentes
pour chacune il y a 1 CommandButton (CommandButton1,CommandButton2,CommandButton3)

Chaque bouton doit me permettre d'exécuter la même procédure Sub pour éviter de l'écrire 3 fois

Je pensais faire :
     Call maprocédure (ListBox1)..........quand je clique sur le bouton CommandButton1
     Call maprocédure (ListBox2)..........quand je clique sur le bouton CommandButton2
     Call maprocédure (ListBox3)..........quand je clique sur le bouton CommandButton3

et dans la procédure
     Sub maprocédure (une variable objet ?....)  qui récupère soit ListBox1, soit ListBox2 ou ListBox3 suivant  le  bouton sur lequel j'ai cliqué.

Merci d'avance de votre aide,
J.B
jeudi 6 novembre 2008 à 22:53:32 | Re : Objet Listbox comme argument d'une procédure VBA Excel

jmfmarques

Membre Club
maprocedure listbox1
maprocedure lisbox2
...

Private sub maprocedure(ctrl as control)
..........
end sub

maintenant, avec VBA, c'est peut-être as MSforms.listbox ou quelque-chose de similaire
jeudi 6 novembre 2008 à 23:08:22 | Re : Objet Listbox comme argument d'une procédure VBA Excel

Orohena

Bonjour beaujack

J'ai simulé ton userform. J'ai donc créé un userform avec un listbox et un bouton. Le code du formulaire est le suivant, et sur mon PC il s'exécute sans problème.

Private Sub CommandButton1_Click()
    Call maprocedure(ListBox1)
End Sub

Sub maprocedure(o As Object)
...
End Sub

Néanmoins d'après moi, il vaudrait mieux passer comme argument du Call un identificateur du bouton, qui permette à maprocedure() de récupérer l'objet, comme dans l'exemple ci-dessous :

Private Sub CommandButton1_Click()
    Call maprocedure(id:=1)
End Sub

Sub maprocedure(ByVal id As Integer)
    Dim o As Object
    Select Case id
        Case 1
            Set o = ListBox1
        ...
    End Select
End Sub

Cordialement

Citations célèbres :

 

Impossible n'est pas français

Napoléon, 1808

Impossible n'est pas vbfrançais

Orohena, 2008

jeudi 6 novembre 2008 à 23:08:50 | Re : Objet Listbox comme argument d'une procédure VBA Excel

bigfish_le vrai

Membre Club
Salut,

je ne vais as t'apprendre grans chose vu que tu y etais presque :

Private Sub CommandButton1_Click()
    Call MaProcedure(Me.ListBox1)
End Sub

Sub MaProcedure(Byval MonControl As Object)
    MsgBox MonControl.Name
End Sub

Prend l'habitude de definir aussi la methode de passage du parametre c'est a dire si tu veux passer la valeur (Byval) ou la variable (Byref). Sache que par defaut si tu ne specifis rien VBA utilise ByRef.
Dans ce cas si la valeur de ta variable passée en parametre change dans la sub ou la fonction appelé elle sera aussi changée dans la variable d'origine.

Exemple:

Sub Test()
Dim MonNom As String, MomNomDeFamille As String
MonNom = "James Bond"
MomNomDeFamille = ExtraireNomDeFamille(MonNom)
MsgBox "Vous Etes : " & MonNom _
& vbCrLf & "Votre Nom de Famille est : " & MomNomDeFamille
End Sub

Function ExtraireNomDeFamille(ByVal NonRecuEnParametre As String) As String
NonRecuEnParametre = Right(NonRecuEnParametre, InStr(1, StrReverse(NonRecuEnParametre), Chr(32)) - 1)
ExtraireNomDeFamille = NonRecuEnParametre
End Function
Premier essait avec Byval :

la reponse sera :

Vous Etes : James Bond
Votre Nom de Famille est : Bond

deuxieme essait avec rien ou ByRef :

la reponse sera :

Vous Etes : Bond <--- regarde bien ici
Votre Nom de Famille est : Bond

dans ce dernier cas la valeur de ta variable d'origine a elle aussi changer.
D'ou l'importance de specifier la methode

A+
jeudi 6 novembre 2008 à 23:10:02 | Re : Objet Listbox comme argument d'une procédure VBA Excel

Orohena

Sorry jmfmarques, je n'ai pas vu ta réponse
jeudi 6 novembre 2008 à 23:12:22 | Re : Objet Listbox comme argument d'une procédure VBA Excel

bigfish_le vrai

Membre Club
Re,

Désolé pour le poste croisé

A+
jeudi 6 novembre 2008 à 23:21:28 | Re : Objet Listbox comme argument d'une procédure VBA Excel

Orohena

C'est vrai que ç'est un peu le bazar
désolé, beaujack, tu n'as plus qu'à faire le tri...

@+

Citations célèbres :

 

Impossible n'est pas français

Napoléon, 1808

Impossible n'est pas vbfrançais

Orohena, 2008

vendredi 7 novembre 2008 à 08:22:26 | Re : Objet Listbox comme argument d'une procédure VBA Excel

PCPT

Administrateur CodeS-SourceS
salut,

module de class, object, ok.
mais module je ne vois pas ce qui empêche de typer explicitement

Coloration syntaxique, vendredi 07 novembre 2008 08:22 Public Sub  MaProc( ByRef  oLBox  As  MSForms.ListBox)
    oLBox.AddItem CStr(Time)
    oLBox.AddItem "+ une ligne"
    oLBox.AddItem "-----------"
End Sub


et l'appel est bon, avec ou sans CALL

Coloration syntaxique, vendredi 07 novembre 2008 08:23 Private Sub  CommandButton1_Click()
    Call MaProc(ListBox1)
    MaProc ListBox3
End Sub


++

Prenez un instant pour répondre à ce sondage svp 
lundi 10 novembre 2008 à 03:42:50 | Re : Objet Listbox comme argument d'une procédure VBA Excel

PCPT

Administrateur CodeS-SourceS
salut,

merci pour tes remerciements (collectifs) en MP, çà fait plaisir

pour ton "résumé", OBJECT va fonctionner mais je maintiens que ce n'est pas approprié

en plus comme ici tu connais le type, ce n'est vraiment pas utile, c'est comme si tu mettais VARIANT, un peu trop passe-partout

ps : pour éviter une copie mémoire on passe les objets BYREF, et non BYVAL comme tu utilises actuellement
++

Prenez un instant pour répondre à ce sondage svp 


Cette discussion est classée dans : bouton, objet, excel, procédure, maprocédure


Répondre à ce message

Sujets en rapport avec ce message

Sous Excel temporiser une procédure [ par Michel ] Je voudrais sous Excel lancer une une procédure mais au bout d'un certain temps, le temps pour le programme de récupérer des données externes (DDE), m charger un fichier excel dans une dbgrid [ par adoum ] Voila,je choisit un fichier xls à partir d'une common dialog. Je récupére le chemein, le nom du fichier; Ensuite je passe ces paramétres comme à l'obj vb excel [ par erich ] bonjourj'ai fait un bouton dans vb et ,je fais des actions sous excel en ayant repris la macro excel. tout fonctionne bien mais je voudrais que la mac Éviter la fenêtre de confirmation lors d'un "SaveAs" avec un objet Excel. [ par Sekiryou ] Comment éviter qu'un fenêtre de confirmation apparaîsse lorsque je fais un "SaveAs" avec un objet Excel en Visual Basic.À chaque fois que je tente d'e Éviter la fenêtre de confirmation lors d'un "SaveAs" avec un objet Excel. [ par Sekiryou ] Comment éviter qu'un fenêtre de confirmation apparaîsse lorsque je fais un "SaveAs" avec un objet Excel en Visual Basic.À chaque fois que je tente d'e Éviter la fenêtre de confirmation lors d'un "SaveAs" avec un objet Excel. [ par Sekiryou ] Comment éviter qu'un fenêtre de confirmation apparaîsse lorsque je fais un "SaveAs" avec un objet Excel en Visual Basic.À chaque fois que je tente d'e Comment ouvrir un fichier ACCESS par un bouton Excel ou Vba ? [ par Fabrice ] Salut à tous,QQun pourrait me dire comment ouvrir un fichier Access d' après un bouton Excel ou VBA ( lignes de commande )? Merci d' avance. Ouvrir un doc Excel par un bouton de commande Access [ par chouchou ] e voudrais ouvrir un doc Excel grace a un bouton de commande d'un formulaire Access. Je tape mon code VB :Private Sub Commande0_Click()Excel.Workbooks Cadre d'objet indépt, feuille de calcul excel [ par Julie ] En vba, comment insérer des données issues de requête dans une feuille de calcul excel créée dans un formulaire(avec l'outil: cadre d'objet indépendan


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,714 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales