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 :

Worksheet / Change retenuir a position de l'Activecell sur un Return [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Par défaut Worksheet / Change retenuir a position de l'Activecell sur un Return
    Bonjour tout le monde

    J'ai un tableau avec 34 colonnes (nombre de ligne de 14 jusqu'à 600, les lignes 1 à 13 sont pour les titres) . Toutes les colones contiennent des valeurs numérique ou alphanumérique. Les colonnes 1 a 19 sont des colonnes sources dans lesquelles l'utilisateur entre des données. Les colonnes 20 à 34 sont des valeurs qui résultent de calculs par une Macro.

    Dans la feuille où se trouve le tableau, j'ai une Macro sous Worksheet Change. Cette macro appel une routine dans un module pour refaire le calcul des cellules 20 à 34 pour la ligne où se trouve l'ActiveCell, lorsque'une valeur change dans une des colonnes 1 à 19.

    Deux des colonnes 7 et 11 contiennent des barres déroulantes dans chacune des cellules. Lorsque nous changeons une valeur dans la barre déroulante, le curseur demeure dans la cellule où le changement a été fait. Dans les autres colonne, lorsqu'un changement est fait et que l'utilisateur presse sur Return la cellule active deviens Ligne + 1. Donc lorsque j'appel la routine pour faire les calculs, je dois envoyer Ligne - 1. Le problème est que si l'utilisateur presse sur la flèche de droite ou gauche au lieu de Return la valeur Ligne ne tient plus.

    Ma question sans faire un Userform comment puis-je figer la cellule sur un Return ou comment voyez-vous la solution.


    Merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 125
    Par défaut
    Salut
    Tout simplement en utilisant le paramètre Target transmis a Worksheet Change, Target représente la ou les cellule(s) modifiée(s), donc au lieu d'utiliser Activecell, tu utilises simplement Target.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Par défaut
    EN paramètre j'ai (ByVal Target As Range)

    Comment puis-je connaitre la ligne ou se trouve "Target"

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    C'est Excel qui te donne la ligne, il suffit d'interroger cette variable Target.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        MsgBox Target.Address
    End Sub
    Philippe

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 104
    Par défaut
    Désolé de mon ignorance, mais je n'ai jamais travaillé les msgbox autrement que pour afficher un message Msgbox(" ").

    Comment puis-je soutirer la valeur de la ligne du msgbox.

  6. #6
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 125
    Par défaut
    P. JOCHMANS t'as juste donné un exemple pour que tu vois comment utiliser Target, mais msgbox effectivement ne sert qu'a afficher un message a l'ecran.

    Dans ton code si tu utilise par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigneEnCours = ActiveCell.row
    Il te suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LigneEnCours = Target.row
    Activecell comme Target sont tous 2 des objets de type Range, ils représentent donc tous les 2 une cellule ou une plage de cellule (Voir l'aide sur Range).

    Dans la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Target représente la ou les cellules qui viennent d'être modifiées

    Imagine que tu change le contenu de la cellule G5, se faisant cela déclenche l'évènement Change du WorkSheet et exécute le code qu'il contient, ici Target pointera la cellule G5.
    Target.row te retournera donc 5 et Target.column retournera 7 (colonne G, la 7eme colonne), Target.value représente le contenu de la cellule G5 etc... voir les propriété de l'objet Range dans l'aide VBA.

    a++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

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

Discussions similaires

  1. Worksheet change Cell value
    Par NizarDev dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/09/2009, 13h53
  2. [XL-2003] manip worksheet change simple
    Par Emily2711 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/04/2009, 19h43
  3. Procédure Worksheet-change en VB sous excel
    Par jayorange dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 01/03/2008, 15h02
  4. Evènement Worksheet Change
    Par elise__ dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/10/2007, 14h36
  5. evenement worksheets change
    Par AnozerOne dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/07/2007, 06h42

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