ListBox en délire

Le
Daniel.C
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #21337511
Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C"
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Daniel.C
Le #21337711
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
michdenis
Le #21337861
En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C"
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Daniel.C
Le #21338631
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
michdenis
Le #21339491
Bonjour Daniel,

Tu as une solution viable avec l'usage d'une variable booléenne.

Je serais curieux de savoir qu'elle était la version d'Excel avec laquelle
l'application a été développée... mais ça relève plus du "bug" que d'une
explication rationnelle.

Si on devait tenter une explication, on pourrait la formuler comme suit :
Lorsque tu cliques sur le bouton "Update" le fait que tu édites une
cellule de la feuille qui est la source (RowSource) du listbox, cela provoque
l'événement change car le "contenu" du listbox s'en trouve modifier.
D'ailleurs, si tu modifies l'événement "Listbox1_Change" pour l'"événement_clic"
le résultat est le même.

Heureusement, la situation a été corrigée avec les versions 2003 et 2007. Je n'ai
pu tester avec les versions précédentes. Nul n'est tenu à l'impossible !
;-)



"Daniel.C"
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Daniel.C
Le #21340171
Bonjour Denis.

Merci pour ton analyse du problème, qui conforte la mienne. Peux-tu
expliquer pourquoi l'utilisation de Controlsource peut provoquer le
problème ?

Cordialement.

Daniel

Bonjour Daniel,

Tu as une solution viable avec l'usage d'une variable booléenne.

Je serais curieux de savoir qu'elle était la version d'Excel avec laquelle
l'application a été développée... mais ça relève plus du "bug" que d'une
explication rationnelle.

Si on devait tenter une explication, on pourrait la formuler comme suit :
Lorsque tu cliques sur le bouton "Update" le fait que tu édites une
cellule de la feuille qui est la source (RowSource) du listbox, cela provoque
l'événement change car le "contenu" du listbox s'en trouve modifier.
D'ailleurs, si tu modifies l'événement "Listbox1_Change" pour
l'"événement_clic" le résultat est le même.

Heureusement, la situation a été corrigée avec les versions 2003 et 2007. Je
n'ai pu tester avec les versions précédentes. Nul n'est tenu à l'impossible !
;-)



"Daniel.C" discussion :
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Daniel.C
Le #21340391
Denis, je viens de reproduire le problème. Je pense que cela vient du
fait que le listbox est rempli avec la propriété "rowsource". Quand on
modifie une cellule de la plage rowsource, cela doit déclencher la
macro listbox1_change.
Daniel

Bonjour Daniel,

Tu as une solution viable avec l'usage d'une variable booléenne.

Je serais curieux de savoir qu'elle était la version d'Excel avec laquelle
l'application a été développée... mais ça relève plus du "bug" que d'une
explication rationnelle.

Si on devait tenter une explication, on pourrait la formuler comme suit :
Lorsque tu cliques sur le bouton "Update" le fait que tu édites une
cellule de la feuille qui est la source (RowSource) du listbox, cela provoque
l'événement change car le "contenu" du listbox s'en trouve modifier.
D'ailleurs, si tu modifies l'événement "Listbox1_Change" pour
l'"événement_clic" le résultat est le même.

Heureusement, la situation a été corrigée avec les versions 2003 et 2007. Je
n'ai pu tester avec les versions précédentes. Nul n'est tenu à l'impossible !
;-)



"Daniel.C" discussion :
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Mishell
Le #21341191
Private Sub CommandButton10_Click()

aaa = ListBox1.ListIndex 'Memoriser ListIndex


If Database_Unlocked = True Then

Dim strRowSource As String
With ListBox1
strRowSource = .RowSource
.RowSource = vbNullString
'Set back so it updates, use a new RowSource
.RowSource = strRowSource
End With

'myTag = True

Sheet3.Cells(aaa + 2, 1) = UserForm1.TextBox50.Text
Sheet3.Cells(aaa + 2, 5) = UserForm1.TextBox51.Text
Sheet3.Cells(aaa + 2, 2) = UserForm1.ComboBox2.Text
Sheet3.Cells(aaa + 2, 3) = UserForm1.ComboBox3.Text
Sheet3.Cells(aaa + 2, 4) = UserForm1.ComboBox4.Text
Sheet3.Cells(aaa + 2, 6) = UserForm1.ComboBox1.Text
Sheet3.Cells(aaa + 2, 7) = UserForm1.ComboBox5.Text
Sheet3.Cells(aaa + 2, 8) = UserForm1.TextBox57.Text
Sheet3.Cells(aaa + 2, 11) = UserForm1.TextBox60.Text

