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 :

Récupérer le Nom de l'objet Actif


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut Récupérer le Nom de l'objet Actif
    Bonjour,

    Je suis dans ujne feuille Excel et NON dans une USERFORM.
    J'ai pleins d'objets sur ma feuille (TextBox, Combobox, Check box etc...) organisés pour former un formulaire.

    A tout moment j'ai besoin de connaître le nom de l'objet activé sur ma feuille.

    Existe-t-il un équivalent de l'ActiveCell. name ? avec un Objet

    Suis-je obligée de boucler sur tous les objects de ma feuille pour voir celui qui est activé ?

    Merci.
    Bonne journée

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Points : 2 443
    Points
    2 443
    Par défaut
    Salut
    pas de solution
    Mais le fait de vouloir savoir : le but ? On pourrait peut-être contourner le problème, mais pas assez d'indication sur le pourquoi
    A+

  3. #3
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,

    peut être que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Msgbox Me.ActiveControl.Name
    placer dans l'évènement Enter peut d'aider.

    fred65200

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    salut...
    Sur tous tes objets, creer des Private sub avec l'option :MouseMove

    et a chaque fois que la souris passe sur l'objet tu peu ranger son nom en A1 par exemple.

    Sur une feuille j'ai crée un bouton et voila le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
     
    Range("a1") = CommandButton1.Name
    End Sub


    A++++

  5. #5
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonjour Freyia,

    je n'avais pas compris que tu n'étais pas sur un UserForm,

    Comme je l'ai indiqué à taratata ici, l'expression est

    Application.Caller

    Cordialement
    fred65200

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Heumm, je suis désolée, j'avais complétement oublié cette question !!
    trop débordée.

    Utilité :
    je voulais gérer l'utilisation du bouton TAB entre le contrôles de mon formulaire (qui n'est pas un FORM).
    L'idée c'est de détecter l'évènement "Key Press" et de vérifier si c'est une TABULATION. Ensuite, je récupère le nom de l'objet actif en cours et en fonction de l'autre objet associé qui se trouve dans un tableau j'active le focus sur cet autre objet.

    La réponse de fred65200 semble sympa,mais au risque de paraître blonde, qu'est ce qu'il y a dans [A1] ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub NomShape()
    [A1] = Application.Caller
    End Sub
    Merci & Bonne journée

  7. #7
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub NomShape()
    [A1] = Application.Caller
    End Sub
    Dansla cellule A1, tu auras le nom de l'objet cliqué.

    Tu peux aussi écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub NomShape()
    Range("A1") = Application.Caller
    End Sub
    cordialement

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Sans vouloir vous déranger, merci pour la réponse.

    Par dépis, pour chaque contrôle j'avais placé ce bout de code.
    J'espère gagner en clarté et en poid avec votre soluce.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox_1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 9 Then TextBox_2.Activate
    End Sub
    Ciao

  9. #9
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    je ne comprends pas ce que tu veux faire et le rapport avec le titre du post.

    Tu peux éclaircir?

    @+

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    En fait je voulais utiliser la gestion des TAB entre les contrôles :

    Détection de l'évènement "Key Press" + vérification de la touche
    (Ca existe la détection de l'évènement Key-Press ?)

    Si c'est une TAB, je récupère le nom de l'objet actif en cours.
    Je recherche dans un tableau à 2 dimensions si ce contrôle figure dans la liste de ceux que je souhaites utiliser et si c'est le cas, j'active le focus sur le contrôle associé.
    Si l'ordonnancement de mes champs changent, c'est plus facile à maintenit et cela représente moins de code.

    Mon code et lourds et répétitif, je souhaitez trouver des façons d'optimiser tout ça, en créant des fonctions ou .. ou autre ...

    En fait j'avias (il y a longtemps) plus l'habitude de coder en PHP ... là je suis souvent bloquée.

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu devrais tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnKey "{TAB}", "NomDeLaMacro"
    Regarde dans l'aide, à OnKey

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Ok je regarde merci

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Edit
    Je crois qu'il faut mettre la ligne citée dans Workbook_Open, dans l'objet ThisworkBook... mais je ne suis pas certain. Donc, si ça ne fonctionne pas dans un module, place ta macro avec cette ligne là où je te dis
    Enregistre, ferme et ré-ouvre ton fichier.
    A+

  14. #14
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    re

    si tu utilises le code d'ouskel'n'or, n'oublie pas de rétablir la fonction de la touche Tab

    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
    Private Sub Workbook_Activate()
    Application.OnKey "{TAB}", "NomDeLaMacro"
    End Sub
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "{TAB}"
    End Sub
     
    Private Sub Workbook_Deactivate()
    Application.OnKey "{TAB}"
    End Sub
     
    Private Sub Workbook_Open()
    Application.OnKey "{TAB}", "NomDeLaMacro"
    End Sub
    cordialement

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Merci, Fred, c'est bon à savoir et surtout à y penser... Parfois je dis des choses sans savoir et c'est comme ça que j'oublie de dire des choses que je ne sais pas

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Ok, mais juste une question vous pensez que c'est une bonne idée où il y a 10 fois plus simple et je passe à côté ?
    (Sachant que j'ai plus de 60 contrôles)

  17. #17
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si tu as la possibilité de ne faire qu'une macro pour les 60 contrôles, c'est toujours mieux que de faire 60 macros... Mais il faudrait que nous connaissions le bout du bout de la finalité de la chose (là, je n'ai pas bien compris tes explications )

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Bon je pensais être claire.
    Le but c'est juste de povoir passer de contrôle en contrôle en utilisant la touche TAB.

    (l'histoire du tableau c'était juste pour stocker l'ordonnancement des contrôles entre eux)

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par Freiya
    Le but c'est juste de pouvoir passer de contrôle en contrôle en utilisant la touche TAB.
    Alors tu as une autre solution très simple (solution que j'ai vu passer sur le forum et que j'ai oubliée) mais à ta place je créerais une autre discussion avec pour simple question "Comment passer d'un contrôle au contrôle suivant avec TAB, dans une feuille de calculs Excel"
    Là, j'ai peur que n'ai plus de réponse de ceux qui savent vu que ton pb est résolu
    Bonne chance

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juin 2003
    Messages : 60
    Points : 38
    Points
    38
    Par défaut
    Je vais re-chercher merci. (car j'avais déjà cherché quand même
    La solution laplus simple que j'avais trouvé c'étais celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox_1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 9 Then TextBox_2.Activate
    End Sub
    Ca fonctionne, je l'ai fais pour mes 60 et quelques contrôles, mais je trouve ça moche.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Récupérer les noms des ports COM actifs
    Par snymix dans le forum C#
    Réponses: 2
    Dernier message: 15/03/2010, 10h35
  2. [XL-2003] récupérer le nom d'un objet
    Par olhey dans le forum Excel
    Réponses: 1
    Dernier message: 08/07/2009, 07h27
  3. Réponses: 5
    Dernier message: 10/05/2007, 13h31
  4. [POO] Récupérer le nom d'un objet ?
    Par beastman007 dans le forum Langage
    Réponses: 2
    Dernier message: 13/03/2007, 14h11
  5. Récupérer le nom du sous-formaire actif
    Par Le Capitaine dans le forum IHM
    Réponses: 4
    Dernier message: 29/01/2007, 23h30

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