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 ) :
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 !
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 ) :
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 !