OVH Cloud OVH Cloud

application enableevent????

10 réponses
Avatar
JEAN
Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableevents=False

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci

10 réponses

Avatar
Clément Marcotte
Il y a un fichier d'aide dans VBE.


"JEAN" a écrit dans le message de
news:
Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci




Avatar
anonymousA
Bonsoir,

Ceci signifie pouvoir activer (true) ou pas (false) les evenements détectés
par Excel tels que worksheet_chnage ou workbook_beforesave et tous les autres
bien sur.
Il peut parfois être très utile d'inhiber la détection d'evenements pour
eviter que ton programme se morde la "queue" .

A titre d'exemple amusant et pour te permettre de comprendre, essaye le code
suivant en conservant tout d'abord les instructions application.enablevents
puis ensuite en les mettant en commentaires. Je pense que tu pourras
t'apercevoir de l'interet

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next
Application.EnableEvents = False

Range(Target.Offset(-1, 0).Address).EntireRow.Select

Application.EnableEvents = True

End Sub


Bon courage


Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci




Avatar
JEAN
je suis peut etre fatigué
mais je ne voit pas la difference

de les mettre ou pas
peut tu m'expliquer

merci

"anonymousA" wrote:

Bonsoir,

Ceci signifie pouvoir activer (true) ou pas (false) les evenements détectés
par Excel tels que worksheet_chnage ou workbook_beforesave et tous les autres
bien sur.
Il peut parfois être très utile d'inhiber la détection d'evenements pour
eviter que ton programme se morde la "queue" .

A titre d'exemple amusant et pour te permettre de comprendre, essaye le code
suivant en conservant tout d'abord les instructions application.enablevents
puis ensuite en les mettant en commentaires. Je pense que tu pourras
t'apercevoir de l'interet

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next
Application.EnableEvents = False

Range(Target.Offset(-1, 0).Address).EntireRow.Select

Application.EnableEvents = True

End Sub


Bon courage


Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci






Avatar
michdenis
Bonjour Jean,

Pour ajouter aux explications que tu as déjà reçues, je te propose cette petite expérience:

Copie ce qui suit dans le module feuille où tu veux faire le test :

à chaque fois que tu vas sélectionner une nouvelle cellule, tu vas recevoir un message t'indiquant l'adresse de la
cellule que tu as choisie. Si tu places les 2 "Application.EnableEvents" de la procédure à = False , la procédure va
t'afficher le résultat une fois et après, tu auras beau sélectionner autant de cellules que tu veux, cela ne déclenchera
plus la procédure. Mais ce petit bout de code fait bien plus, car il désactive toutes les procédures événementielles
dans tout le classeur, et, si tu as plusieurs classeurs différents qui sont ouverts à partir de la même instance de
l'application excel, eux aussi subiront les foudres de cette petite ligne de code, et ce, peu importe la feuille module
où sera située la procédure, de même que les procédures événementielles se trouvant dans le ThisWorkbook de tous les
classeurs ouverts. Seules les procédures qui sont activées par des boutons de commandes (ou directement dans la fenêtre
des macros Alt + F8 ) vont continuer à s'exécuter normalement. C'est un concept important à comprendre lorsque tu fais
des macros avec excel.

'Code pour ton test
'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = True
MsgBox "La cellule sélectionnée est : " & Target.Address(0, 0)
Application.EnableEvents = True

End Sub
'-----------------------------

Pour que ton classeur fonctionne normalement après ton test, exécute cette petite macro :

'--------------------
Sub RemettreALaNormale()
Application.EnableEvents = True
End Sub
'--------------------


Salutations!




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

Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci
Avatar
michdenis
Bonjour Jean,

Je viens juste d'écrire un message et un petit test sur le sujet !

Voir mon autre message sur ce fil.


Salutations!


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

je suis peut etre fatigué
mais je ne voit pas la difference

de les mettre ou pas
peut tu m'expliquer

merci

"anonymousA" wrote:

Bonsoir,

Ceci signifie pouvoir activer (true) ou pas (false) les evenements détectés
par Excel tels que worksheet_chnage ou workbook_beforesave et tous les autres
bien sur.
Il peut parfois être très utile d'inhiber la détection d'evenements pour
eviter que ton programme se morde la "queue" .

A titre d'exemple amusant et pour te permettre de comprendre, essaye le code
suivant en conservant tout d'abord les instructions application.enablevents
puis ensuite en les mettant en commentaires. Je pense que tu pourras
t'apercevoir de l'interet

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next
Application.EnableEvents = False

Range(Target.Offset(-1, 0).Address).EntireRow.Select

Application.EnableEvents = True

End Sub


Bon courage


Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci






Avatar
JEAN
Si j'ai bien compris

