La combobox ne prend pas la valeur de la listbox

Jonathan1986

XLDnaute Nouveau
Bonjour à tous Bonjour le forum,

Je fais appel à vous car cela fait quelques heures que je m'arrache les cheveux pour résoudre mon problème.

J'alimente une BDD via un userform, parmi les fonctionnalités je souhaite pourvoir supprimer des ligne correspondant à l'item. Je sélectionne l'item sur une listbox, la valeur est renvoyée dans une combobox. Je souhaite supprimer la ligne correspondant a cet item. Seul problème cela ne marche que quand je sélectionne l'item via la combbox et non la listbox.

Si quelqu'un aurait une idée ce serait génial, je ne vois absolument pas comment faire et no trouve pas la réponse. :(

Merci d'avance :)

Voici le code qui alimente ma combobox en fonction du choix de la listbox :

Private Sub lbitems_Click()
'--- Declaration des variables
Dim NuLigne As Integer
Dim intCurrentRow As Integer

' Boucle de recherche la ligne sélectionnée
For intCurrentRow = 0 To lbitems.ListCount - 1
If lbitems.Selected(intCurrentRow) Then
NuLigne = intCurrentRow '
Exit For ' on sort de la boucle de test ,
End If
Next intCurrentRow

' récuperation de la valeur selectionné dans le listBox
cbitem = lbitems.Column(0, NuLigne)

End Sub
 

M.D

XLDnaute Occasionnel
Re : La combobox ne prend pas la valeur de la listbox

Bonjour,
je viens de consulter votre fichier.

Je pense que l'erreur vient dans une des procédure. C.A.D, pour le bouton nouveau, votre appelez un userforn3 qui n’existe pas. Celui que vous avez est intitulé userform 8

M.D
 

Jonathan1986

XLDnaute Nouveau
Re : La combobox ne prend pas la valeur de la listbox

Bonjour MD,
Merci pour ta réponse mais en fait j'ai effacé tout ce qui ne concernait pas ma question car le fichier est trop lourd.
Mon problème vient du code du bouton supprimer du Userform8,
L'erreur est erreur d'execution 1004 la méthode delete de l'objet range a échoué.
J'ai trouvé beaucoup de discussions à ce sujet mais aucune ne m'a servi.
Merci
 

Paritec

XLDnaute Barbatruc
Re : La combobox ne prend pas la valeur de la listbox

Bonsoir Jonathan le forum
ton fichier en retour, j'ai traité le remplissage, la suppression, le remplissage des textboxs sur clique dans la listbox, mais la modification là il faudra me dire comment tu veux modifier car tu n'as même pas le même nombre de Textbox que de colonnes à traiter alors ????????????? dis moi ce que tu veux et ou et je le ferai
mon premier avis sur le fichier est que cela sent un peu l'improvisation, enfin a mon avis
bref
a+
papou:)
 

Pièces jointes

  • Jonathan 1986 V2.xlsm
    132.4 KB · Affichages: 84

Jonathan1986

XLDnaute Nouveau
Re : La combobox ne prend pas la valeur de la listbox

Bonjour PAPOU,
merci beaucoup pour ta réponse en me faisant partager tes connaissances! :)

Ton fichier marche super mais quand j'essaie de l'adapter ça ne fonctionne pas :(
Quand je lance le userform il me met une erreur permission refusée et pointe la macro qui lance le userform

Quand j'enlève userform_initialize je n'ai pas cette erreur mais : impossible de lire la propriété List. Argument non valide

Voici le code pour info :
Private Sub supprimeritem_Click()
If lbitems.ListIndex = -1 Then Exit Sub
With Feuil10
.Rows(lbitems.List(lbitems.ListIndex, 7)).Delete
End With
UserForm_Initialize
End Sub



Private Sub lbitems_Click()
Dim lig&
If lbitems.ListIndex = -1 Then Exit Sub
With Feuil10
lig = lbitems.List(lbitems.ListIndex, 7) (deuxième erreur)
End With
End Sub

en fait je souhaite juste pouvoir sélectionner un item et le supprimer (je ne veux pas afficher les infos ou autre)

Merci d'avance pour ton aide

JOnathan
 

Paritec

XLDnaute Barbatruc
Re : La combobox ne prend pas la valeur de la listbox

Bonjour Jonathan le forum
as tu seulement essayé le fichier que je t'ai envoyé sans le modifier? non je pense car si tu essayes tu verras que si tu sélectionnes une lignes dans la listbox et que tu fais supprimer le bouton, tu verras que cela marche
essaye à nouveau
a+
papou:)
 

Si...

XLDnaute Barbatruc
Re : La combobox ne prend pas la valeur de la listbox

salut

Il ne faut pas se tromper de contrôle . Essaie simplement de remplacer cbitem par lbitems
Code:
Private Sub supprimeritem_Click()
  Sheets("PDTS").Rows(lbitems.ListIndex + 2).Delete
End Sub

Remarque pour les erreurs signalées : quand on ne fait pas assez attention, "RowSource" peut poser problème.
 

Jonathan1986

XLDnaute Nouveau
Re : La combobox ne prend pas la valeur de la listbox

