Bonjour superfrancois,
Une première étape ... l'ouverture du fichier ... à tester sur une copie de ton fichier ... "Prudence Petitpas" oblige ...
Dans le module ThisWorkbook ... remplace la procédure "Workbook_Open" par celle-ci ...
Dis-moi si le résultat est bien le même dans la feuille "Construction" et dans le combobox "Catégorie" de la feuille "Opération" ...
Les While Wend permettaient d'aller prendre des vacances à la plage à attendant l'ouverture du fichier ...
J'ai remplacé par du traitement en variables tableau ... et maintenant ...
Je n'ai pas eu le temps de me couler un café ... et je ne suis pas sûr qu'il n'y ait mieux à faire ...
Je regarderais une fois reposé ...
Private Sub Workbook_Open()
'affecter les variables
Dim colonne As Integer, ligne As Integer
Dim ligne_bd As Integer, plage As Range
Application.ScreenUpdating = False
'purge des listes déroulantes
With Sheets("Opérations")
.liste_cat.Clear
.Liste_mod.Clear
.Liste_piece.Clear
.liste_cat.Value = ""
.Liste_mod.Value = ""
.Liste_piece.Value = ""
End With
'purge des colonnes pour listes déroulantes
For colonne = 2 To 8 Step 2
ligne = 5
With Sheets("Construction")
.Range(.Cells(5, colonne), .Cells(Rows.Count, colonne)).ClearContents
End With
Next colonne
'charger catégories dans la bdd
Dim tab1, tab2, Dlig As Long, X As Long, Y As Long
Dlig = Sheets("BDD PRODUITS").Cells(Rows.Count, "A").End(xlUp).Row
ReDim tab1(1 To Dlig)
ReDim tab2(1 To 2)
For X = 2 To Dlig
Application.EnableEvents = False
Sheets("BDD PRODUITS").Activate
tab1(X - 1) = Cells(X, "A").Value
Next X
Application.EnableEvents = True
Y = 1
For X = LBound(tab1) To UBound(tab1) - 1
If Len(tab1(X)) > 1 And tab1(X) <> tab1(X + 1) Then
ReDim Preserve tab2(1 To Y)
tab2(Y) = tab1(X)
Y = Y + 1
End If
Next X
With Sheets("Construction")
Application.EnableEvents = False
.Activate
Application.EnableEvents = True
.Range("B5").Resize(UBound(tab2)) = Application.Transpose(tab2)
For X = 1 To UBound(tab2)
Sheets("Opérations").liste_cat.List = Application.Transpose(tab2)
Next X
End With
Application.EnableEvents = False
Sheets("Opérations").Activate
Sheets("Opérations").liste_cat.ListIndex = 0
Sheets("Accueil").Activate
[_user] = "Invité"
Connecter
Application.EnableEvents = True
End Sub
A+
ric