Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3084 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème Listbox en VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème Listbox en VBA

n°1000621
Heaven11
Posté le 04-03-2005 à 13:40:18  profilanswer
 

Bonjour tout le monde,
 
voila j'ai un problème qui va surement vous paraitre simple (a moi aussi surement une fois que j'aurai la solution  :D ) bref voila g deux listbox une avec des données importés d'une feuille excel et une autre vide, je voudrais réussir a passer les elements selectionnés d'une liste vers l'autre en testant si il n'y sont pas deja, pouvoir passer toute la liste, et egalement supprimer les elements de la deuxieme liste d'un coup ou un par un, je bloque car additem et removeitem ne marche apparemment pas en vba (je débute en vba g deja fait un truc de ce genre en vb mais le je vois pas)
 
merci d'avance pour vos réponses...

mood
Publicité
Posté le 04-03-2005 à 13:40:18  profilanswer
 

n°1001072
knakes
Posté le 04-03-2005 à 17:37:42  profilanswer
 

Acton par un clic qui ajoute l'item à la seconde liste s'il n'y est pas déjà :

Code :
  1. Private Sub L1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  2. Dim a As Long
  3. a = 0
  4. For i = 0 To L2.ListCount - 1
  5.     If L2.List(i) = L1.List(L1.ListIndex) Then a = 1
  6. Next i
  7. If a Then L2.AddItem L1.List(L1.ListIndex)
  8. End Sub


 
Bouton de suppression d'un item de la liste (l'objet doit être sélectionné):

Code :
  1. Private Sub C_one_Click()
  2. If L2.ListIndex < 0 Then Exit Sub 'Aucun item de sélectionné -> fin du traitement
  3. L2.RemoveItem (L2.ListIndex)
  4. End Sub


 
Bouton d'effacement de la liste:

Code :
  1. Private Sub C_all_Click()
  2. L2.Clear
  3. End Sub


Message édité par knakes le 04-03-2005 à 17:39:52
n°1003239
Heaven11
Posté le 07-03-2005 à 09:09:05  profilanswer
 

knakes a écrit :

Acton par un clic qui ajoute l'item à la seconde liste s'il n'y est pas déjà :

Code :
  1. Private Sub L1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  2. Dim a As Long
  3. a = 0
  4. For i = 0 To L2.ListCount - 1
  5.     If L2.List(i) = L1.List(L1.ListIndex) Then a = 1
  6. Next i
  7. If a Then L2.AddItem L1.List(L1.ListIndex)
  8. End Sub


 
Bouton de suppression d'un item de la liste (l'objet doit être sélectionné):

Code :
  1. Private Sub C_one_Click()
  2. If L2.ListIndex < 0 Then Exit Sub 'Aucun item de sélectionné -> fin du traitement
  3. L2.RemoveItem (L2.ListIndex)
  4. End Sub


 
Bouton d'effacement de la liste:

Code :
  1. Private Sub C_all_Click()
  2. L2.Clear
  3. End Sub



 
 
 
merci bcp je vais tester ça tout de suite...

n°1003249
Heaven11
Posté le 07-03-2005 à 09:22:21  profilanswer
 

G entré le code que tu m'a filé (merci encore d'ailleurs) et g ce msg d'erreur à l'éxecution :
 
L'expression Sur clic entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. Type défini par l'utilisateur non défini.
 
*Le résultat de l'expression n'est pas le nom d'une macro, le nom d'une fonction définie par l'utilisateur ou [Event Procedure].
 
*Une erreur a peut-être été commise lors de l'évaluation d'une fonction, d'un événement ou d'une macro.
 
je me demande a quoi sert le "ByVal Cancel As MSForms.ReturnBoolean" apparemment l'erreur viendrait de là...
 

n°1003269
Heaven11
Posté le 07-03-2005 à 09:43:44  profilanswer
 

g supprimé le byval...
 
et quand j'éxecute ca me lance le débogueur plus le msg d'erreur :
 
Erreur de compilation :
 
Membre de méthode ou de données introuvable
 
et il me surligne L2.List(i)   :??:  
 
 

n°1003395
knakes
Posté le 07-03-2005 à 11:21:07  profilanswer
 

Chose qui est tout a fait normal. Je m'excuse :
"L1" et "L2" sont les noms de mes Listbox. (c'est pour cela qu'il fait des erreurs).
"C_one" et "C_all" sont des boutons de commandes qui suppriment respectivement la ligne sélectionnée ("C_one" ) et vident la Listbox nomée "L2" ("C_all" ). Voilà l'explication.
Soit tu renomme ta première listbox en L1, la seconde en L2 et tes boutons en C_one et C_all et tout est ok, soit tu copie et colle le code dans l'évènement de tes boutons. Voilà.
Si problème(s) je suis encore là.


