Salut padasan et le forum
Comme je l'ai déjà dit, je ne suis pas utilisateur de ton fichier : toute évidence ne l'est que pour toi !
Si j'ai bien compris, on propose des places sur la feuille "Covoiturage 14" :
nom_14 : tu en fais une plage fixe, alors qu'elle doit être dynamique : pour ce nom, dans "fait référence à" :
=DECALER('14'!$A$1;1;0;NBVAL('14'!$A$2:$A$1000);1)
et tu essaies, en ajoutant ou supprimant des nom en A de 14.
Ensuite, tu peux affecter la liste de validation aux cellules D12:D63.
Si on inscrit une valeur dans B12:B63, il faudra obligatoirement que B, C, D soient remplies (et sans doute H et I) : Ce qui m'importe, c'est le moment où on avertit que les cellules ne sont pas remplies.
On peut le faire de manière automatique, mais comme je ne connais pas le fonctionnement attendu... je propose qu'on fasse cela à l'inscription (clic sur je m'inscris).
Remplace ton code par celui-ci :
Sub Inscription14()
'Déclaration =====================================
Dim F As Worksheet, Shp As Shape, X As Long, Col As Integer
'MEI =============================================
Set F = ActiveSheet 'feuille active
Set Shp = F.Shapes(Application.Caller) 'forme ayant lancé la macro
'Vérification ====================================
X = Shp.TopLeftCell.Row 'ligne concernée
For Col = 2 To 4
If F.Cells(X, Col) = "" Then
MsgBox "vous devez remplir : " & F.Cells(11, Col), vbCritical, "Erreur de saisie"
F.Cells(X, Col).Activate
Exit Sub
End If
Next Col
'Sortie ==========================================
MsgBox ("Nous vous remercions de proposer le covoiturage pour ce trajet. Les données ont bien été enregistrées, vous pouvez quitter l'application.")
ActiveWorkbook.Save
End Sub
Testes-le. On aurait pu le condenser (ne pas définir F, X et Shp, mais utiliser la définition de Application.caller), mais je suppose que c'est un début de traitement.
A+