ListBox1.ListIndex = aaa 'Retablir ListIndex

Else
Dim response
response = MsgBox("Only Administrators can amend this Database!",
vbCritical, "Warning!")
End If
'myTag = False

End Sub

Mishell


"Daniel.C"
Denis, je viens de reproduire le problème. Je pense que cela vient du fait
que le listbox est rempli avec la propriété "rowsource". Quand on modifie
une cellule de la plage rowsource, cela doit déclencher la macro
listbox1_change.
Daniel

Bonjour Daniel,

Tu as une solution viable avec l'usage d'une variable booléenne.

Je serais curieux de savoir qu'elle était la version d'Excel avec
laquelle
l'application a été développée... mais ça relève plus du "bug" que d'une
explication rationnelle.

Si on devait tenter une explication, on pourrait la formuler comme suit :
Lorsque tu cliques sur le bouton "Update" le fait que tu édites une
cellule de la feuille qui est la source (RowSource) du listbox, cela
provoque
l'événement change car le "contenu" du listbox s'en trouve modifier.
D'ailleurs, si tu modifies l'événement "Listbox1_Change" pour
l'"événement_clic" le résultat est le même.

Heureusement, la situation a été corrigée avec les versions 2003 et 2007.
Je n'ai pu tester avec les versions précédentes. Nul n'est tenu à
l'impossible !
;-)



"Daniel.C" de discussion :
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" de
discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" de
discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel








michdenis
Le #21341611
il était tard hier soir lorsque j'ai regardé le fichier,
effectivement, tu as raison. Habituellement, je préfère
utiliser quelque chose comme : http://cjoint.com/?dioOVdVcEP

Suggestion : Si les noms des contrôles ressemblaient
à ceci :
Pour les textbox : Tdata + index de 1 à 5
Pour les combobox : Cdata + Index de 1 à 6

Lorsque requis, tu pourrais appeler les procédures...
Cela rend le code plus lisible, fluide et probablement plus rapide
et surtout plus rapide pour la saisie du code !
'-----------------------------
Sub Modifier_La_Couleur(Couleur As String)
Dim MaCouleur As Long, a as Integer
If Couleur = "Green" Then
Macouleur = RGB(204, 255, 204) 'change them to green
ElseIf Couleur = "Red" Then
Macouleur = RGB(255, 204, 204) 'Change them to red
End If
For a = 1 To 5
With Me.Controls(tdata & a)
.BackColor = Macouleur
End With
Next
For a = 1 To 6
With Me.Controls(cdata & a)
.BackColor = Macouleur
End With
Next
End Sub
'-----------------------------
Sub Enabled_Control(Etat As Boolean)
Dim a As Integer
For a = 1 To 5
With Me.Controls(tdata & a)
.Enabled = Etat
End With
Next
For a = 1 To 6
With Me.Controls(cdata & a)
.Enabled = Etat
End With
Next
End Sub
'-----------------------------



"Daniel.C"
Denis, je viens de reproduire le problème. Je pense que cela vient du
fait que le listbox est rempli avec la propriété "rowsource". Quand on
modifie une cellule de la plage rowsource, cela doit déclencher la
macro listbox1_change.
Daniel

Bonjour Daniel,

Tu as une solution viable avec l'usage d'une variable booléenne.

Je serais curieux de savoir qu'elle était la version d'Excel avec laquelle
l'application a été développée... mais ça relève plus du "bug" que d'une
explication rationnelle.

Si on devait tenter une explication, on pourrait la formuler comme suit :
Lorsque tu cliques sur le bouton "Update" le fait que tu édites une
cellule de la feuille qui est la source (RowSource) du listbox, cela provoque
l'événement change car le "contenu" du listbox s'en trouve modifier.
D'ailleurs, si tu modifies l'événement "Listbox1_Change" pour
l'"événement_clic" le résultat est le même.

Heureusement, la situation a été corrigée avec les versions 2003 et 2007. Je
n'ai pu tester avec les versions précédentes. Nul n'est tenu à l'impossible !
;-)



"Daniel.C" discussion :
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel
Daniel.C
Le #21342421
Bonjour.

Merci, mais le listbox_change réinialise les autres contrôles sans que
le listindex change.

Cordialement.

Daniel

Private Sub CommandButton10_Click()

aaa = ListBox1.ListIndex 'Memoriser ListIndex


If Database_Unlocked = True Then

