Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ListBox en délire

15 réponses
Avatar
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

10 réponses

1 2
Avatar
michdenis
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" a écrit dans le message de groupe 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
Avatar
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" a écrit dans le message de groupe 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
Avatar
michdenis
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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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
Avatar
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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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
Avatar
michdenis
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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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
Avatar
Daniel.C
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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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
Avatar
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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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
Avatar
Mishell
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" a écrit dans le message de news:

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" a écrit dans le message de groupe
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" a écrit dans le message de groupe
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" a écrit dans le message de groupe
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








Avatar
michdenis
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" a écrit dans le message de groupe de discussion :

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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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" a écrit dans le message de groupe 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
Avatar
Daniel.C
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" a écrit dans le message de news:

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" a écrit dans le message de groupe 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" a écrit dans le message de groupe
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" a écrit dans le message de groupe
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








1 2