| ||||||||
bonsoir a tous je voudrais effacer la cellule colonne B de la feuille liste "qui contient libre" si en feuille nouvelle ref la cellule J8 correspond a la même valeur que la cellule de la colonne A de la feuille liste
EN INCORPORANT AU CODE valider_nouvelle_donnée
Je joins un fichier exemple http://cjoint.com/?0EBwUEqURxG A+ AIGLON74 | ||||||||
Publicité | ||||||||
| ||||||||
Astucien | Salut, Dans l'immédiat, tu as supprimé un End With avant la ligne fin = ... qu'il faut rétablir avant d'exécuter cette procédure si tu ne veux pas avoir quelque surprise désagréable lors du tri qui suit ! [parce que la référence de la plage à trier va se définir en décalage par rapport à B7 comme s'il s'agissait de A1 et le tri s'effectuerait sur C13:H...] Le fait que tu en aies rajouté un en fin de procédure empêche sans doute une erreur d'exécution mais il vaudrait mieux une erreur qui ne fait pas de dégât puisqu'elle arrête tout... Note également que les déclarations de variables doivent être systématiquement faites en début de procédure, avant toute autre instruction, cela évite des problèmes ultérieurs. Pourquoi ne pas chercher dès le départ un emplacement libre dans la Liste ? Maintenir la liste à jour en effaçant les "Libre" lors d'une insertion et en les rajoutant lors d'une suppression peut être fait, soit dans chacune des procédures, soit par une procédure auxiliaire (ce qui éviterait de surcharger les procédures d'actions principales avec des actions annexes). Il serait boon également de savoir si dans le cas où un emplacement est ajouté ou supprimé dans la base, si ce dernier n'est pas trouvé dans la feuille Liste, s'il convient de le rajouter automatiquement ou de seulement le signaler pour que tu le fasses manuellement. Trop tard pour voir ça maintenant, je regarde demain. Modifié par ferrand le 28/05/2015 00:56 | |||||||
Astucien | Une suggestion pour contrôler de plus près les emplacements : http://cjoint.com/?EECmTpuWKJa La sélection de la cellule J8 affiche un ComboBox dont la liste déroulante permet de faire défiler la liste des emplacements consignés dans la feuille Liste. On voit donc ceux qui sont libres, et on peut sélectionner (ou taper si on le souhaite) l'emplacement libre voulu. Lorsqu'un emplacement libre a été sélectionné (ou tapé), le ComboBox est masqué automatiquement. Un clic droit sur la cellule J8 permet également à l'utilisateur d'afficher et masquer alternativement le ComboBox (ce qui permet de le masquer dans les cas ou il ne se masque pas automatiquement, et de l'afficher sans avoir à déplacer la sélection). Si l'utilisateur sélectionne (ou tape) un emplacement non libre, un message l'en avise et l'inscription en J8 est effacée. S'il tape un emplacement non répertorié dans la liste, un message lui demande s'il souhaite que cet emplacement soit ajouté à la liste : en cas de réponse positive, l'emplacement est ajouté à la liste, mentionné libre, et la liste est retriée. On a donc ainsi l'assurance de ne lancer la procédure de nouvelle référence dans la base qu'avec un emplacement libre. La procédure continue cependant de vérifier si le nouvel emplacement à enregistrer est bien absent de la base. Dans le cas où il ne l'est pas (erreur fortuite ayant maintenu ou rétabli la mention libre dans la liste pour un emplacement qui ne l'était plus), un message le signale, la liste est mise à jour en effaçant la mention libre en regard de l'emplacement concerné, et la cellule J8 est effacée pour permettre à l'utilisateur de choisir un autre emplacement. Lorsque l'enregistrement est réussi, la liste est mise à jour (mention libre effacée). Si la méthode convient, il restera à opérer une petite modif dans la précédure de suppression pour l'opération inverse (rétablir la mention libre pour l'emplacement supprimé de la base). La même procédure de mise à jour est prévue pour opérer cette opération... Les procédures de gestion du ComboBox se trouvent dans le module de la feuille de calcul concernée. Des procédures auxiliaires sont ajoutées pour opérer un ajout dans la liste, mettre à jour la liste, et forcer le masquage du ComboBox (qui dans le cas d'un ajout se réaffiche, alors que l'emplacement inscrit en J8 étant valide, il devrait se masquer). La liste est par ailleurs nommée, en plage dynamique (nom qui s'adapte aux variations du nombre d'éléments de la liste), à voir dans le gestionnaire de noms. Modifié par ferrand le 28/05/2015 13:26 | |||||||
Astucien | Je vois que ma suggestion t'a rendu coi ! Bref ! il y manque toujours le complément (rapide à faire toutefois, mais je ne me souviens plus si je l'ai fait sur le modèle précédemment traité...) Peu importe, ta problématique m'a lancé sur un exercice : ne conserver que les feuilles Accueil, Base et Liste, et procéder aux opérations au moyen d'un Userform (un seul Userform pour tout). Pour illustrer : (Les TextBox s'affichent au survol des boutons.) Je n'ai pas testé en détail encore, mais le Userform est conforme au lancement de chacune des opérations. NB- Les images sont réduites par rapport aux dimensions réelles.
| |||||||
|
Les bons plans du moment PC Astuces | Tous les Bons Plans | ||||||||||||||||||
|