Dim strRowSource As String
With ListBox1
strRowSource = .RowSource
.RowSource = vbNullString
'Set back so it updates, use a new RowSource
.RowSource = strRowSource
End With

'myTag = True

Sheet3.Cells(aaa + 2, 1) = UserForm1.TextBox50.Text
Sheet3.Cells(aaa + 2, 5) = UserForm1.TextBox51.Text
Sheet3.Cells(aaa + 2, 2) = UserForm1.ComboBox2.Text
Sheet3.Cells(aaa + 2, 3) = UserForm1.ComboBox3.Text
Sheet3.Cells(aaa + 2, 4) = UserForm1.ComboBox4.Text
Sheet3.Cells(aaa + 2, 6) = UserForm1.ComboBox1.Text
Sheet3.Cells(aaa + 2, 7) = UserForm1.ComboBox5.Text
Sheet3.Cells(aaa + 2, 8) = UserForm1.TextBox57.Text
Sheet3.Cells(aaa + 2, 11) = UserForm1.TextBox60.Text

ListBox1.ListIndex = aaa 'Retablir ListIndex

Else
Dim response
response = MsgBox("Only Administrators can amend this Database!", vbCritical,
"Warning!")
End If
'myTag = False

End Sub

Mishell


"Daniel.C"
Denis, je viens de reproduire le problème. Je pense que cela vient du fait
que le listbox est rempli avec la propriété "rowsource". Quand on modifie
une cellule de la plage rowsource, cela doit déclencher la macro
listbox1_change.
Daniel

Bonjour Daniel,

Tu as une solution viable avec l'usage d'une variable booléenne.

Je serais curieux de savoir qu'elle était la version d'Excel avec laquelle
l'application a été développée... mais ça relève plus du "bug" que d'une
explication rationnelle.

Si on devait tenter une explication, on pourrait la formuler comme suit :
Lorsque tu cliques sur le bouton "Update" le fait que tu édites une
cellule de la feuille qui est la source (RowSource) du listbox, cela
provoque
l'événement change car le "contenu" du listbox s'en trouve modifier.
D'ailleurs, si tu modifies l'événement "Listbox1_Change" pour
l'"événement_clic" le résultat est le même.

Heureusement, la situation a été corrigée avec les versions 2003 et 2007.
Je n'ai pu tester avec les versions précédentes. Nul n'est tenu à
l'impossible !
;-)



"Daniel.C" discussion :
Je n'en ai pas vu, mais, comme il y a pas mal de contrôles, je peux en
avoir loupé un.
Le classeur est là :
http://www.cijoint.fr/cjlink.php?file=cj201003/cijcAMZUlG.xls
Choisis la feuille Sheet1, clique sur le bouton "Log claims" et le
userform1 s'affiche. Clique sur l'onglet "Daily throughput" du
multipage, puis sur l'onglet "List of Claims". Les données de Sheet3
s'affichent dans le listbox. Choisis une ligne et clique sur "Edit". On
te demande le mot de passe (Mango0ne) (o, zéro). Change une donnée et
clique sur Update. Si tu as mis un point d'arrêt au début de la macro :
Private Sub CommandButton10_Click()
tu peux observer ce que j'ai décrit.
Daniel

En attendant d'avoir sa réponse, tu peux toujours
vérifier si certains contrôles du formulaire utilisent
la propriété "ControlSource". Si oui, tu as ta réponse !
;-)



"Daniel.C" de
discussion :
Je viens de recréer un classeur reprenant cette partie du code et je ne
reproduis pas le problème. Je vais demander à l'auteur du classeur la
permission de mettre son classeur sur cjoint.
Merci de ton implication.
Daniel

Bonjour Daniel,

Voici un exemple : http://cjoint.com/?dhumtUCl3M
L'exemple présenté ne fait pas déclencher l'événement.
Mais comme il y a plusieurs façons de procéder, je vais
attendre que tu présentes ta manière de procéder avant
d'aller de l'avant.






"Daniel.C" de
discussion :
Bonjour à tous.

Quelqu'un peut-il m'expliquer pourquoi, lorsque j'exécute la commande :

Feuil3.Cells(ListBox1.ListIndex + 2, 1) = UserForm1.TextBox2.Text

la macro évènementielle "ListBox1_Change" se déclenche ? (la ligne se
trouve dans le code de CommandButton_Click). J'ai contourné avec un
switch, mais je voudrais comprendre.

Merci d'avance.

Daniel








Publicité
Poster une réponse
Anonyme