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 :

target après la touche "entrer" [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 100
    Par défaut target après la touche "entrer"
    bonjour,
    mon objectif est que lorsque l'utilisateur modifie la valeur d'une cellule, la ligne de la cellule modifiée change (changement du format des cellules).

    pour cela, j'utilise :
    1-l'évenement : worksheet change ainsi que la variable "target" pour connaitre l'emplacement de la celulle modifiée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub Worksheet_Change(ByVal Target As Range)
    Le problème que j'ai, c'est que si l'utilisateur valide la modification par la touche "entrer", la valeur de target passe à la ligne du dessous. mon changement de format se fait alors sur la ligne du dessous...

    Y aurait-il une astuce de pieger ce petit "bug" ?

    Je vous remercie d'avance pour votre aide.
    Loïc

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Non, Target désigne la cellule qui vient d'être changée. Et si tu mettais ton code en entier?

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 181
    Par défaut
    Bonjour à tous.

    Normalement, non ; l'événement est capté dès le changement d'une valeur dans un range, donc avant la sortie dudit Range.
    Avec ce qui est ci-dessous, cela fonctionne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
       Dim Ligne As Long
       Ligne = Target.Row
       ' code ....
    End Sub
    Cordialement.

    [EDIT] Trop tard.

  4. #4
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 100
    Par défaut
    Suite à vos commentaires, je suis retourné dans mon code.
    Je viens de réalisé qu'au lieu d'utiliser la fonction target, j'avais utilisé la fonction "activecells".

    Ca explique donc mon problème.

    J'ai utilisé activecells car je n'arrivais pas a ramener la variable "target" (feuille) au module.


    J'ai déclarer la variable target_row (qui est égale au numero de ligne de target) dans le code de ma feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public target_row As Integer
    target_row = Target.Row

    Mais je n'arrive pas a la récupérer dans mon module

    Est ce que j'ai mal déclaré my variable public?

    merci

  5. #5
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonsoir,
    oui activecell fait partie des choses a proscrire
    pour vérifier la bonne déclaration de ta variable pense a rajouter la ligne de code :
    en haut de toutes tes pages de codes

  6. #6
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 100
    Par défaut
    J'ai refait un petit programme de test,
    voici ce que j'ai dans ma feuille :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public target_row As Integer
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
     
     
    target_row = Target.Row
     
    Application.Run "test"
    End Sub
    voici ce que j'ai dans mon module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Sub test()
     
    MsgBox (target_row)
     
     
     
    End Sub


    mais pour l'instant ca marche pas...

    merci d'avance.

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Ben pour marcher il faut des jambes ....


    que se passe-t-il ?

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

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