'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = True
MsgBox "La cellule sélectionnée est : " & Target.Address(0, 0)
Application.EnableEvents = True

End Sub

Quand tu met true et true, ou que tu ne mette meme pas les deux enable events
tu aura ton message a chaque fois que tu selectionne une cellule

Mais si tu met Application.EnableEvents= False
code
Application.EnableEventsúlse

quand tu selectionne une cellule tu aura seulement une seule fois le
message,l'evenement se produit une fois.

Est ce que c'est bien ca?

merci


Bonjour Jean,

Pour ajouter aux explications que tu as déjà reçues, je te propose cette petite expérience:

Copie ce qui suit dans le module feuille où tu veux faire le test :

à chaque fois que tu vas sélectionner une nouvelle cellule, tu vas recevoir un message t'indiquant l'adresse de la
cellule que tu as choisie. Si tu places les 2 "Application.EnableEvents" de la procédure à = False , la procédure va
t'afficher le résultat une fois et après, tu auras beau sélectionner autant de cellules que tu veux, cela ne déclenchera
plus la procédure. Mais ce petit bout de code fait bien plus, car il désactive toutes les procédures événementielles
dans tout le classeur, et, si tu as plusieurs classeurs différents qui sont ouverts à partir de la même instance de
l'application excel, eux aussi subiront les foudres de cette petite ligne de code, et ce, peu importe la feuille module
où sera située la procédure, de même que les procédures événementielles se trouvant dans le ThisWorkbook de tous les
classeurs ouverts. Seules les procédures qui sont activées par des boutons de commandes (ou directement dans la fenêtre
des macros Alt + F8 ) vont continuer à s'exécuter normalement. C'est un concept important à comprendre lorsque tu fais
des macros avec excel.

'Code pour ton test
'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = True
MsgBox "La cellule sélectionnée est : " & Target.Address(0, 0)
Application.EnableEvents = True

End Sub
'-----------------------------

Pour que ton classeur fonctionne normalement après ton test, exécute cette petite macro :

'--------------------
Sub RemettreALaNormale()
Application.EnableEvents = True
End Sub
'--------------------


Salutations!




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

Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci






Avatar
Frédéric Sigonneau
Bonsoir,

je ne voit pas la difference
de les mettre ou pas


Procédons ensemble et pas à pas :
Ouvre un nouveau classeur, clique droit sur l'onglet de la première feuille
(Feuil1) et choisis 'Visualiser le code'. Recopie dans la partie droite de
l'éditeur cette petite procédure :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox "coucou"
End Sub

Cette procédure est dite événementielle, cad qu'elle se déclenche lorsqu'un
événement se produit. Ici l'événement est un clic dans une cellule. Retourne
dans Excel et clique dans n'importe quelle cellule (sauf A1, sélectionnée par
défaut) : la boite de message s'affiche avec le bouton OK pour la fermer.

Maintenant, retourne dans l'éditeur de code (Alt+F11) et appuie sur les touches
Ctrl+G. La fenêtre Exécution s'affiche. Elle permet d'exécuter des instructions
isolées, sans avoir besoin de les écrire dans une procédure construite avec Sub
et End Sub.
Dans cette fenêtre tape
application.enableeventsúlse
et appuie sur la touche Entrée.
Retourne dans Excel et clique de nouveau dans n'importe quelle cellule, autre
que la cellule active. Plus de boite de dialogue !
L'instruction 'application.enableeventsúlse' a désactivé les événements, donc
le clic dans une cellule ne déclenche plus l'événement Worksheet_SelectionChange
et la MsgBox n'est pas lancée...
Pour rétablir l'exécution des événements retourne dans l'éditeur de code et dans
la fenêtre Exécution remplace false par true puis appuie de nouveau sur Entrée.
Si tu retournes dans Excel et que tu cliques dans une cellule, cette fois la
boite de dialogue s'affiche : tu as rétabli le déclenchement des événements.

Voili voila.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

je suis peut etre fatigué
mais je ne voit pas la difference

de les mettre ou pas
peut tu m'expliquer

merci

"anonymousA" wrote:


Bonsoir,

Ceci signifie pouvoir activer (true) ou pas (false) les evenements détectés
par Excel tels que worksheet_chnage ou workbook_beforesave et tous les autres
bien sur.
Il peut parfois être très utile d'inhiber la détection d'evenements pour
eviter que ton programme se morde la "queue" .

A titre d'exemple amusant et pour te permettre de comprendre, essaye le code
suivant en conservant tout d'abord les instructions application.enablevents
puis ensuite en les mettant en commentaires. Je pense que tu pourras
t'apercevoir de l'interet

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error Resume Next
Application.EnableEvents = False

Range(Target.Offset(-1, 0).Address).EntireRow.Select

Application.EnableEvents = True

End Sub


Bon courage



Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci








