• Initiateur de la discussion Initiateur de la discussion manu900
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

manu900

Guest
Bonjour à tous, nouveau sur ce forum j'ai terriblement besoin de votre aide pour l'utilisation de la fonction listbox.
Bien évidemment j'ai déja chercher un peu partout su le forum et je n'ai pas trouvé de réponse.

Je cherche un moyen de créer une listbox qui recueille les imformations à partir d'un critère d'une cellule.

Exemple par rapport au fichier ci-joint :Regarde la pièce jointe test.xlsm

. Si cellule A19 = poire, alors liste déroulante cellule C19 = mure,sucre,bon
autre exemple
.Si cellule A20 = peche, alors liste déroulante cellule C20 = bonne, très bonne.

Code:
Sub Bouton1_Clic()
 
    Sheets("feuil1").Select
   Sheets("feuil1").Copy after:=Sheets("feuil1")
    Sheets("feuil1 (2)").Select
    Sheets("feuil1 (2)").Name = "copie"
 
   Application.EnableEvents = False ' => désactive les événements
 
    With Sheets("copie")

  m = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
  p = .Cells(.Rows.Count, "B").End(xlUp).Row + 6
 
  With .Range(.Cells(m, 2), .Cells(p, 2)).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
      xlBetween, Formula1:="CONTROLER,ANALYSER,AJOUTER,VERIFIER"
  End With
End With
End Sub

J'ai réussi à créer pour la cellule B19 une liste déroulante à partir de donner que j'ai moi même définie, mais je n'arrive pas à créer la liste par rapport aux données de la feuille.

Merci pour vos réponses.

Cordialement.
 

Pièces jointes

Re : ListBox

Bonjour
Ci dessous le code qui réalise cette opération

Code:
Lig1 = CLng(ComboBox1.List(ComboBox1.ListIndex, 1))
Lig2 = CLng(ComboBox1.List(ComboBox1.ListIndex, 2))

For I = Lig1 To Lig2
     Sheets(nomfeuille1).Range("c" & 19) = Sheets(nomfeuille1).Range("c" & 19) & " " & Sheets(nomfeuille1).Range("e" & I)
Next I

A tester

JP
 
Re : ListBox

Désolé je suis novice JP, il m'indique une erreur "objet d'execution 424" Objet requis, comment faire pour résoudre?
Merci encore
Code:
Sub Bouton1_Clic()
 Dim Lig1 As Long
Dim Lig2 As Long
    Sheets("feuil1").Select
   Sheets("feuil1").Copy after:=Sheets("feuil1")
    Sheets("feuil1 (2)").Select
    Sheets("feuil1 (2)").Name = "copie"
 
   Application.EnableEvents = False ' => désactive les événements
 
    With Sheets("copie")

  m = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
  p = .Cells(.Rows.Count, "B").End(xlUp).Row + 6
 
  With .Range(.Cells(m, 2), .Cells(p, 2)).Validation
    .Delete
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:="CONTROLER,ANALYSER,AJOUTER,VERIFIER"
      
    Lig1 = CLng(ComboBox1.List(ComboBox1.ListIndex, 1)) 'erreur sur cette ligne
    Lig2 = CLng(ComboBox1.List(ComboBox1.ListIndex, 2))

    For I = Lig1 To Lig2
     Sheets(nomfeuille1).Range("c" & 19) = Sheets(nomfeuille1).Range("c" & 19) & " " & Sheets(nomfeuille1).Range("e" & I)
    Next I
    End With

  End With

End Sub
 
Re : ListBox

Bonjour

Ci dessous une macro qui génère des liste de validations de données dans la colonne C en fonction de nom du fruit qui se trouve dans la colonne A.
Code qui devrait correspondre plus à la demande.
Il est possible de travailler sur deux feuilles en modifiant le nom de la feuille au niveau du passage des paramètres

essai1 Sheets(nomfeuille1).Range(col & I), nomfeuille1
listederoulante "c" & I, "E" & Ligne1 & ":" & "e" & Ligne2, nomfeuille1



Code:
Option Explicit
Dim Ligne1 As Long
Dim Ligne2 As Long
Dim nomfeuille1 As String

Sub essai()
'listederoulante "c22", "E1" & ":" & "e3"
Dim col As String
Dim Ligdep As Integer
Dim I As Long, J As Long
'paramètre
col = "a"
nomfeuille1 = "Feuil1"
Ligdep = 2


    For I = 20 To Sheets(nomfeuille1).Range(col & Columns(1).Cells.Count).End(xlUp).Row
            If Sheets(nomfeuille1).Range(col & I) <> "" Then
            Ligne1 = 0: Ligne2 = 0
            essai1 Sheets(nomfeuille1).Range(col & I), nomfeuille1
            listederoulante "c" & I, "E" & Ligne1 & ":" & "e" & Ligne2, nomfeuille1
            End If
    Next I



End Sub
Private Sub essai1(Valeur1 As String, nomfeuille2 As String)
Dim col As String
Dim Ligdep As Integer
Dim I As Long, J As Long
'paramètre
col = "a"
Ligdep = 2


    For I = Ligdep To 18
            If Sheets(nomfeuille2).Range(col & I) = Valeur1 Then
            Ligne1 = I
            For J = I + 1 To 18
                If Sheets(nomfeuille2).Range(col & J) <> Sheets(nomfeuille2).Range(col & I) Then Exit For
            Next J
            Ligne2 = J - 1
            Exit For
        End If
    Next I



End Sub


Private Sub listederoulante(cellule As String, adresse As String, nomfeuille2 As String)

 
    With Sheets(nomfeuille2).Range(cellule).Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
        xlBetween, Formula1:="=" & adresse
        .IgnoreBlank = True
        .InCellDropdown = True
        .InputTitle = ""
        .ErrorTitle = ""
        .InputMessage = ""
        .ErrorMessage = ""
        .ShowInput = True
        .ShowError = True
    End With

End Sub

A tester

JP
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
15
Affichages
788
  • Question Question
XL 2021 listbox
Réponses
18
Affichages
740
Réponses
10
Affichages
663
Réponses
5
Affichages
912
Retour