IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonctionnement de Worksheet_Change ?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 40
    Par défaut Fonctionnement de Worksheet_Change ?
    Bonsoir,

    Je m'interroge sur le moment ou l'événement Worksheet_Change est créé ?

    Je m'explique : quand on tape au clavier dans une cellule il me semble que le Worksheet Change et pourtant si on tape Escape l'ancienne valeur est remise

    Ça voudrait dire que l'ancienne valeur est sauvegardée ?

    - Quand ? (au niveau de Worksheet_SelectionChange ?)
    - Où ?
    - Y-a-t'il moyen de récupérer ce mécanisme ?

    Merci pour vos lumières.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    tant que tu ne valides pas ta saisie, tu es en mode édition de la cellule.

    en validant, tu sors du mode édition et tu actives l'évènement change
    en échappant (annulant) ce que tu as saisi en mode édition, tu n'actives pas l'évènement change .... puisque rien n'a changé

  3. #3
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 40
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Bonjour,

    tant que tu ne valides pas ta saisie, tu es en mode édition de la cellule.

    en validant, tu sors du mode édition et tu actives l'évènement change
    en échappant (annulant) ce que tu as saisi en mode édition, tu n'actives pas l'évènement change .... puisque rien n'a changé
    Bonjour,

    Il y a donc une couche supplémentaire, le mode édition de cellule où l'ancienne valeur est sauvegardée ?

    Comment en profiter ? Je veux dire actuellement je sauvegarde systématiquement la valeur au niveau de Worksheet_SelectionChange pour m'en servir au niveau de Worksheet_Change, il y a peut-être mieux à faire ?

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour Stan_fr
    Il y a donc une couche supplémentaire, le mode édition de cellule où l'ancienne valeur est sauvegardée ?
    Ce n'est pas exactement cela, mais plutôt un mécanisme de "tremplin" (une zone d'édition réelle en arrière plan et que tu ne vois pas). Lorsque tu frappes des touches, tu frappes à ton insu en réalité ailleurs (dans cette zone d'édition). Ensuite :
    - lorsque tu passes à une autre cellule ---> ce n'est qu'alors que le contenu de la vraie zone d'édition est passé à la cellule --->> l'évènement Change survient alors
    - lorsque tu utilises la zone escape --->> tu ne fais que sortir de la vraie zone d"édition, tout simplement. Et le contenu de la cellule reste donc inchangé.

    EDIT : je sais que mes explications peuvent te paraître plutôt floues. Je vais donc revenir avec un petit mécanisme "d'imitationr" de celui de Excel. Tu comprendras alors.
    A plus.

  5. #5
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Novembre 2017
    Messages : 40
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour Stan_fr

    Ce n'est pas exactement cela, mais plutôt un mécanisme de "tremplin" (une zone d'édition réelle en arrière plan et que tu ne vois pas). Lorsque tu frappes des touches, tu frappes à ton insu en réalité ailleurs (dans cette zone d'édition). Ensuite :
    - lorsque tu passes à une autre cellule ---> ce n'est qu'alors que le contenu de la vraie zone d'édition est passé à la cellule --->> l'évènement Change survient alors
    - lorsque tu utilises la zone escape --->> tu ne fais que sortir de la vraie zone d"édition, tout simplement. Et le contenu de la cellule reste donc inchangé.

    EDIT : je sais que mes explications peuvent te paraître plutôt floues. Je vais donc revenir avec un petit mécanisme "d'imitationr" de celui de Excel. Tu comprendras alors.
    A plus.
    Re Bonjour unparia,

    C'est très clair au contraire, j'aurais du me douter qu'on changeait de mode : j'ai des hauteurs de cellules plus petites que la moyenne et lorsque je modifie une valeur j'ai une "fenêtre de saisie" plus haute que ma cellule...

    Du coup c'est moi qui ne suis peut-être pas clair.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Voilà une imitation sommaire de la manière dont Excel traite les saisies :
    crée un nouveau classeur et, sur Feuil1 :
    - insère une textbox textbox1 (contrôle activex)
    - ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private ou As Range, agir As Boolean
     
    Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
      If KeyCode = 27 Then agir = False
    End Sub
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If agir Then ou.Value = TextBox1.Text
       With TextBox1
         .Left = Target.Left
         .Top = Target.Top
         .Width = Target.Width
         .Height = Target.Height
         .Font.Size = Target.Font.Size
         .BorderStyle = fmBorderStyleNone
         .SpecialEffect = fmSpecialEffectFlat
         .Text = Target.Value
         .Activate
       End With
       agir = True
       Set ou = Target
    End Sub
    Regarde maintenant ce qui se passe lorsque tu veux saisir dans une cellule
    Regarde ce qui se passe en sélectionnant ensuite une autre cellule
    Regarde enfin de qui se passe en utilisant la touche escape puis en sélectionnant une autre cellule.

    Clair, non ?

    Et nulle part n'a été mémorisé le contenu antérieur, tout simplement.
    Voilà.

    PS : au passage : un petit coucou à "qui de droit" ("il" se reconnaîtra, s'il a de la mémoire ... Un indice : nul besoin de calculer autrement qu'en points et positionnements directs, hein ...). Je ne doute pas qu'il saura maintenant en profiter ...

Discussions similaires

  1. [XL-2007] Événement Worksheet_Change ne fonctionne pas?
    Par Lufia dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/05/2014, 16h11
  2. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  3. Prb de fonctionnement dans SaveDialog avecInitialDir
    Par boyerf dans le forum Composants VCL
    Réponses: 4
    Dernier message: 12/12/2002, 21h46
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo