Bonsoir le fil, bonsoir le forum,
En pièce jointe ton fichier modifié avec le code commenté. J'ai modifié l'UserForm1 pour qu'il contienne toutes les données d'une ligne. Tu peux désormais l'utiliser pour Ajouter, Modifier ou Supprimer les données. L'avantage de l'UserForm est que si tu ajoutes une données qui n'existait pas dans une ComboBox, sa liste est automatiquement mise à jour.
Mais tu peux continuer à Ajouter directement dans le tableau. Tu peux aussi ajouter des données dans les listes. Elles seront alors automatiquement prises en compte dans les validations de données des colonnes G, H, K, L, O et S...
Tout cela se fait par l'intermédiaire des Noms du Gestionnaire de Noms (bandeau Formules) qui contiennent la formule DECALER permettant l'alimentation dynamique des comboboxes et des Listes de Validation de Données...
Pour faciliter la récupération ou l'envoie des données (Formulaire <=> Tableau), j'ai utilisé la propriété [Tag] pour tous les contrôles contenant les données (pour les autres, Labels, CommandButtons, cette propriété est vide). Elle correspond au numéro de la colonne dans laquelle la valeur du contrôle doit être renvoyée. Cela permet de boucler facilement. Comme elle est de type String, je la convertis en Byte pour les adresses Cells(Ligne, Colonne).
La variable publique LI (dans le module [Module1] fait le reste. En fonction de sa valeur, l'utilisateur va pouvoir Ajouter ou Modifier/Supprimer une ligne de données.
J'ai rajouté deux boutons pour lancer les UserForms.
• Le bouton Ajouter ouvre l'UserForm1 vierge et définit la ligne LI comme étant la première ligne vide de la colonne A.
• Le bouton Rechercher ouvre l'UserForm2 qui permet à l'utilisateur de rechercher rapidement la ligne à modifier.
Il suffit de taper la texte à rechercher (une partie suffit) dans la Textbox1. Il peut s'agir du texte de n'importe quelle colonne.
• La ListBox1 affiche alors la liste des lignes contenant le texte (ou rien si aucune occurrence du texte n'est trouvée).
• Un Clic dans une ligne de la ListBox1 redéfinit la ligne LI et ouvre l'UserForm1 avec les données correspondantes. Le bouton Ajouter devient Modifier. Le bouton Supprimer devient visible.
On peut aussi Modifier/Supprimer une ligne en double-cliquant dans la colonne A de celle-ci. L'UserForm1 s'ouvre avec les données de la ligne.
La Suppression de fait après validation dans un message. Après le "Oui" elle est irréversible...
Ce qui reste à faire :
• La gestion des champs obligatoires : il faut que tu définisses lesquels
• La gestion du format de certains champs : Numérique bloqué à 5 digits (COG), Heures (temps depuis Romans), Km (Distance depuis Romans), Euros (colonnes P, Q et R), dates (Disponibilités), si nécessaire.