Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Xenors

XLDnaute Nouveau
Bonjour,

Voilà mon problème, à partir d'une feuille présentant les réceptions de matière première, je souhaiterais afficher dans 2 listes déroulante distinctes directement sur la feuille excel à coté de la base de données :
- la liste des opérateurs du plus critique au moins critique
- la liste des fournisseurs du plus critique au moins critique
Opérateur critique : celui ayant proportionnellement refusé le plus de livraisons (livraisons refusées/livraisons totales)
Fournisseur critique : celui qui a eu proportionnellement le plus de livraisons refusées (livraisons refusées/livraisons totales)

Je souhaiterais également que le plus critique de chaque catégorie soit mis en évidence comme, par exemple, en couleur ?

Voici le code que j'ai réalisé pour la listbox des Opérateurs (un peu long avec 25 boucles If :eek:) :

Code:
Sub CriticitéOpé()
 Dim lig As Variant
 Dim nombre1, nombre2, nombre3, nombre4, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y As Integer
nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "1" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "1" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    a = 0
Else
    a = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "2" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "2" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    b = 0
Else
    b = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "3" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "3" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    c = 0
Else
    c = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "4" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "4" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    d = 0
Else
    d = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "5" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "5" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    e = 0
Else
    e = nombre1 / nombre2
End If


nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "6" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "6" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    f = 0
Else
    f = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "7" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "7" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    g = 0
Else
    g = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "8" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "8" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    h = 0
Else
    h = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "9" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "9" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    i = 0
Else
    i = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "10" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "10" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    j = 0
Else
    j = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "11" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "11" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    k = 0
Else
    k = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "12" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "12" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    l = 0
Else
    l = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "13" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "13" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    m = 0
Else
    m = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "14" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "14" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    n = 0
Else
    n = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "15" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "15" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    o = 0
Else
    o = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "16" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "16" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    p = 0
Else
    p = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "17" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "17" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    q = 0
Else
    q = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "18" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "18" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    r = 0
Else
    r = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "19" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "19" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    s = 0
Else
    s = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "20" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "20" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    t = 0
Else
    t = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "21" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "21" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    u = 0
Else
    u = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "22" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "22" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    v = 0
Else
    v = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "23" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "23" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    w = 0
Else
    w = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "24" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "24" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    x = 0
Else
    x = nombre1 / nombre2
End If

nombre1 = 0
nombre2 = 0
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "25" And Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
        nombre1 = nombre1 + 1
    End If
Next lig
For lig = 2 To 189
    If Sheets("Récep°Mat°1°").Cells(lig, 4) = "25" Then
    nombre2 = nombre2 + 1
    End If
Next lig
If nombre2 = 0 Then
    y = 0
Else
    y = nombre1 / nombre2
End If

Sheets("Récep°Mat°1°").Shapes("Drop Down 16").ControlFormat.Caption = "Liste Opérateurs"
Sheets("Récep°Mat°1°").Shapes("Drop Down 16").ControlFormat.ListFillRange = a

End Sub

J'aimerais que ma listbox affiche lorsque je la sélectionne les opérateurs liés aux variables a,b,c,d,etc
Les variables a,b,c,etc étant les ratios qui devront être triés par ordre décroissant.
exemple : 1 pour a ; 2 pour b et ainsi de suite
Seulement je n'arrive pas a trouver le code approprié...

J'ai également une autre question, est ce possible d'utiliser les boucles IF avec les valeurs booléennes Vrai et Faux sur la feuille excel ? J'ai été obligé de passer toutes les cellules de la colonne concernée en texte pour que les mots VRAI et FAUX ne soient pas considérés comme des clés excel sinon la recherche bug.

Le code est lié au Bouton 6 mais, à terme, les listbox devront être remplies à l'ouverture du fichier excel (je placerai donc le code ci-dessus directement dans "ThisWorkbook" avec "Workbook_Open".

Ci-joint le fichier excel afin que vous puissiez mieux comprendre mon problème et éventuellement m'apporter une solution.

Merci d'avance ! :)
 

Pièces jointes

  • exemple criticité.xlsm
    74.1 KB · Affichages: 49

Jacou

XLDnaute Impliqué
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Bonjour Xenors, bonjour le forum,
Je pense qu'il nous manque quelques éléments pour te répondre pour le moment.
Cependant je te fais une suggestion pour simplifier la lecture de ta "longue" macro. Au lieu de prendre un nom différent pour chaque variable calculée (a, b, c, ...) utilise un tableau (par exemple Tabl).
cela pourrait donner quelque chose comme suit :

