Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 recherche dans listbox avec combobox

AIGOIN

XLDnaute Nouveau
Bonjour,
J'ai utilisé un document du forum, je l'ai adapté et je n'arrive pas à extraire les données de la colonne B et je ne comprends pas pourquoi. Il semblerait qu'il ne reconnaisse pas le contenu des combobox lors de la recherche dans les colonnes concernées.
Merci pour votre aide
Alain
 

Pièces jointes

  • expo_essai_13.xlsm
    66.7 KB · Affichages: 3

fanch55

XLDnaute Barbatruc
Salut,
VB:
Private Sub ComboBox1_click()
  Me.ListBox1.Clear
  For K = 1 To Ncol: Me("textBox" & K) = "": Next K
  j = 0
  n = Application.CountIf(Application.Index(Rng, , 2), Me.ComboBox1)
  Dim b()
  ReDim b(1 To n, 1 To Ncol + 1)
  For I = LBound(BD) To UBound(BD)
    If Me.ComboBox1 = BD(I, 2) Then
      j = j + 1
      For K = 1 To Ncol
        b(j, K) = BD(I, K)
        If K >= 3 And K <= 5 Then b(j, K) = Format(BD(I, K))
      Next K
      b(j, K) = I
    End If
   Next I
   ListBox1.List = b
   ListBox1.ListIndex = 0
End Sub

Modif:
If Me.ComboBox1 = CStr(BD(I, 2)) Then
 

fanch55

XLDnaute Barbatruc
La sub à modifier dans le dernier classeur qui à mon avis est moins bien que le premier :
VB:
Private Sub ComboBox1_Change() 'au changement dans la ComboBox1 [Paiement]


    For I = 1 To 9 'boucle sur les 9 dernières colonnes de la ListBox1
        'renvoie la valeur de la colonne I de la ListBox1 dans la TextBox I + 2
        Me.Controls("TextBox" & I + 2).Value = ""
    Next I 'prochaine colonne de la boucle
    
    'TC = O1.Range("A1").CurrentRegion 'définit le tableau de cellules TC --> inutile déjà fait dans Initialize
    With ListBox1 'prend en compte la ListBox1
        .Clear 'efface la ListBox1
        S = 0 'initialise la somme S
        v = 0
        For I = 2 To UBound(TC, 1) - 1 'boucle 1 : sur toutes les lignes du tableau TC (en partant de la seconde)
            'condition : si la valeur en colonne 9 du tableau TC est égale à la valeur de la ComboBox1
            If (TC(I, 2) = Val(ComboBox1.Value) Or ComboBox1 = "") And (TC(I, 9) = Val(ComboBox2) Or ComboBox2 = "") Then
                .AddItem 'I 'ajoute le numéro de ligne dans la colonne 0 (cachée) de la ListBox1
                For j = 1 To 9 'boucle 2 : sur les 9 autres colonnes
                    .Column(j - 1, v) = TC(I, j) 'ajoute la valeur en colonne J du tabelau TC à la colonne J de la ListBox1
                    'If j = 8 Then S = S + CDbl(TC(I, 8)) 'si j est égale à 8, calcule la somme S
                Next j 'prochiane colonne de la boucle 2
                v = v + 1 'incrénete V
                S = S + Val(TC(I, 8))
                
            End If 'End If 'fin de la condition
            
        Next I  'prochaine ligne de la boucle 1
    End With 'fin de la prise en compte de la ListBox1
    TextBox1.Value = v 'place V dans la TextBox1
    TextBox2.Value = S 'place S dans la TextBox2
End Sub
 

ChTi160

XLDnaute Barbatruc
Bonsoir le Fil
Y'a je pense une apostrophe en trop !
Ici devant le "I"
VB:
.AddItem 'I 'ajoute le numéro de ligne dans la colonne 0 (cachée) de la ListBox1
Jean marie
depuisMon téléphone
 

Discussions similaires

Réponses
16
Affichages
678
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…