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

VBA Discussion :

[Debutant] Impossible d'utiliser les noms des groupes de formes dans les macros ?


Sujet :

VBA

  1. #21
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Franchement merci de ton aide ... mais bon désolé, je crois que ce n'est pas le dernier message ...

    Citation Envoyé par ouskel'n'or
    qu'appelles-tu "mes shapes sont des formes automatiques" ?
    Ben en bas à droite (dans la barre dessin) ... Formes Automatiques ... pour créer des infos-bulles par exemple

    Citation Envoyé par ouskel'n'or
    si tu fais ça pour obtenir le nom de tes groupes, tu as le nom de tes groupes et le nom de tes objets au même niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To ActiveWorkbook.Names.Count
            MsgBox ActiveWorkbook.Names(i)
    Next
    Mais ce n'est pas perdu
    [/CODE]
    En fait il ne m'affiche pas les noms que j'ai défini. Là ce qu'il m'affiche c'est des trucs comme ="Groupe 1". J'ai pas le Infos1

    Je capte pas trop. Je n'ai aucune valeur qui contienne de virgule

    Citation Envoyé par ouskel'n'or
    Si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub DécortiquerLesGroupes()
    For i = 1 To ActiveWorkbook.Names.Count
            If InStr(ActiveWorkbook.Names(i), ",") <> 0 Then
                ListInFo = Split(ActiveWorkbook.Names(i), ",")
            End If
    Next
    For i = 0 To UBound(ListInFo)
        MsgBox ListInFo(i)
    Next
    End Sub
    Tu récupères tes objets dans listInfo
    Ben chez moi ça plante. listeInfo est surligné et ça me dit (j'ai copié collé le coprs de la méthode dans une des miennes):
    Erreur de compilation
    Argument non facultatif
    Sinon j'ai testé dans une méthode à part et là j'ai :
    incompatibilité de type sur le UBOUND(ListInfo)

    Du coup ...

    Désolé

    [EDIT] Moi je ne veux pas décortiquer les groupes. Je veux juste accéder au groupe par le nom défini et juste faire un SetVisible = true (ou false). Je m'en fiche de ce que contient le groupe J'espère que ce n'est pas une énorme méprise


    Je vais devoir abandonner mon idée j'ai l'impression ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  2. #22
    Expert éminent sénior


    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
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par in
    Oui je les nomme dans Excel, pas dans le code.
    Je sélectionne les shapes désirées, je les groupe et j'attribue un nom au groupe que je viens de créer.

    Je désire ensuite utiliser ce nom pour accéder au groupe depuis les macros ...
    pour attribuer un nom à un groupe , je n'utilise pas insertion nom , mais je sélectionne le groupe et je tape son nouveau nom à la place du nom rédéfini dans la combo-box en haut à gauche d'excel (celle ou excel affiche l'adresse courante..) ...

    ensuite tu peu comme je te l'ai écrit plus haut accéder à ton nouveau shape.. comme à tous les autres...

  3. #23
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par bbil
    pour attribuer un nom à un groupe , je n'utilise pas insertion nom , mais je sélectionne le groupe et je tape son nouveau nom à la place du nom rédéfini dans la combo-box en haut à gauche d'excel (celle ou excel affiche l'adresse courante..) ...

    ensuite tu peu comme je te l'ai écrit plus haut accéder à ton nouveau shape.. comme à tous les autres...
    La vache ... j'y ai trop cru.

    Je défini le nom comme tu me l'a indiqué. pas de pb pour affecter le nom mais quand je tente d'y accéder par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listeInfo.Add Sheets(Feuille_Admin).Shapes("InfosAdmin")
    ' ou
    listeInfo.Add Sheets(Feuille_Admin).Shapes(InfosAdmin)
    j'ai l'erreur -2147024809
    L'élément portant ce nom est introuvable ...

    Effectivement, quand je tente d'afficher avec la boucle for, le nom défini n'apparait pas ...

    je craque ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  4. #24
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir


    Je défini le nom comme tu me l'a indiqué. pas de pb pour affecter le nom mais quand je tente d'y accéder par

    Code :
    listeInfo.Add Sheets(Feuille_Admin).Shapes("InfosAdmin")
    ' ou
    listeInfo.Add Sheets(Feuille_Admin).Shapes(InfosAdmin)

    j'ai l'erreur -2147024809
    L'élément portant ce nom est introuvable ...

    Cela signifie que tu as mal nommé le groupe.
    Tu valides bien par la touche "Entrée" lorsque tu modifies le nom manuellement?



    Effectivement, quand je tente d'afficher avec la boucle for, le nom défini n'apparait pas ...
    Quel boucle For ?

    Quel est le nom renvoyé dans ce cas? As tu essayé avec ce nom?


    Pour moi cela fonctionne parfaitement(Excel2002), même en renommant les formes manuellement ou par macro.

    http://www.developpez.net/forums/sho...7&postcount=10



    bonne soirée
    michel

  5. #25
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    je me doute bien que c'est moi qui fait pas un truc bien mais je ne vois pas quoi ...

    Dans Excel, je sélectionne mes shapes, je crée le groupe. Avec le groupe sélectionné, je remplace le "Groupe 1" dans la case en haut à gauche par "Infos1" et je valide par entrée. Quand je reselectionne le groupe, j'ai bien le nom défini (Infos1) qui s'affiche dans cette case à gauche. Je suppose donc que j'ai bien fait le nommage.

    Ensuite dans le code je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Je n'ai pas de message box avec Infos1 mais par contre j'ai le ="Groupe 1"
    For i = 1 To ActiveWorkbook.Names.Count
            MsgBox ActiveWorkbook.Names(i)
    Next
     
    ' La ça affiche une boite vide
    MsgBox infos1
     
    'et là ça coince
    listeInfo.Add Sheets(Feuille_Admin).Shapes(infos1)
    'idem pour
    listeInfo.Add Sheets(Feuille_Admin).Shapes("infos1")
    '
    ' l'erreur est sur Shapes(InfosAdmin)
    Voilà. Je ne sais pas quoi regarder de plus.

    PS : je suis sous Excel 2000
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  6. #26
    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 543
    Points
    15 543
    Par défaut
    Tu confonds deux choses
    "MsgBox ActiveWorkbook.Names(i)" te donne le nom des objets inséré par Insertion -> Nom -> Définir
    Siky te donne la méthode pour accéder aux groupes créés selon la méthode donnée par bbil et, dans l'exemple donné, pour modifier leur format.
    Pour celà, il crée une collection et accède aux groupes par l'intermédiaire de celle-ci.
    Ceci dit on ne sait toujours pas ce que tu veux faire de tes groupes...
    Et si tu nous disais ça
    A+

  7. #27
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    Pour retrouver le nom des objets insérés dans la feuille; essaye


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Sh As Shape
     
    For Each Sh In Worksheets("Feuil1").Shapes
    MsgBox Sh.Name
    Next Sh


    michel

  8. #28
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Citation Envoyé par ouskel'n'or
    Ceci dit on ne sait toujours pas ce que tu veux faire de tes groupes...
    Et si tu nous disais ça
    A+
    Citation Envoyé par in, hier à 14h29 ;)
    Moi je ne veux pas décortiquer les groupes. Je veux juste accéder au groupe par le nom défini et juste faire un SetVisible = true (ou false)
    En fait je veux simplement faire une setVisible sur le groupe. Je souhaite utiliser un nom que je défini pour des soucis d'évolutivité => je ne veux pas modifier mon code si je modifie le groupe ...

    Citation Envoyé par ouskel'n'or
    Siky te donne la méthode pour accéder aux groupes créés selon la méthode donnée par bbil
    => listeInfo.Add Sheets(Feuille_Admin).Shapes(Infos1)
    Ben c'est ce que je fais depuis le début non ? Ou alors je ne regarde pas le bon truc ?

    Citation Envoyé par ouskel'n'or
    MsgBox ActiveWorkbook.Names(i)" te donne le nom des objets inséré par Insertion -> Nom -> Définir
    Moi je n'ai pas le nom que j'ai défini qui s'affiche

    Bref, je sens que j'y arriverais pas. On tourne en rond. C'est surement de ma faute mais aucune de vos solutions ne fonctionnent chez moi (enfin je n'observe pas le comportement décrit ...).

    Alors une dernière fois :
    1. J'ai supprimé le nom que j'avais donné dans Insertion > Nom > définir
    2. J'ai renommé le groupe en passant par la case en haut à gauche
    3. Je souhaite ajouter ce groupe à une collection. Et pour récupérer ce groupe je veux utiliser le nom que j'ai défini.


    Ce qui me désespère c'est que ça parait tellement simple que ça me fait peur pour la suite ...


    [EDIT] SilkyRoad, je viens de voir le message, j'essaie de suite

    [EDIT 2] Bon avec cette boucle, j'ai bien le nom InfosAdmin qui est affiché
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each Sh In Worksheets(Feuille_Admin).Shapes
            MsgBox Sh.Name
        Next Sh
     
        listeInfo.Add Sheets(Feuille_Admin).Shapes("InfosAdmin")
    par contre j'ai toujours la meme erreur sur l'accès
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  9. #29
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    Bon, ça y est.

    Désolé de vous avoir embéter ... la méthode du nommage dans la cellulle en haut à gauche fonctionne bien. J'arrive à utiliser le nom dans ma macro.

    C'était bien de ma faute, en fait ma gestion (pourrie) dees erreurs m'empechait de voir que mon erreur d'index de collection n'était plus sur la ligne Sheets("Infos1") mais sur une ligne d'apres .

    Donc voilà, merci encore de ne pas m'avoir laché malgré le fait que vous m'aviez donné la réponse depuis longtemps ...

    Bref. A charge de revanche j'espère !
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [MySQL] decalage dans les nom des colonnes avec les checkbox
    Par tortue_22 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 24/04/2009, 13h58
  2. Réponses: 13
    Dernier message: 22/04/2009, 17h43
  3. Faut-il utiliser des underscores ou des espaces dans les noms des fichiers ?
    Par Invité dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 07/05/2008, 20h23

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