Bonjour PAPOU,
Je n'ai plus d'erreur avec rowsource, mais c'est sûr que je ne fais pas attention, je suis débutant ... :(
J'avais essayé le fichier que tu m'as envoyé qui marchait nickel, je n'avais pas réussi à l'adapter, mais là j'y suis arrivé, encore merci!
Sauf que je n'arrive pas à utiliser le code que tu m'as mis une deuxième fois, l'erreur : impossible de lire la propriété List. Argument non valide.

Voici mon code, je n'ai que celui-là pour que la sélection listbox s'affiche dans les textbox (à partir d'un tableau en feuil7 qui comprend 19 colonnes) :
Private Sub lbbddm_Click()
Dim lig&
If lbbddm = lbbddm.ListIndex = -1 Then Exit Sub
With Feuil7
lig = lbbddm.List(lbbddm.ListIndex, 19) ligne de l'erreur
cbdesignationm = lbbddm.List(ListIndex, 0)
cbreferencem = lbbddm.List(ListIndex, 1)
tbvaliditem = lbbddm.List(ListIndex, 4)
tbpoidsm = lbbddm.List(ListIndex, 17)
tbcaracteristiquesm = lbbddm.List(ListIndex, 18)
tbfournisseurm = lbbddm.List(ListIndex, 5)
End With
End Sub
Donc juste renseigner les info de la ligne correspondante

Je ne voudrais pas abuser mais pourrais-tu m'explique à quoi sert la variable lig?

Encore merci de consacrer un peu de temps pour m'aide :)
Jonathan :)
 

Paritec

XLDnaute Barbatruc
Re : La combobox ne prend pas la valeur de la listbox

Bonjour Jonathan le forum
la variable lig sert à écrire ou supprimer la bonne ligne, dans la feuille
en fait ton rows source je l'avais viré, et remplacé par un remplissage par un tableau et dans la dernière colonne du tableau j'avais mis des valeurs correspondant à la ligne ou se trouve les données
Ce qui fait que des que tu cliques sur une ligne de la listbox, tu pouvais savoir immédiatement quelle ligne supprimer dans la feuille, même si tu refais un autre trie la valeur de la ligne tu l'auras toujours.
De même j'avais viré tous tes CdItem et autre, tu ne pourras jamais faire des boucles pour remplir tes lignes avec des appellations comme cela exemple ta listbox lbbddm c'est super bien pour te planter, tu as une listbox tu l'appelles L1 et basta , enfin ce que j'en dit.
bonne après midi
a+
papou:)
 

Jonathan1986

XLDnaute Nouveau
Re : La combobox ne prend pas la valeur de la listbox

Bon PAPOU,
Tout marche tout bien! :) Un énorme merci tu viens de m'en apprendre pas mal! notamment les macro Initialize, je voyais cela souvent sur les fichiers des forums mais ne savais pas à quoi cela sert. Ce genre de macro s'execute au lancement de l'userform ou non?
encore merci :)
a+
 

Paritec

XLDnaute Barbatruc
Re : La combobox ne prend pas la valeur de la listbox

Re bonjour Jonathan le forum
oui c'est cela des que tu souhaites ouvrir l'userform, toute la procédure initialize va créer tout ce que tu as mis dedans remplir tes listes , trier enfin tout ce que tu as mis dans initialize, quand c'est fait l'userform apparaît
Mais par contre il va te falloir bannir le rows source de préférence
a+
papou:)
 

Si...

XLDnaute Barbatruc
Re : La combobox ne prend pas la valeur de la listbox

Re,

Je veux bien être transparent mais je dois quand même préciser quelques points, Si… tu veux comprendre.

Dans le fichier proposé, la variable lig est initialisée mais pas utilisée donc, en l’état, inutile.

Les récupérations de données peuvent se faire de 3 façons : à partir de la Liste déjà initialisée, à partir de la feuille ou à partir des 2.

Dans le premier cas, les With … End With sont inutiles et le mieux est de définir une variable qui permettra de simplifier l’écriture des procédures. Exemple
Code:
Dim N as Long ‘en tout début de page pour être utilisée dans toute la page de code
Private Sub L1_Click()
   N=L1.ListIndex
   If  N = -1 Then Exit Sub
   T1 = Format(L1.List(N, 3) * L1.List(N, 4), "0.00 €")
   T2 = Format((L1.List(N, 3) * L1.List(N, 4)) - L1.List(N, 6), "0.00 €")
   T3 = Format(T1 - T2, "0.00 €")
   T4 = Format(T3 * 0.196, "0.00 €")
   T5 = Format(CDbl(T3) + CDbl(T4), "0.00 €")
  …
End Sub

C’est dans le deuxième cas que la variable lig peut devenir intéressante surtout si tu réduis le nombre de colonnes de la Liste. Là, il faudra aussi jongler avec les numéros de colonne pour avoir des procédures du genre
Code:
Dim lig as Long
Private Sub L1_Click()
  If L1 .ListIndex=-1 Then Exit Sub
  lig = L1.List(L1.ListIndex, …) ‘n° de colonne défini à l’initialisation de la Liste
  With Feuil10
    T1 = Format(.Cells(lig,…) * .Cells(lig, …), "0.00 €")
    …
  End With
End Sub
Il faut maîtriser les 2 méthodes précédentes avant de se lancer dans le troisième cas donc pour un débutant, éviter les mélanges.

Il faut, aussi, maîtriser "RowSource" pour l'utiliser sans problème.
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 467
dernier inscrit
Pandiska