OVH Cloud OVH Cloud

enable events

11 réponses
Avatar
Misange
Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche :

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change
'de se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche
quand même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableevents=false pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbdd=DECALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini !!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu
--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

10 réponses

1 2
Avatar
LSteph
Bonjour Misange,

Un truc que je ne saisis pas bien, suite au EnableEvents úlse
... je ne vois pas à quel endroit tu remets les events à true?
Tel que je le vois , suite à un CmdValider plus rien ne devrait se
déclencher!?
...ou alors y a-t-il autre chose d'appelé ailleurs..?

'lSteph


"Misange" a écrit dans le message de news:

Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche :

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change 'de
se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche quand
même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableeventsúlse pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini
!!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu
--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


Avatar
Alain CROS
Bonjour.

1)
Application.EnableEvents = False empèche les événements de niveau application, Worksheet.Change etc ... mais pas les évènements des
contrôles.

Private Sub CboNom_Change()
If Application.EnableEvents then
'Le code
End If

2)
ÞCALER(DECALER(bdd!$A$1;1;;;1);;;NBVAL(bdd!$A:$A))

Alain CROS

"Misange" a écrit dans le message de news:
Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche :

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change
'de se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche
quand même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableeventsúlse pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini !!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu
--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta


Avatar
Misange
Super voilà qui explique cela.
je continue !

Pas d'idée pour le point N° 2 (a part éviter d'utiliser décaler dans ce
cas...) ?

Merci
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 10/04/2005 13:50, :
Bonjour.

1)
Application.EnableEvents = False empèche les événements de niveau application, Worksheet.Change etc ... mais pas les évènements des
contrôles.

Private Sub CboNom_Change()
If Application.EnableEvents then
'Le code
End If

2)
ÞCALER(DECALER(bdd!$A$1;1;;;1);;;NBVAL(bdd!$A:$A))

Alain CROS

"Misange" a écrit dans le message de news:

Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche :

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change
'de se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche
quand même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableeventsúlse pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini !!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu
--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta







Avatar
Misange
Mon problème n'était pas jusqu'à présent de reautoriser les événements
mais bel et bien de les désactiver. Evidemment il est prévu de le faire ;-)

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 10/04/2005 13:14, :
Bonjour Misange,

Un truc que je ne saisis pas bien, suite au EnableEvents úlse
... je ne vois pas à quel endroit tu remets les events à true?
Tel que je le vois , suite à un CmdValider plus rien ne devrait se
déclencher!?
...ou alors y a-t-il autre chose d'appelé ailleurs..?

'lSteph


"Misange" a écrit dans le message de news:


Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche :

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change 'de
se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche quand
même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableeventsúlse pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini
!!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu
--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta







Avatar
LSteph
..
Cela je l'avais bien compris, et comme tu disais qu'il se redéclenchait
malgré cela il semblait logique que ce soit ailleurs.
Faute de t'avoir aidé, cela m' a permis, grâce à la réponse d'Alain de
comprendre mieux et d'autres choses.
Merci qd même.

lSteph

"Misange" a écrit dans le message de news:
OE1D$
Mon problème n'était pas jusqu'à présent de reautoriser les événements
mais bel et bien de les désactiver. Evidemment il est prévu de le faire
;-)

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 10/04/2005 13:14, :
Bonjour Misange,

Un truc que je ne saisis pas bien, suite au EnableEvents úlse
... je ne vois pas à quel endroit tu remets les events à true?
Tel que je le vois , suite à un CmdValider plus rien ne devrait se
déclencher!?
...ou alors y a-t-il autre chose d'appelé ailleurs..?

'lSteph


"Misange" a écrit dans le message de news:


Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche
:

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change
'de se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche
quand même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableeventsúlse pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini
!!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu
--
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta








Avatar
Misange
eh eh , j'ai trouvé pour mon point 2 ;-)
mais je vous le dirai pas ici... :-)

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 10/04/2005 11:52, :
Bonjour
j'ai deux petits soucis:

j'ai un formulaire contenant une combo + deux ou trois bricoles (textbox
liés à la valeur du combo). Quand on sélectionne un élément,ca déclenche :

Private Sub CboNom_Change()
If CboNom.ListIndex <> -1 Then
n = CboNom.Value
With Sheets("bdd").Range("nomsbdd")
Set c = .Find(n, LookIn:=xlValues)
If Not c Is Nothing Then
pos = c.Row
'blablabla
end if
End With
'blablbla
End if
End Sub

le userform contient un bouton validé qui quand il est cliqué lance ceci:

Private Sub CmdValider_Click()

Application.EnableEvents = False 'pour empecher la macro cbonom_change
'de se déclencher, du moins je le pensais...
Sheets("bdd").Range(pos & ":" & pos).Delete Shift:=xlUp

'remise à 0 des boites de saisie
CboNom.ListIndex = -1
End Sub

Donc :
1)quand on supprime la ligne, l'événement cbonom_change se déclenche
quand même et provoque bien sur une erreur puisque le nom a disparu...
Où faut-il donc placer cet enableeventsúlse pour que ça marche ?

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)

pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus défini !!
Mais comment faire je vous le demande un peu ?

un peu d'aide serait bienvenu


Avatar
Alain CROS
Re.

Ma proposition ne convient pas ?

Alain CROS

Pas d'idée pour le point N° 2 (a part éviter d'utiliser décaler dans ce
cas...) ?

2)
ÞCALER(DECALER(bdd!$A$1;1;;;1);;;NBVAL(bdd!$A:$A))





Avatar
GD
Bonsour® Flo,
2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)
pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus
défini !! Mais comment faire je vous le demande un peu ?


evidement si tu supprime l'origine, normal alors que EXCEL patauge !!!
il faut ruser ...
et definir de façon dynamique le debut de plage par un autre décaler ...
;o)))
solution intuitive :
ÞCALER(DECALER(Bdd!$A$1;1;;;);;;NBVAL(Bdd!$A:$A)-1)

évidement si tu supprimes aussi la ligne 1 : .... #REF !!!!!

alors rusé pour rusé autant :
ÞCALER(INDIRECT(ADRESSE(2;1));;;NBVAL(Bdd!$A:$A)-1)

;o)))
;-X



un peu d'aide serait bienvenu


Avatar
Misange
ben j'avais pas vu ! et j'tais arrivée exactement au même point ;-)
merci encore
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 10/04/2005 15:11, :
Re.

Ma proposition ne convient pas ?

Alain CROS


Pas d'idée pour le point N° 2 (a part éviter d'utiliser décaler dans ce
cas...) ?



2)
ÞCALER(DECALER(bdd!$A$1;1;;;1);;;NBVAL(bdd!$A:$A))










Avatar
Misange
Main non en fait j'ai trouvé plus simple que vous deux :
Þcaler ($a$1;1;;nbval($a:$a)-1) (avec l'étiquette de colonne en A1)
testé, ca fonctionne (aucun moyen de supprimer la ligne 1 ddans ce que
je fais)
;-)
Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

Le 10/04/2005 15:40, :
Bonsour® Flo,

2)le contenu de la liste est défini de façon dynamique avec decaler.
nomsbddÞCALER(bdd!$A$2;;;NBVAL(bdd!$A:$A)-1)
pb : si je supprime une ligne quelconque ça fonctionne très bien
en revanche si je supprime la ligne 2, du coup nomsbdd n'est plus
défini !! Mais comment faire je vous le demande un peu ?



evidement si tu supprime l'origine, normal alors que EXCEL patauge !!!
il faut ruser ...
et definir de façon dynamique le debut de plage par un autre décaler ...
;o)))
solution intuitive :
ÞCALER(DECALER(Bdd!$A$1;1;;;);;;NBVAL(Bdd!$A:$A)-1)

évidement si tu supprimes aussi la ligne 1 : .... #REF !!!!!

alors rusé pour rusé autant :
ÞCALER(INDIRECT(ADRESSE(2;1));;;NBVAL(Bdd!$A:$A)-1)

;o)))
;-X



un peu d'aide serait bienvenu







1 2