Message édité par knakes le 07-03-2005 à 11:22:42
n°1003401
Heaven11
Posté le 07-03-2005 à 11:25:01  profilanswer
 

knakes a écrit :

Chose qui est tout a fait normal. Je m'excuse :
"L1" et "L2" sont les noms de mes Listbox. (c'est pour cela qu'il fait des erreurs).
"C_one" et "C_all" sont des boutons de commandes qui suppriment respectivement la ligne sélectionnée ("C_one" ) et vident la Listbox nomée "L2" ("C_all" ). Voilà l'explication.
Soit tu renomme ta première listbox en L1, la seconde en L2 et tes boutons en C_one et C_all et tout est ok, soit tu copie et colle le code dans l'évènement de tes boutons. Voilà.
Si problème(s) je suis encore là.


 
g renommé mes listbox ou plutot non g remplacéL1 et L2 par le nom de mes listbox g laissé L2 ds le msg pour que ça soit compréhensible!!!  lol
 
g bien copié collé le code dans les boutons mais g toujours l'erreur

n°1003403
Heaven11
Posté le 07-03-2005 à 11:26:23  profilanswer
 

Et c'est sur que AddItem et RemoveItem marche sous VBA ???
 
g l'impression que le propriété .list ne marche pas non plus c bizarre!!!

n°1003420
knakes
Posté le 07-03-2005 à 11:38:15  profilanswer
 

En fait j'ai fait une petite erreur dans le code. J'ai mis

Code :
  1. Dim a as Long

alors que " a " n'est pas une valeur long ...
Voilà le nouveau code

Code :
  1. Private Sub L1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
  2.      Dim a As Boolean
  3.      a = False
  4.      For i = 0 To L2.ListCount - 1
  5.          If L2.List(i) = L1.List(L1.ListIndex) Then a = True
  6.      Next i
  7.      If Not a Then L2.AddItem L1.List(L1.ListIndex)
  8.      End Sub

Et encore désolé.
 
Et oui la propriété Additem "texte" ajoute bien une valeur à la liste er RemoveItem Index Supprime la ligne Index.


Message édité par knakes le 07-03-2005 à 11:38:27
n°1003432
Heaven11
Posté le 07-03-2005 à 11:46:11  profilanswer
 

G toujours les mêmes erreurs avec a en booléen g  
 
L'expression Sur clic entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. Type défini par l'utilisateur non défini.
 
*Le résultat de l'expression n'est pas le nom d'une macro, le nom d'une fonction définie par l'utilisateur ou [Event Procedure].
 
*Une erreur a peut-être été commise lors de l'évaluation d'une fonction, d'un événement ou d'une macro.

 
et si j'enleve l'entete de la fonction g  
 
Erreur de compilation :
 
Membre de méthode ou de données introuvable
 
et il me surligne L2.List(i)

 
merci bcp de ton aide  

mood
Publicité
Posté le 07-03-2005 à 11:46:11  profilanswer
 

n°1006354
Heaven11
Posté le 09-03-2005 à 09:02:46  profilanswer
 