Code:
Sub CriticitéOpé()
 Dim lig As Variant
 Dim nombre1, nombre2, nombre3, nombre4 As Integer
 Dim Tabl (25) as Integer
For var = 1 to 25
   For lig = 2 To 189
      If Sheets("Récep°Mat°1°").Cells(lig, 4) = var then
          nombre2 = nombre2 + 1
          If Sheets("Récep°Mat°1°").Cells(lig, 7) = "VRAI" Then
               nombre1 = nombre1 + 1
          End If
     End If
   Next lig
If nombre2 = 0 Then
     Tabl(var) = 0
Else
     Tabl(var) = nombre1 / nombre2
End If
Next var
Sheets("Récep°Mat°1°").Shapes("Drop Down 16").ControlFormat.Caption = "Liste Opérateurs"
Sheets("Récep°Mat°1°").Shapes("Drop Down 16").ControlFormat.ListFillRange = Tabl(1)
 
End Sub
Pour info, ton avant dernière instruction
Code:
Sheets("Récep°Mat°1°").Shapes("Drop Down 16").ControlFormat.Caption = "Liste Opérateurs"
provoque une erreur d'exécution chez moi.
bonne journée
 
Dernière édition:

Paf

XLDnaute Barbatruc
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Bonjour Xenors, Jacou,

d'après ce que j'ai compris

Code:
Sub Criticité()
 Dim lig As Long, Code As Byte, i As Byte, NatCod As Byte, S
 Dim NbLiv As Long, NbRefus As Long, NomList As String
 Dim Tabl(1 To 25, 1 To 2)
 With Worksheets("Récep°Mat°1°")
 For NatCod = 3 To 4 ' pour les colonne C (fournisseur) et D (operateur)
    Erase Tabl
    For Code = 1 To 25
        NbRefus = 0
        NbLiv = 0
        For lig = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
            If .Cells(lig, NatCod) = Code Then
                NbLiv = NbLiv + 1
                If .Cells(lig, 7) = "VRAI" Then NbRefus = NbRefus + 1
            End If
        Next lig
        Tabl(Code, 1) = Code
        If NbRefus = 0 Then
            Tabl(Code, 2) = 0
        Else
            Tabl(Code, 2) = NbRefus / NbLiv
        End If
    Next Code
    '*** tri du tableau, appel sub tri nom du tableau,N°colonne,
    Call Quick(Tabl(), LBound(Tabl, 1), UBound(Tabl, 1), 2, False)
    '** fin
    If NatCod = 3 Then NomList = "Drop Down 17" Else NomList = "Drop Down 16"
    Set S = .Shapes(NomList).ControlFormat
    With S
        .RemoveAllItems
        For i = LBound(Tabl) To UBound(Tabl)
            .AddItem Tabl(i, 1) & "  " & Round(Tabl(i, 2), 2)
        Next i
    End With
 If NatCod = 3 Then Range("G191").Resize(UBound(Tabl), 2) = Tabl
 Next NatCod
 End With
End Sub
Code:
Sub Quick(a(), gauc, droi, col, ordre) ' Quick sort
  '** Source http://boisgontierjacques.free.fr/pages_site/tableaux.htm
    Dim ref, g, d, i, temp
  ref = a((gauc + droi) \ 2, col)
  g = gauc: d = droi
  Do
    If ordre Then
      Do While a(g, col) < ref: g = g + 1: Loop
      Do While ref < a(d, col): d = d - 1: Loop
    Else
      Do While a(g, col) > ref: g = g + 1: Loop
      Do While ref > a(d, col): d = d - 1: Loop
    End If
    If g <= d Then
      For i = LBound(a, 2) To UBound(a, 2)
        temp = a(g, i): a(g, i) = a(d, i): a(d, i) = temp
      Next i
      g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Quick(a, g, droi, col, ordre)
  If gauc < d Then Call Quick(a, gauc, d, col, ordre)
End Sub



Codes à copier dans un module standard

A+
 

Xenors

XLDnaute Nouveau
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Bonjour Jacou et Paf ! :)

Merci beaucoup pour votre aide, elle m'ont été bien utile, c'est vrai que le code était un peu long à mon goût et je n'avais pas du tout penser à utiliser un tableau ^^'

Pour ce qui est de ton code paf, c'est exactement ce que je recherchais, il va maintenant falloir que je le décortique pour bien comprendre son fonctionnement :)

Est-ce que, par hasard, vous sauriez comment mettre les première valeurs des drop down list en gras et/ou couleur de manière à les mettre en évidence ? J'ai tenté avec .font.bold=true mais sans résultats. Y a t-il une manière d'écrire "PremièreValeurDropDown".font.bold = true ?

