Bonsoir,
1) Tous les champs de la Feuille "Base de données" sont nommés.
---> voir menu "Formules", "Gestionnaire de noms".
Dès l'introduction de nouvelles donnée en colonne,l'action sur le bouton met à jour les listes déroulantes (en redéfinissant les plages)
Une colonne ou plusieurs colonnes peut être ajoutées.
Option Explicit
Private Sub cmd1_Click()
Dim sH As Worksheet
Dim Noms As Variant
Dim derLigne As Integer
Dim derColonne As Integer
Dim Plage As Range
Dim i As Integer
Application.ScreenUpdating = False
Set sH = Worksheets("Base de données")
For Each Noms In ActiveWorkbook.Names
Noms.Delete
Next
With sH
'dernière colonne non vide de la ligne 1
derColonne = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
For i = 1 To derColonne Step 1
'dernière ligne non vide de chaque colonne
derLigne = Columns(i).Find("*", , , , xlByColumns, xlPrevious).Row
'on sélectionne la plage et on la nomme
Set Plage = Range(Cells(1, i), Cells(derLigne, i))
Plage.CreateNames Top:=True, Left:=False, Bottom:=False, Right:=False
Next i
End With
Set Plage = Nothing
End Sub
2) Ensuite tu cherches "fonction Indirect" dans l'aide Excel, et repères particulièrement le passage pour les "champs nommés"
=INDIRECT($A$4) Si la cellule B4 comprend le nom défini « Georges », la valeur du nom défini est renvoyée (10
En espérant t'avoir été utile. A te relire, le cas échéant.
Cdlt