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 a modifier

Ligne avant validation des modifications:

ligne avant validation

Selection et modification dans le formulaire

modif de la selection

Résultat en rouge :

resultat de la validation en rouge la modif et la ligne 16 n as pas bouger

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

15magasin-test.xlsm (68.92 Ko)

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 + 2

La 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

2020 04 13 05h12 10

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) 

@+

Rechercher des sujets similaires à "userform modifie mauvaises lignes"