UserForm modifie les mauvaises lignes
Bonjour la communauté,
J'y connais pas grand chose en VBA.
J'ai un formulaire qui permet de visualiser ou modifier des données d'une feuille (Données enregistrées par des magasinier via fichier externe).
En cliquant sur un bouton modifier une zone de recherche apparaît. Et tapant le numéro de PO et une liste filtrée apparaît.
Suffit alors de sélectionner la ligne que l'on souhaite modifier et les donnée de cette ligne apparaissent dans un cadre au dessus.
Le problème lorsque je valide les modifications il écrase la ligne correspondante a la sélection du filtre.
Je m'explique si je tape par exemple 2588 dans la liste de sélection apparaît les lignes 7 et 16 de ma feuille de donnée. Si je clic sur la deuxième ligne de la sélection (qui correspond a ma ligne 16) et que je modifie les informations après je valide et la mon formulaire ne vas pas modifier la ligne 16 mais la 2ème ligne.
exemple: ligne 16:
Ligne avant validation des modifications:
Selection et modification dans le formulaire
Résultat en rouge
Je sais vous allez me dire pourquoi ne pas effectué la modif directement dans la feuille contenant les données. Car on veux pas que les magasinier ai un accès direct au données enregistrer par les autres magasinier mais peuvent malgré tout modifier certaines informations. Donc mon formulaire donne accès aux colonnes autorisées a être visualisées et modifiées.
Le tout sera cadenassé par l'entrée d'un login (si User redirection au formulaire). Ca je devrais pouvoir gérer. Mon problème
majeur étant l'enregistrement erroné apres modification.
Votre aide me sera précieuse.
Je vous remercie déjà tous
Dimi
Bonjour dimijuju
Je m'explique si je tape par exemple 2588 dans la liste de sélection apparaît les lignes 7 et 16 de ma feuille de donnée. Si je clic sur la deuxième ligne de la sélection (qui correspond a ma ligne 16) et que je modifie les informations après je valide et la mon formulaire ne vas pas modifier la ligne 16 mais la 2ème ligne.
Et bien je dirais... forcément
Pour trouver la ligne à modifier, tu utilises
lig = lst_PO.ListIndex + 2La ligne à modifier est le numéro d'index de la ligne sélectionnée
Surtout que tu inscrit bien le numéro de ligne dans ta ListBox
Il faut donc remplacer le code du numéro de ligne à modifier par
lig = Me.lst_PO.List(Me.lst_PO.ListIndex, 5)Ou comme tu l'as fait pour le valideur
ndx = lst_PO_Valideur.ListIndex
lig = lst_PO_Valideur.List(ndx, 5) @+