Se connecter / S'enregistrer
Votre question

[VBA Excel] Liste qui se met à jour sans mon accord !

Tags :
  • Programme
  • Programmation
Dernière réponse : dans Programmation
23 Octobre 2004 17:41:44

Salut ! :hello: 

Bon, je pose le décor : j'ai créé un Userform contenant une ListBox (LstClients) qui affiche la liste de mes clients.
Lorsque je clique sur l'un d'eux, les infos le concernant sont affichées à coté dans différentes TextBox.
J'ai aussi un bouton "Modifier" qui me permet de mettre à jour les infos du client sélectionné.

Et c'est là que le problème survient. Lorsque je modifie le Nom du client (ou son Prénom) ça délire complétement (rien ne s'inscrit où je veux).

Donc, j'ai refais les tests à grands coups de F8 (pas à pas) et je me suis rendu compte que lorsque je mets à jour les données affichées dans la liste (Nom et Prénom, le reste étant affiché quand on clique dessus), le programme va chercher la procédure "LstClients_Click()" qui affiche les infos clients.

Tout le monde suit ??? :whistle: 
En clair, je sélectionne un client, je modifie son Nom, je clique sur Modifier.
Alors, le prog met à jour la cellule contenant le Nom et s'aperçoit que ce qu'affiche la liste n'est plus bon, donc va dans la procédure de la liste... celle où je demande d'afficher les infos du client.

Du coup, le LstClients.ListIndex part en sucette, les données ne sont pas mises à jour (puisque la procédure _Click() lui demande d'afficher ce que contient les cellules avant qu'elles ne soient modifiées)...


Bref, ma question est : comment faire pour mettre à jour une ListBox sans que le prog n'aille dans la procédure de celle-ci (LstClients_Click), qu'il reste dans la procédure de mon bouton Modifier ???

Voilà. J'espère qu'il y en a au moins un de vous qui aura pigé et qui me dira que c'est tout con ! ;-)
Merci d'avance. :jap: 
A+

Autres pages sur : vba excel liste met jour accord

23 Octobre 2004 19:03:55

en VB y'a moyen d'empêcher le lancement des procédures évenementielles, en VBA y'a la même syntaxte mais visiblement ça ne marche jamais...

tu peux poster ici le code qui suit le clic sur "modifier" stp ?
j'aimerai bien voir la façon dont tu changes les données dans la listbox, y'a ptet un moyen de faire autrement
23 Octobre 2004 20:34:40

Salut !
Merci d'avoir répondu...
Voici une partie de mon code :


Private Sub Cmd_32_Modifier_Click()
ModifEnCours = 1
.....
If Txt_32_Nom <> Cells(Lst_32_Liste.ListIndex + 2, 4) Then
.....
Cells(Lst_32_Liste.ListIndex + 2, 4) = Txt_32_Nom
[-> Là ça va tout seul dans la procédure de la ListBox]
End If
.....
ModifEnCours = 1
End Sub


Private Sub Lst_32_Liste_Click()
If ModifEnCours = 0 Then
Txt_32_Nom = Cells(Lst_32_Liste.ListIndex + 2, 4)
.....
End If
End Sub


Voilà en gros ce que j'ai.
La variable ModifEnCours permet de ne pas exécuter la procédure (et pas foutre le bordel) de la liste.

Quand je fais ça, le ListIndex de la liste se remet à -1 (pas de sélection) alors que je ne l'ai pas demandé. Du coup, quand je reviens dans la procédure Modifier, ben ça fait des comparaisons avec la mauvaise ligne.

J'espère être clair.
Pourquoi le ListIndex se remet tout seul à -1 ?

Dans une autre situation similaire dans ce bouton Modifier, le ListIndex se met à une autre valeur (aléatoire?) : par exemple je sélectionne la ligne 12 et après la modif, le ListIndex vaut 9 ???
Va falloir m'expliquer là...

Merci d'avance.
@+
24 Octobre 2004 13:14:28

tu peux m'envoyer par mail ton classeur (adresse visible dans mon profil), ça m'intrigue quand même...

peut-être est-ce lié à la perte du focus mais j'ai jamais rencontré ce problème jusqu'à présent... :-?
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS