Sub Workbook_Open()
'Magic_Doctor
Erase ListeNbItems
Dim i As Byte, limite As Byte, liste(), h!, cbb As MSForms.ComboBox
Dim x As Byte
NbSolvants = [RememberNbSolvants] 'cellule "virtuelle" qui conserve la dernière valeur entrée dans le ComboBox "ComboBox_NbSolvants_Change" avant fermeture du classeur
NbComboListe = NbActiveX("ComboBox", "ComboListe", 1) 'nombre de ComboBox dans la "feuille 1" ("Données") dont le préfixe est "ComboListe"
'*************************************
ReDim Preserve ListeNbItems(NbSolvants + 1)
'*************************************
Sheets("Données").Select 'au cas où l'on était dans la feuille "BD" lors de la fermeture du classeur, sinon bordel incommensurable à l'ouverture du classeur
'Hauteur entre les sommets de 2 ComboBox qui se superposent
Set cbb = ActiveSheet.OLEObjects("ComboListe1").Object 'ComboBox "ComboListe1"
TopToTop = cbb.Height 'hauteur du ComboBox
TopToTop = TopToTop + espacement 'hauteur entre les sommets de 2 ComboBox superposés
'*********************** Positionnement, par rapport au haut de la feuille, du 1er ComboBox ***********************
'Hauteur de l'ensemble des lignes allant du haut de la feuille jusqu'à la ligne nommée "LigneExpansible" (exclue)
limite = [LigneExpansible].Row 'numéro de ligne de la ligne nommée "LigneExpansible"
For i = 1 To limite - 1 'toutes les lignes depuis le haut de la feuille jusqu'à la ligne "LigneExpansible"
h = Rows(i).RowHeight 'hauteur de chaque ligne
TopComboListe1 = TopComboListe1 + h 'hauteurs cumulées
Next
ActiveSheet.Shapes("ComboListe1").Top = TopComboListe1 'positionnement du 1er ComboBox par rapport au haut de la feuille
'Chargement du ComboBox "ComboBox_NbSolvants" (nombre de solvants désirés pour la formulation)
ReDim liste(1 To NbComboListe)
For i = 1 To NbComboListe
liste(i) = i 'il y a autant d'items que de ComboBox qui auront été crées
Next
With Worksheets("Données").ComboBox_NbSolvants
.List = Application.Transpose(liste)
.ListIndex = NbSolvants
End With
'Chargement du tableau dynamique "ListeSolvChoisis()" (liste des solvants choisis avant la fermeture du classeur)
For i = 1 To NbSolvants + 1
Set cbb = ActiveSheet.OLEObjects("ComboListe" & i).Object
ListeSolvChoisis(i) = cbb.Value
'*************************************
ListeNbItems(i) = ActiveSheet.OLEObjects("ComboListe" & i).Object.ListCount 'on charge le Nombre de lignes
'*************************************
Next
'*************************************
[G7:G13].ClearContents 'on efface la plage de données
[G7:G13] = ListeNbItems
'*************************************
End Sub