up svp aidez-moi...  :(    lol

n°1009715
Heaven11
Posté le 11-03-2005 à 13:58:12  profilanswer
 


en farfouillant un peu sur le net g trouvé qqch mais g encore un tit pb
 
quand je passe toute la liste 1 ds la liste 2 ca marche idem quand je reinitialise la liste 1 (avec dc vidage de la liste 2 )
 
mais quand j'ajoute les éléments 1 par 1 de la liste 1 vers la liste 2 ça m'insère bien le bon éléments mais ça me supprime plusieurs éléments de la liste  1 voici mon code
 
Liste 1 >> Liste 2

Code :
  1. Private Sub Commande104_Click()
  2. Dim items As String
  3.     Dim deb As Integer
  4.    
  5.     If Me.lstMarchedispo.RowSource <> vide Then 'on ne fait l ajout que lorsqu il y a des elements a ajouter
  6.         If Me.lstMarcheSelectionne.RowSource = "" Then
  7.             deb = 0 'si la liste de droite était vide, on ecrit les entetes de colonnes
  8.         Else
  9.             deb = 1
  10.         End If
  11.        
  12.         For i = deb To Me.lstMarchedispo.ListCount - 1
  13.        
  14.             items = items & Me.lstMarchedispo.Column(1, i) & ";"
  15.        
  16.        
  17.         Next
  18.    
  19.     Me.lstMarcheSelectionne.RowSource = Me.lstMarcheSelectionne.RowSource & items
  20.     Me.lstMarchedispo.RowSource = vide 'on vide la premiere liste
  21. End If
  22. End Sub


 
Liste 2 >> Liste 1 (reinitialisation des listes)

Code :
  1. Private Sub Commande105_Click()
  2. 'cette procedure remet les listes a leur etats initials
  3.     Me.lstMarchedispo.RowSourceType = "Table/Query"
  4.     Me.lstMarchedispo.RowSource = "SELECT [tblMarche].[Nummarche], [tblMarche].[Nommarche] FROM tblMarche; "
  5.     liste_transfo
  6.     Me.lstMarcheSelectionne.RowSource = ""
  7. End Sub


 
Liste 1 > Liste 2 (transfert d'un seul éléments à la fois)

Code :
  1. Private Sub btnSelect_Click()
  2.     Dim items As String
  3.     Dim i As Long
  4.     Dim j As Integer
  5.     Dim cpt As Integer
  6.     Dim cpt2 As Integer
  7.     Dim tab_index(50) As Long
  8.     cpt = 0
  9.    
  10.     If Me.lstMarchedispo.RowSource <> vide Then
  11.         If Me.lstMarchedispo.ItemsSelected.Count <> vide Then
  12.             For i = 0 To Me.lstMarchedispo.ListCount - 1
  13.            
  14.                 If Me.lstMarchedispo.Selected(i) = True Then
  15.                     items = items & Me.lstMarchedispo.Column(1, i) & ";"
  16.                
  17.                     tab_index(cpt) = i
  18.                    cpt = cpt + 1
  19.                End If
  20.                
  21.             Next
  22.             Me.lstMarcheSelectionne.RowSource = Me.lstMarcheSelectionne.RowSource & items
  23.             j = 0
  24.        
  25.        
  26.             While tab_index(j) <> 0
  27.            
  28.                 suppr_elem tab_index(j), Me.lstMarchedispo
  29.            
  30.                 cpt2 = 0
  31.            
  32.  
  33.                 While tab_index(cpt2) <> 0
  34.                     tab_index(cpt2) = tab_index(cpt2) - 1
  35.                     cpt2 = cpt2 + 1
  36.                 Wend
  37.                 j = j + 1
  38.             Wend
  39.         End If
  40.     End If
  41. End Sub


 

Code :
  1. Private Function suppr_elem(ind_elem As Long, l As ListBox)
  2.  
  3.     Dim i As Long
  4.     Dim cpt As Integer
  5.     Dim ro_so2 As String
  6.    
  7.    
  8.     For i = 0 To l.ListCount - 1
  9.         If i <> ind_elem Then
  10.             ro_so2 = ro_so2 & l.Column(1, i) & ";"
  11.         End If
  12.     Next
  13.     l.RowSource = ro_so2
  14. End Function


 

Code :
  1. Private Function liste_transfo()
  2.    
  3.     Dim str As String
  4.     For i = 0 To Me.lstMarchedispo.ListCount - 1
  5.         str = str & Me.lstMarchedispo.Column(0, i) & ";" & Me.lstMarchedispo.Column(1, i) & ";"
  6.     Next
  7.     Me.lstMarchedispo.RowSourceType = "Value List"
  8.     Me.lstMarchedispo.RowSource = str
  9.    
  10. End Function


 
j'espère avoir été clair dans mes explications, en esperant que qqun puisse m'aider...
 
merci d'avance

n°1011844
Heaven11
Posté le 14-03-2005 à 11:15:14  profilanswer
 

Personne??? bon jvais etre obligé de me pendre alors!!  lol
 
jretourne le pb ds tous les sens mais bon jtrouve pas et vu que je sui pa doué en vba...

n°1013390
kiki28
Posté le 15-03-2005 à 14:51:15  profilanswer
 

salut je viens de lire ton post et je pense que tu peux m'aider:
je t'explique je vien de créer un formulaire de recherche multicritere et j'affiche dans une listbox le resultat de cette requete... tout fonctionne..
maintenant ce que je cherche a faire c'est imprimer le contenu de cette listbox avec tous les champs renseignés.... si tu veux avoir une idée plus precise va ici: http://cafeine.developpez.com/access/recherche/  
je voudrait imprimer le contenu de lstresults... merci et desolé de rajouter une question plutot que de repondre a la tienne...

n°1014432
kiki28
Posté le 16-03-2005 à 13:07:30  profilanswer
 

c'est bonb oubliez cette demande j'ai fais autrement merci qd meme


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème Listbox en VBA

 

Sujets relatifs
aligner du text en 2 colonne dans une listbox[Java][Linux : probleme d'accents]
[Access] [Résolu ]Probleme Requete sql DELETEprobleme avec formulaire (impossible d'imbriquer)
Problème CSS et formulaireprobleme require
nouveau probleme flexproblème d'execution d'un code JS sous IE
Problème compilation (toolkit Maximum Entropy)probleme verification si checkbox est cochée
Plus de sujets relatifs à : Problème Listbox en VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR