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 :

Gestion de textbox par macro


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
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut Gestion de textbox par macro
    Bonjour à tous.

    En préambule, une petite présentation, qui servira accessoirement de prévention : je ne suis absolument pas informaticien. Les quelques (rares) connaissances du visual basic dont je dispose sont exclusivement empiriques, donc ma façon de programmer doit ressembler à peu près au pire cauchemar de tout informaticien qui se respecte.

    Après avoir parcouru en long en large et en travers ce forum, je me résoud à poster une nouvelle discussion. La réponse à ma question est certainement déjà sur le forum, mais bon, je n'ai rien trouvé d'assez clair pour pouvoir l'utiliser.

    Mon problème est donc le suivant.

    sur une feuille de calcul, je dois gérer des groupes de 4 petites images, visibles ou non selon les circonstances, dont le nom se trouve dans une mini base de donnée sur une autre feuille. jusque là, je m'en sors à peu près.
    en plus de ces images, je dois gérer une étiquette, qui apparait lorsque la souris passe au dessus de l'une des images. Pour ça aussi, je pense pouvoir m'en sortir.
    Le problème arrive lorsque je veux modifier automatiquement (par l'intermédiaire d'une macro) le texte de ladite étiquette. je tente désespérément d'utiliser le .caption, et excel me renvoie une erreur propriété ou méthode non gérée par cet objet. Et là, je bloque. Quelqu'un peut m'aider ?

    Pour tenter d'être plus clair voici ce que j'ai écrit :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub test()
     
    Dim Nom_image_originale, _
          Nom_BDD As String
     
        Nom_BDD = "TE-MOB-001"
     
        ActiveSheet.Shapes("Im_Et_NS").Select
        Selection.Copy
        Range("CH36").Select
    'dans la version finale, cet emplacement sera défini par la position de la
    'souris au moment de la demande de création
        ActiveSheet.Paste
        Nom_image_originale = Selection.Name
        Selection.Name = Nom_BDD + Right(Nom_image_originale, 3)
     
     'même code pour les trois autres images
     
        ActiveSheet.Shapes("Tx").Select
        Selection.Copy
        Range("CH36").Select
        ActiveSheet.Paste
        Selection.Caption = "Texte de l'étiquette" 'cette ligne provoque une erreur
        Selection.Name = "Nom_BDD" + "_Tx"
     
    End Sub
     
    'l'étiquette d'origine a été créée comme ceci
    '    ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1", Link:=False, _
           DisplayAsIcon:=False, Left:=1123.5, Top:=395.25, Width:=87, Height:= _
           24).Select
    Voilà, j'espère ne pas avoir été trop brouillon dans mes explications, et que quelqu'un saura me donner des idées, voire me donner un cours de VBA excel (ca me semble de plus en plus nécessaire).

  2. #2
    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
    Par défaut
    De quel type d'image s'agit-il ? Utilises-tu un contrôle image issu de la boîtes à outils contrôles ? Si oui, un clic droit sur l'image permet d'afficher les propriétés. Or parmi ces propriétés, je ne vois pas la propriété "Caption", ni d'ailleurs ControlTipText qui permettrait un affichage fugitif d'un message sur l'événement Mouse_Move.
    Peux-tu préciser ?
    A+

  3. #3
    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
    Par défaut
    Pour t'apporter tout de même une réponse : Je crée un label selon ta méthode
    'l'étiquette d'origine a été créée comme ceci
    ' ActiveSheet.OLEObjects.Add(ClassType:="Forms.Label.1", Link:=False, _
    DisplayAsIcon:=False, Left:=1123.5, Top:=395.25, Width:=87, Height:= 24).Select
    Je place une image dans un contrôle image issu de la boîte à outils contrôles
    Dans l'événement MouseMove de l'image, je mets ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Image1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    Label1.Caption = "Image1"
    End Sub
    En faisant ça, j'ai bien "Image1" dans le label.
    Tu dis
    A+

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Argghhh !

    J'étais sur que c'était pas clair, mon explication.

    En fait, le label original a été créé manuellement, à l'aide de la barre d'outils contrôles, ce qui fait qu'en direct, j'ai accès aux propriétés habituelles, genre caption, backstyle, etc...

    La ligne que j'ai noté, c'est ce qui apparait dans la macro lorsque j'enregistre en même temps que je crée le controle label.

  5. #5
    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
    Par défaut
    Ça ne change rien au fonctionnement de la ligne que je t'ai passée où est utilisé l'événement mousemove de ton bouton.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    Bon, je vais tout reprendre depuis le début, parce que là, je suis vraiment bien bloqué.

    Alors voilà :
    Dans mon fichier, j'ai deux feuilles de calculs.
    La premiere contient une mini base de données, chaque élément de cette base de données décrit un équipement et est référencé par un nom.
    dans la seconde, j'ai plusieurs plans, importés d'un fichier autocad qui représentent les locaux dans lesquels les équipements sont installés.

    Je voudrais, en cliquant à un endroit de ma feuille de plan créer automatiquement une image figurant un des équipements de la base.

    Pourquoi une image ? parce que je veux pouvoir modifier automatiquement son contenu, en fonction des informations contenues dans la base de données (à chaque ouverture du fichier, par exemple)

    De plus, je voudrais qu'une fois que l'image est créée, un clic sur celle-ci lance une autre macro, ouvrant une userform qui contiendrait les données de la base correspondant à l'équipement sélectionné.

    dans l'état actuel des choses, je sais comment récupérer la position de la souris par rapport à ma feuille de calcul au moment du clic, donc le placement de l'image à créer automatiquement ne pose pas de problème.

    par contre, je suis infoutu de créer une image dont je puisse modifier le nom, les caractéristiques de façon automatique. Je ne vois pas non plus comment lui affecter une macro.

    une idée ?

  7. #7
    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
    Par défaut
    Ok. Je vois. J'en étais resté là.
    Citation Envoyé par toi
    en plus de ces images, je dois gérer une étiquette, qui apparait lorsque la souris passe au dessus de l'une des images.
    Tu dis donc
    Citation Envoyé par toujours par toi
    Je voudrais, en cliquant à un endroit de ma feuille de plan créer automatiquement une image figurant un des équipements de la base
    Ce que j'ai compris :
    Tu as une feuil1 qui contient une "mini base de données"
    Tu as une feuil2 "plusieurs plans"
    Ensuite
    Je voudrais, en cliquant à un endroit de ma feuille de plan créer automatiquement une image figurant un des équipements de la base.
    Où prends-tu le nom de l'équipement. Où cliques-tu ? Dans une cellule ? Le cas échéant, que contient la cellule ?
    Si d'autres questions me reviennent, compte sur moi
    A+

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    alors en fait, je ne clique pas vraiment dans une cellule, puisque j'ai l'image du plan sur ma feuille. Je clique donc sur l'image du plan. Cela dit, je sélectionne malgré tout la cellule sur laquelle était positionnée ma souris au moment du clic.
    La cellule que je sélectionne est obligatoirement vide, car si tel n'est pas le cas, une autre macro est lancée.

    quand je parle d'image à créer automatiquement, il ne s'agit pas d'une image externe (sur le disque dur), mais plutôt de l'équivalent de ce qui se passe quand tu sélectionnes le bouton "image" de la boite à outils contrôle (ceci me permet ultérieurement de modifier le contenu de cette image en faisant justement appel à des images situées sur le disque dur).

    Le nom de l'équipement sera déterminé par l'utilisateur, grace à un choix dans une liste reliée à la base de donnée sur l'autre feuille, voire directement par une macro. Dans l'un et l'autre cas, il s'agit d'une variable string.

    Le truc, en fait, c'est qu'une fois que l'image a été créée, je dois pouvoir modifier ses propriétés par l'intermédiaire d'une macro, sans faire appel à un utilisateur.

  9. #9
    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
    Par défaut
    Alors voilà !
    Donc, j'ai placé une image dans un contrôle image de la barre d'outils contrôles.
    Le pb est qu'un contrôle image n'a pas de Tag ou de Caption ou de quoi que ce soit qui permette de récupérer le nom du fichier correspondant.
    Deux solutions : tu donnes une référence à tes contrôles en les renommant du nom de cette référence, ou tu utilises leurs index.
    Ce nom ou cet index renverrait sur une feuille contenant l'index et le nom du fichier.
    Après ouverture et modif du plan, utilises la propriété Picture du contrôle image pour redéfinir le fichier correspondant mais mis à jour.
    Comprends-tu ou dois-je aller plus loin ?
    A+

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 67
    Par défaut
    euhhh.
    Au risque de passer pour un idiot, je dois t'avouer que je n'ai rien compris.
    C'est possible de procéder par étapes, avec des exemples ?
    par exemple, dans un premier temps, comment placerais-tu un contrôle image en cellule B2 (haut gauche de l'igmage sur haut gauche de la cellule) de feuill1, en passant par une macro ?

Discussions similaires

  1. [XL-2010] Gestion des nom par macro
    Par thedragon25 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2012, 10h38
  2. [XL-2003] Gestion d'événements d'un classeur par macro complémentaire
    Par Tenanio dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/11/2010, 15h24
  3. [XL-2003] gestion image par macro
    Par essais dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/11/2009, 08h33
  4. gestion d'alarme par SMS
    Par kitsune dans le forum Développement
    Réponses: 2
    Dernier message: 19/07/2005, 12h31
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

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