XL 2016 liste déroulante formulaire vba excel

  • Initiateur de la discussion Initiateur de la discussion Madmax33
  • 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 !

Madmax33

XLDnaute Nouveau
bonsoir à tous,

dans un formulaire de mon classeur, je crée une liste déroulante par vba afin d'afficher les informations de ma base.
j'ai réussi à restreindre la liste aux ligne non vides, mais je souhaiterai ajouter un autre critère.
j'ai essayé d'imbriquer des conditions "if", mais rien n'y fait.
je sollicite votre aide.
je vous joins le fichier .xlsm.
le formulaire en question se nomme "F_VisuB"

le code est :
Private Sub Affiche_Banc()
Dim rng As Range
Dim ligne As Range
'Affichage de la liste des bancs
With ThisWorkbook.Worksheets("Bancs")
.Activate
Set rng = .Range("A1").CurrentRegion
Set rng = .Range("A2:U" & rng.Rows.Count + 2)
lstBanc.Clear
For Each ligne In rng.Rows
If Cells(ligne.Row, 1) <> "" Then ----> c'est ici que veux faire mon tri supplémentaire
lstBanc.AddItem Cells(ligne.Row, 1)
Else
Exit For
End If
Next ligne
End With
End Sub

je n'arrive pas à télécharger le fichier (1,2Mo)
 
Dernière édition:
Modifiez le code de la procédure Affiche_Banc comme ceci
VB:
        '...
        '...
        For Each ligne In rng.Rows
            If Cells(ligne.Row, 1) > vbNullString And StrComp(Cells(ligne.Row, 3), "SOMMEIL", vbTextCompare) <> 0 And StrComp(Cells(ligne.Row, 3), "ATTENTE", vbTextCompare) <> 0 Then
                lstBanc.AddItem Cells(ligne.Row, 1)
            End If
        Next ligne
        '...
        '...
Il y a quand même de la programmation de bas étages... Il faut revoir tout cela.
Code:
Private Sub CommandButton1_Click()
    Unload Me
    'Affichage du formulaire
    F_SaisieB.Show
End Sub
Ceci n'est pas possible, il y a d'autres façons d'initialiser un formulaire...
 
Modifiez le code de la procédure Affiche_Banc comme ceci
VB:
        '...
        '...
        For Each ligne In rng.Rows
            If Cells(ligne.Row, 1) > vbNullString And StrComp(Cells(ligne.Row, 3), "SOMMEIL", vbTextCompare) <> 0 And StrComp(Cells(ligne.Row, 3), "ATTENTE", vbTextCompare) <> 0 Then
                lstBanc.AddItem Cells(ligne.Row, 1)
            End If
        Next ligne
        '...
        '...
Il y a quand même de la programmation de bas étages... Il faut revoir tout cela.
Code:
Private Sub CommandButton1_Click()
    Unload Me
    'Affichage du formulaire
    F_SaisieB.Show
End Sub
Ceci n'est pas possible, il y a d'autres façons d'initialiser un formulaire...
Merci pour ces précisions que je testerai demain au boulot.
Je suis preneur pour la 2e remarque sur la façon d'initialiser un formulaire
 
Bonsoir

If Cells(ligne.Row, 1) <> "" Then ----> c'est ici que veux faire mon tri supplémentaire
le code est :
Private Sub Affiche_Banc()
Dim rng As Range
Dim ligne As Range
'Affichage de la liste des bancs
With ThisWorkbook.Worksheets("Bancs")
.Activate
Set rng = .Range("A1").CurrentRegion
Set rng = .Range("A2:U" & rng.Rows.Count + 2)
lstBanc.Clear
For Each ligne In rng.Rows
If Cells(ligne.Row, 1) <> "" Then ----> c'est ici que veux faire mon tri supplémentaire
lstBanc.AddItem Cells(ligne.Row, 1)
Else
Exit For
End If
Next ligne
End With
End Sub


VB:
Private Sub Affiche_Banc()
    Dim ws As Worksheet, rng As Range, data As Variant
    Dim i As Integer, j As Integer, temp As String
    Set ws = ThisWorkbook.Worksheets("Bancs")
    Set rng = ws.Range("A2:A" & ws.Cells(ws.Rows.Count, "A").End(xlUp).Row)
    If rng.Cells.Count <= 1 Then Exit Sub
    data = Application.Transpose(rng.Value)
    For i = LBound(data) To UBound(data) - 1: For j = i + 1 To UBound(data)
        If data(i) > data(j) Then: temp = data(i): data(i) = data(j): data(j) = temp
    Next j, i
    lstBanc.Clear: For i = LBound(data) To UBound(data): lstBanc.AddItem data(i): Next i
End Sub
 
- 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

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
252
Réponses
4
Affichages
363
Réponses
2
Affichages
409
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
80
Réponses
4
Affichages
151
Retour