Private DCOL As Byte 'déclare la variable DCOL (Dernière COLonne)
Private O As Object 'déclare la variable O (Onglet)
Private Sub Userform_initialize() 'à l'initialisation de l'UserForm
Set O = Sheets("Entree") 'définit l'onglet O
DCOL = O.Cells(1, Application.Columns.Count).End(xlToLeft).Column 'définit la dernière colonne éditée DCOL de la ligne 1 de l'onglet O
Me.ComboBox1.List = WorksheetFunction.Transpose(O.Range(O.Cells(1, 2), O.Cells(1, DCOL))) 'alimente la ComboBox1
Me.ComboBox2.List = O.Range("A2:A" & O.Cells(Application.Rows.Count, 1).End(xlUp).Row).Value 'alimente la ComboBox2
End Sub
Private Sub CommandButton1_Click() 'bouton "Ajouter"
Dim BE As String 'déclare la variable BE (Boîte d'Entrée)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim LI As Integer 'déclare la variable LI (LIgne)
Dim I As Byte 'déclare la variable I (Incrément)
Dim COLJ As Byte 'déclare la variable COLJ (COLonne Jaune)
BE = Application.InputBox("Entrez la valeur à rajouter") 'définit la boîte d'entrée BE
If BE = "" Then Exit Sub 'si bouton "Annuler", sort de la procédure
COL = Me.ComboBox1.ListIndex + 2 'définit la colonne COL
LI = Me.ComboBox2.ListIndex + 2 'définit la ligne LI
For I = COL + 1 To DCOL 'boucle de la colonne (COL+1) à la dernière colonne DCOL
'condition : si la cellule a le fond jaune, définit la colonne COLJ et sort de la boucle
If O.Cells(LI, I).Interior.ColorIndex = 6 Then COLJ = I - 1: Exit For
Next I 'prochaine colonne de la boucle
If COLJ = 0 Then COLJ = DCOL 'si aucune cellule jaune dans la ligne, redéfinit COLJ
For I = COL To COLJ 'boucle de la colonne COL à la colonne COLJ
O.Cells(LI, I).Value = CInt(BE) 'place la valeur de la boîte d'entrée BE (convertie en entier [à adapter]) dans la cellule LI, I
Next I 'prochaine cellule de la boucle
Unload Me 'vide et ferm el'UserForm1
UserForm1.Show 'affiche l'UserForm1
End Sub