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 :

[DEB] Analyse syntaxique pour macro (court) [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Par défaut [DEB] Analyse syntaxique pour macro (court)
    Bonsoir à tous,
    Voici une macro que j'ai trouvée. En cliquant sur une cellule ,elle prend la valeur 45 de l'index des couleurs ,puis si on clique sur une autre cellule la couleur disparaît et c'est la nouvelle cellule qui est colorée.
    Bien qu'elle paraisse simple je n'arrive pas à voir comment elle marche.

    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
     
    Option Explicit
    Public old_color, old_sel
     
     
    Sub Worksheet_SelectionChange(ByVal sel As Range)
     
          'Changement de couleur après click
     
        If Not old_sel = "" Then Range(old_sel).Interior.ColorIndex = old_color
        old_sel = sel.Address
        old_color = ActiveCell.Interior.ColorIndex
        ActiveCell.Interior.ColorIndex = 45
     
    End Sub
    voici ce que je comprends
    On crée deux variables old_sel et old_color qui sont Public et de type variant je suppose.
    On teste si old_sell n'est pas vide or elle n'a aucune valeur initiale mais quand je suis sa valeur(infobulle), pas à pas , excel lui donne d'emblée la valeur d'une adresse , celle de la cellule sélectionnée à l'ouverture de la feuille??
    Il ne la considère donc pas vide et lui donne comme couleur (après l'avoir considéré comme un objet range ) la valeur old_color que je considère comme vide.
    Je suppose que sel . adress est la cellule ou on l'on clique . Aurait on pu écrire ActiveCell.Adress à la place ?
    Bon après j'ai compris c'est une inversion de couleur.
    C'est surtout l'initialisation que je ne comprends pas . car si old_cell ets la valeur de l'adresse de la cellule sélectionnée dès l'ouverture de la feuille ,ne devrait ce pas être un nom réservé?

    Merci de m'avoir consacré de votre temps

  2. #2
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    On teste si old_sell n'est pas vide or elle n'a aucune valeur initiale mais quand je suis sa valeur(infobulle), pas à pas , excel lui donne d'emblée la valeur d'une adresse , celle de la cellule sélectionnée à l'ouverture de la feuille ?
    L'événement Worksheet.SelectionChange survient lorsque la sélection change dans la feuille de calcul.
    Excel ne donne pas d'emblée la valeur d'une adresse à old_sel, mais seulement dès lors qu'une première sélection de cellule a été effectuée.
    Pour t'en convaincre tu peux tester le code après ajout d'une ligne pour afficher la valeur de old_sel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Public old_color, old_sel
    Sub Worksheet_SelectionChange(ByVal sel As Range)
        'Changement de couleur après click
        MsgBox "Valeur de  old_sel : " & old_sel
        If Not old_sel = "" Then Range(old_sel).Interior.ColorIndex = old_color
        old_sel = sel.Address
        old_color = ActiveCell.Interior.ColorIndex
        ActiveCell.Interior.ColorIndex = 45
    End Sub
    Tu constateras qu'après ouverture du classeur, lors de la première sélection la variable old_sel est vide.
    Après cette première sélection, old_sel conserve l'adresse de la dernière cellule sélectionnée.

    Je suppose que sel . adress est la cellule ou on l'on clique . Aurait on pu écrire ActiveCell.Adress à la place ?
    Sel correspond à la sélection. Elle est identique à ActiveCell si tu ne sélectionnes qu'une cellule.

    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juin 2012
    Messages : 112
    Par défaut
    Mais c'est bien sûr !!!
    Effectivement, comme je mets la feuille en forme, à son ouverture, par du code, l'évènement Worksheet_SelectionChange se produit plusieurs fois à l'insu de mon plein gré, ce qui explique que lorsque j'ai enfin la main , les deux variables ont déjà été initialisées.
    Merci de ta collaboration

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Forum pour analyse syntaxique
    Par Raikyn dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 06/05/2014, 14h36
  2. Automate pour l'analyse Syntaxique
    Par stentorus dans le forum Prolog
    Réponses: 8
    Dernier message: 10/03/2010, 19h44
  3. plugins pour analyse syntaxique sur vim ou xemacs
    Par gfranck dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 15/08/2009, 22h33
  4. [VBA-E] aide pour macro sur excel
    Par letoulouzin31 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 24/05/2006, 12h29
  5. Réponses: 6
    Dernier message: 07/03/2005, 14h45

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