Avatar
michdenis
Bonjour Jean,

Si au lieu d'utiliser l'événement que tu as sélectionné, j'aurais pu utiliser simplement cette petite macro,

'-----------------------------
Sub DéactiverEnableEvents()

Application.EnableEvents = false

End sub
'-----------------------------

Le message n'aurait même pas lieu une fois. La procédure ne se serait jamais exécuter . Plus important encore, Ceci
s'appliquerait à l'ensemble des événements de feuilles ou du ThisWorkbook pour tous les fichiers ouverts.

Pour connaître la liste des macros événementielles qui existent dans un classeur, dans un module feuille, regarde la
liste déroulante de gauche dans le haut de celle-ci et sélectionne Worksheet dans la liste, maintenant dans la liste
déroulante de droite, tu trouveras toutes les macros événementielles possibles. Ceci existe pour chacune des feuilles du
classeur et aussi dans le ThisWorkbook.(dans ce dernier, il faut sélectionner Workbook à la place Worksheet.

En voici une liste partielle de ces macros événementielles ... Si tu avais du code dans l'une d'elle, le fait de mettre
"Application.EnableEvents = false" ferait en sorte que ces macros ne s'exécuteraient jamais jusqu'au moment ou tu
mettrais cette même ligne de code à True. C'est ce pourquoi c'est si important ! Un bon livre en VBA, t'expliquerais
l'usage de chacune. Tu peux toujours jeter un oeil dans l'aide VBA.

Private Sub Worksheet_Activate()

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Private Sub Worksheet_Change(ByVal Target As Range)

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


Salutations!





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

Si j'ai bien compris

'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = True
MsgBox "La cellule sélectionnée est : " & Target.Address(0, 0)
Application.EnableEvents = True

End Sub

Quand tu met true et true, ou que tu ne mette meme pas les deux enable events
tu aura ton message a chaque fois que tu selectionne une cellule

Mais si tu met Application.EnableEvents= False
code
Application.EnableEventsúlse

quand tu selectionne une cellule tu aura seulement une seule fois le
message,l'evenement se produit une fois.

Est ce que c'est bien ca?

merci


Bonjour Jean,

Pour ajouter aux explications que tu as déjà reçues, je te propose cette petite expérience:

Copie ce qui suit dans le module feuille où tu veux faire le test :

à chaque fois que tu vas sélectionner une nouvelle cellule, tu vas recevoir un message t'indiquant l'adresse de la
cellule que tu as choisie. Si tu places les 2 "Application.EnableEvents" de la procédure à = False , la procédure va
t'afficher le résultat une fois et après, tu auras beau sélectionner autant de cellules que tu veux, cela ne
déclenchera
plus la procédure. Mais ce petit bout de code fait bien plus, car il désactive toutes les procédures événementielles
dans tout le classeur, et, si tu as plusieurs classeurs différents qui sont ouverts à partir de la même instance de
l'application excel, eux aussi subiront les foudres de cette petite ligne de code, et ce, peu importe la feuille
module
où sera située la procédure, de même que les procédures événementielles se trouvant dans le ThisWorkbook de tous les
classeurs ouverts. Seules les procédures qui sont activées par des boutons de commandes (ou directement dans la
fenêtre
des macros Alt + F8 ) vont continuer à s'exécuter normalement. C'est un concept important à comprendre lorsque tu fais
des macros avec excel.

'Code pour ton test
'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.EnableEvents = True
MsgBox "La cellule sélectionnée est : " & Target.Address(0, 0)
Application.EnableEvents = True

End Sub
'-----------------------------

Pour que ton classeur fonctionne normalement après ton test, exécute cette petite macro :

'--------------------
Sub RemettreALaNormale()
Application.EnableEvents = True
End Sub
'--------------------


Salutations!




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

Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci






Avatar
ru-th
Salut

Tu devrais regardé les messages faits à testou, celui du 22/11/03 mise à
zéro des cellules,
lui, il avait compris ;-)

a+
rural thierry
"JEAN" a écrit dans le message de news:

Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci




Avatar
jps
:-)))))))))))))
trop bon, mon père
je suppose que, sans que vous soyez don camillo pour autant, Dieu a
accompagné votre souris dans cette remarque d'une perspicacité rare...
jps

"ru-th" a écrit dans le message de
news:
Salut

Tu devrais regardé les messages faits à testou, celui du 22/11/03 mise à
zéro des cellules,
lui, il avait compris ;-)

a+
rural thierry
"JEAN" a écrit dans le message de news:

Bonjour,

Je voudrai avoir quelques explication sur cette ligne de code

Application.enableevents=TRUE
Application.enableeventsúlse

elle sont presentes dans le module de ma feuille 1

mais je ne sais pas a quoi elle sert

quelqu'un peut m'expliquer
merci