Est-il également possible de mettre un texte sur la drop down list comme "Opérateur..." ? J'ai essayer avec .caption mais cela ne fonctionne pas :(

Merci ! :D
 

Paf

XLDnaute Barbatruc
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Re,

a priori il n'est pas possible de modifier individuellement les attributs des lignes.

Quant à faire apparaitre un texte sur (?) la drop down list:
- comme vous l'avez fait, utiliser une zone de texte( ou une étiquette)
- ou bien ajouter une première ligne dans la drop down list:
Code:
    ....
    With S
        .RemoveAllItems
        If NatCod = 3 Then .AddItem "Fournisseur" Else .AddItem "Opérateur"  '**ajout ligne de "Titre"**
        For i = LBound(Tabl) To UBound(Tabl)
            .AddItem Tabl(i, 1) & "    " & Round(Tabl(i, 2), 2)
        Next i
    End With
    ...


Par ailleurs la ligne
Code:
 If NatCod = 3 Then Range("G191").Resize(UBound(Tabl), 2) = Tabl
est à supprimer ( reliquat d'essais)

A+
 

Xenors

XLDnaute Nouveau
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Salut Paf,

Oui après avoir regardé de plus près ton code j'ai remarqué que la ligne...
Code:
If NatCod = 3 Then Range("G191").Resize(UBound(Tabl), 2) = Tabl
... m'affichait les valeurs dans la feuille, je l'ai donc supprimé :)

Pour le problème de la modification d'une certaine ligne dans la liste déroulante, il me semblait que c'était possible mais du coup tant pis :/

Pour ce qui est de la ligne :
Code:
If NatCod = 3 Then .AddItem "Fournisseur" Else .AddItem "Opérateur"
N'est-il pas possible d'avoir le texte directement sélectionner dans la liste déroulante comme ceci ?
Texte Liste Déroulante.PNG

J'ai remarqué que je pouvais faire ça avec une ComboBox seulement je n'ai pas réussi à adapter le code à 2 Combobox ActiveX, j’enchaîne les erreurs ^^'

Encore merci de ton aide :)
 

Paf

XLDnaute Barbatruc
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Re,

N'est-il pas possible d'avoir le texte directement sélectionner dans la liste déroulante comme ceci ?

J'ai remarqué que je pouvais faire ça avec une ComboBox seulement je n'ai pas réussi à adapter le code à 2 Combobox ActiveX, j’enchaîne les erreurs ^^'

J'avoue ne pas bien comprendre ce que vous voulez faire.

Plus de détails ?

A+
 

Xenors

XLDnaute Nouveau
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

En fat je souhaiterai faire apparaître une consigne dans la zone d'affichage de la liste déroulante comme "veuillez sélectionner un opérateur".
Cela correspond dans les propriété d'un combobox à "Text"
Voici une illustration :
Capture.PNG

Seulement pour les listbox présentent directement sur la feuille, je n'ai pas accès à ce genre de menu propriété.
Il faut que je trouve un moyen de traduire ce qui est encadré en rouge en code VBA pour les 2 listbox :)

Dans le cas où ce ne serait pas possible, il faudrait que je supprimer les listbox sur lesquels on a travaillé le code pour les remplacer par des combobox activeX qui me permettraient d'avoir accès au menu propriété illustré ci-dessus :/
J'ai essayer en remplaçant les drop down par ComboBox (les noms exacts) dans la ligne
Code:
If NatCod = 3 Then NomList = "Drop Down 17" Else NomList = "Drop Down 16"
mais je me retrouve avec des erreurs :/

Merci :)
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    54.9 KB · Affichages: 71

Paf

XLDnaute Barbatruc
Re : Afficher Résultats Macro (boucle If) dans Listbox sur feuille (non userform)

Re,

Si vous remplacer les drop down list par des combobox ActiveX, remplacer cette partie de code:
Code:
    If NatCod = 3 Then NomList = "Drop Down 17" Else NomList = "Drop Down 16"
           ...
           ...
            ...
        Next i
    End With
par
Code:
    Set S = .OLEObjects("ComboBox" & NatCod - 1).Object '.Value
    With S
        .Clear
        .ColumnCount = 2
        .ColumnWidths = "50,50"
        For i = LBound(Tabl) To UBound(Tabl)
            .AddItem Tabl(i, 1)
            .List(.ListCount - 1, 1) = Round(Tabl(i, 2), 2)
        Next i
    End With

les combobox doivent se nommer ComboBox2 et ComboBox" ( ou bien adapter le code )

A+
 

Discussions similaires

Statistiques des forums

Discussions
315 087
Messages
2 116 086
Membres
112 656
dernier inscrit
VNVT