Private ob As Object 'déclare la variable ob (Onglet Base de données)
Private ot As Object 'déclare la variable ot (Onglet TBD dynamique)
Private Sub UserForm_Initialize() 'à l'initialisation de l'UserForm
Set ob = Sheets("Base de données") 'définit l'onglet ob
Set ot = Sheets("TBD dynamique") 'définit l'onglet ot
Me.ComboBox1.List = ob.Range("A3:A" & ob.Cells(Application.Rows.Count, 1).End(xlUp).Row).Value 'alimente la combobox1
End Sub
Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim li As Integer 'déclare la variable li (LIgne)
Dim col As Byte 'déclare la variable col (COLonne)
If Me.ComboBox1 <> "" Then 'condition 1 : si la ComboBox1 n'est pas vide
ot.Range("B17").Value = Me.ComboBox1 'place le mois en B17
li = ob.Columns(1).Find(Me.ComboBox1.Value, , xlValues, xlWhole).Row 'définit la ligne li
'boucle sur toutes les cellules éditées cel de la ligne 16
For Each cel In ot.Range("D16:" & ot.Cells(16, Application.Columns.Count).End(xlToLeft).Address)
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante
'définit la colonne col (provoquie une erreur si aucune occurrence n'est trouvée)
col = ob.Rows(2).Find(cel.Value, , xlValues, xlWhole).Column
If Err <> 0 Then 'condition 2 : si une erreur a été générée
Err = 0 'annule l'erreur
MsgBox "Verifiez l'orthographe !" 'message
cel.Select 'sélectionne la cellule erronée
Unload Me 'vide et ferme l'Userform
Exit Sub 'sort de la procédure
End If 'fin de la condition 2
On Error GoTo 0 'annule la gestion des erreurs
cel.Offset(1, 0).Value = ob.Cells(li, col) 'place en dessous de la cellule cel la valeur de la vente du mois
Next cel 'prochaine cellule de la bolucle
End If 'fin de la condition 1
Unload Me 'vide et ferme l'Userform
End Sub