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
 

fanch55

XLDnaute Barbatruc
Impossible d'ouvrir l'userform merci de m'aider
Vous êtes sûr d'être sous office 365 ?
aigoin.gif
 

Discussions similaires

Réponses
16
Affichages
678

Statistiques des forums

Discussions
314 732
Messages
2 112 285
Membres
111 497
dernier inscrit
cerber08