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

  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 ?

  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
    Par défaut
    Si tu as le nom de ton image (...) c'est facile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.LeChat.Top = Cells(5, 6).Top
    "LeChat" étant le nom que j'ai donné à un contrôle image Mais on peut faire ça avec un chien, c'est pareil
    A+

  12. #12
    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
    ok, cette ligne implique que tu as déjà existant sur ta feuille de calcul un contrôle image nommé lechat (ou lechien) et que tu te contentes de le replacer sur la feuille. exact ? Mais comment créer ce contrôle image au travers d'une macro ?

  13. #13
    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 crois vraiment que j'ai un problème pour expliquer mon problème. C'est pas rassurant. En général, c'est un signe précurseur pour me prévenir que je suis à la limite de ma capacité de compréhension.
    Alors je réessaie (désolé, ça doit être pénible, mais bon... je cherche depuis quasiment une semaine, et j'ai pas avancé)
    Dans la boite à outils contrôle, il y a un élément qui s'appelle image. lorsque tu en places un sur une feuille et que tu te mets en mode création, tu as accès à un certain nombre de propriétés (clic droit sur l'objet/propritétés) à partir de là, tu peux modifier taille, position sur ta feuille, nom, fichier image lié au contrôle, visibilité, couleur de fond, type de bordure, etc...
    je voudrais pouvoir créer, puis gérer les propriétés d'un tel objet, mais uniquement par l'intermédiaire de macros, sans aucune intervention manuelle.

  14. #14
    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
    Comme ton projet est intéressant, je regarde comment on pourrait faire ça.
    Mais ce n'est pas de la tarte.
    SilkyRoad a déjà donné la réponse à l'une de mes questions, à savoir "comment récupérer le nom d'un objet placé dans une feuille de calculs" (par une procédure unique). "Reste plus qu'à" gérer la modification des propriétés des objets en question par macro. J'en suis là.

    Ce que je t'avais mis dans ma réponse précédente (et qui ne fonctionne pas pour les raisons que j'ai indiquées) avait le même objet. N'en parlons plus.

    Je te tiens au courant
    A+

  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
    Par défaut
    Bien. J'ai posé plein de questions sur le forum et, grace à SilkyRoad, ton pb devrait se résoudre.
    Je te joins le fichier que "nous" avons réalisé.
    Si tu modifies quoi que ce soit, tu dois relancer Workbook_Open pour tester tes modifs.
    Pièce jointe 26552
    Tu me dis
    A+

  16. #16
    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
    bah, j'arrive pas à accéder à la pièce jointe.

  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
    Par défaut
    Normal, je vide les pièces jointes au bout de 15 jours sinon je ne pourrais plus joindre de pièces jointes
    Je vais tâcher de retrouver ça mais récupères-la avant que je la supprime de nouveau
    A tout'

    Je vérifie mais je crois bien que c'était une histoire de greffier Pièce jointe 27508
    Tu dis

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