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. #1
    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 [Debutant] Impossible d'utiliser les noms des groupes de formes dans les macros ?
    Bonjour,

    c'est surement une question bete mais ...
    voilà j'ai des formes automatiques avec lesquelles je forme des groupe. Ces groupes je les nomme (insertion > nom)

    J'ai par exemple Infos1="Groupe 1"

    Par contre, impossible d'utiliser le nom Infos1 dans ma macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listeInfo.Add Sheets(Feuille_Admin).Shapes("Groupe 1") 'ca marche
    listeInfo.Add Sheets(Feuille_Admin).Shapes("Infos1") 'ca marche pas -> élément portant ce nom est introuvable
    listeInfo.Add Sheets(Feuille_Admin).Shapes(Infos1) 'ca marche pas -> index en dehors de la collection
    voilà ... je ne sais pas trop quoi essayer sinon. Est ce que c'est possible au moins ? (enfin sinon je vois pas à quoi ça sert de nommer)

    merci d'avance pour vos suggestions
    "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. #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
    Points : 15 543
    Points
    15 543
    Par défaut
    Des précisions sur ListeInfo nous aideraient à te répondre
    A+

  3. #3
    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
    oups

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Liste des groupe d'infos-bulles des feuilles
    Global listeInfo As New Collection
    "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. #4
    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
    L'erreur d'indice indique que tu n'es pas sur la bonne feuille...
    Quant
    "listeInfo.Add Sheets(Feuille_Admin).Shapes("Groupe 1") 'ca marche"
    J'ai fait ça en sélectionnant le shape pour simplifier...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim ListeInfo As New Collection
    With Selection
        .Name = "Groupe 1"
    End With
    Infos1 = "Groupe 1"
    Feuille_Admin = "Feuil1"
    'ListeInfo.Add Sheets(Feuille_Admin).Shapes("Groupe 1") 'ca marche
    'ListeInfo.Add Sheets(Feuille_Admin).Shapes("Infos1") 'ca marche pas -> élément portant ce nom est introuvable
    ListeInfo.Add Sheets(Feuille_Admin).Shapes(Infos1) 'ca marche pas -> index en dehors
    ... et ça fonctionne
    Tu dis où t'as mis ton erreur
    A+

  5. #5
    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 sais pas si j'ai bien compris mais le Feuille_Admin a bien la bonne valeur (si je passe en mode debug).

    Par contre mon erreur est peut etre que le Infos1 est "globale" au classeur et pas spécifique à la feuille Feuille_Admin ??

    si oui comment je récupère le groupe de shape en passant par le nom ?

    si non ... je comprend pas vraiment le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Selection
        .Name = "Groupe 1"
    End With
    En fait ça fait un Select sur le groupe de shape ? Dans ce cas pourquoi ne pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Selection
        .Name = Infos1
    End With
    ?

    je suis un peu pommé désolé ...
    "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. #6
    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
    J'ai nommé le shape pour mon test. En donnant un nom à ma sélection, je suis sûr qu'il porte le bon nom. Ensuite, je peux l'ajouter à ma collection.
    Au départ, mon shape (qui était une zone de texte) portait un autre nom
    Dans une boucle for each LaShape in ActiveSheet.shapes, tu peux récupérer le nom de chaque Shapes et l'ajouter à ta collection
    Désolé mais je dois y aller, pas le tps d'écrire le code
    A+ et bonne chance, chuis pas le seul, quelqu'un voudra bien prendre la suite

  7. #7
    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
    Dans une boucle for each LaShape in ActiveSheet.shapes, tu peux récupérer le nom de chaque Shapes et l'ajouter à ta collection
    ben ça m'arrange pas trop surtout qu'en général j'ai que un groupe de shape par feuille ...

    Ca veut dire que je peux pas utiliser le nom que je lui ai mis ??
    "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/

  8. #8
    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
    Relis attentivement mes explications
    A ce soir si personne n'a pu t'aider, ce qui m'étonnerait fort...

  9. #9
    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 ben ce que je comprends c'est que le nom Infos1 que j'ai donné au groupe 1 n'est pas "visible" depuis la feuille ? enfin l'objet n'est pas une shape de la feuille ...

    Mais je suppose que je peux y accéder depuis quelque part ? le classeur lui-même ?

    Par contre je sèche. Pourtant c'est tout bete. J'ai une shape que je nomme dans une feuille et j'aimerais y accéder par son nom. Est ce ma manière de nommer ma shape qui est incorrect.

    Quand j'affiche le nom des shapes de ma feuille j'ai Group 1.
    Par contre au niveau de l'utilisation, je ne peux/veux pas inclure toutes les shapes de la feuille dans la collection (normal quoi), seulement le groupe que j'ai défini dans la feuille ....

    bref.

    A+ 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/

  10. #10
    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

    Ta procédure fonctionne aussi chez moi (pour ce que tu en as montré).
    Vérifie que tu indiques le bon nom de groupe dans la variable:


    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
    Option Explicit
     
    'Liste des groupe d'infos-bulles des feuilles
    Global listeInfo As New Collection
     
     
    Sub RemplissageCollection()
        Dim Infos1 As String
        Dim Feuille_Admin As String
     
        Feuille_Admin = "Feuil1"
        Infos1 = "Groupe 1"
     
        listeInfo.Add Sheets(Feuille_Admin).Shapes(Infos1)
     
    End Sub
     
     
     
    Sub VerifContenuCollection()
        Dim Sh As Shape
        Set Sh = listeInfo(1)
     
        Sh.Fill.ForeColor.RGB = RGB(255, 0, 255)
    End Sub

    bon week end
    michel

  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 543
    Points
    15 543
    Par défaut
    Pour placer le nom de tous tes shapes dans une collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Public listeInfo As New Collection
     
    Sub RemplissageCollection()
        Dim i As Integer
        Dim Feuille_Admin As String
        Feuille_Admin = "Feuil1"
        For i = 1 To Sheets(Feuille_Admin).Shapes.Count
            listeInfo.Add Sheets(Feuille_Admin).Shapes(i).Name
            Debug.Print listeInfo(i)
        Next
    End Sub
    Pour voir le nom de tes shapes dans l'éditeur VB, affiche la fenêtre Exécution -> Affichage -> Fenêtre Exécution
    Ceci dit, je ne vois pas l'intérêt de la chose puisque Shapes est une collection de Shape(s)
    Ainsi tu peux appeler Shapes(1) ou (2)... autant que tu en as
    Juste une remarque comme ça

  12. #12
    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
    en fait lorsque tu groupe des objets graphiques sous excel... ceux-ci forment un nouveau "shape" ... et comme l'as écrit plus haut SilkyRoad, tu y accéde comme tu accéde a tout autre "shape"...





  13. #13
    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
    en fait lorsque tu groupe des objets graphiques sous excel... ceux-ci forment un nouveau "shape" ... et comme l'as écrit plus haut SilkyRoad, tu y accéde comme tu accéde a tout autre "shape"...
    Ben oui. C'est bien ce que j'essaie de faire non ? J'essaie d'accéder à cette nouvelle shape par le nom que je lui ai attribué ...

    Citation Envoyé par bbil
    PS: Ousk.... merci de revoir ton code où tu mélange le activeSheet et les sheets("feui1") dans la même boucle..!
    Ok je continue à regarder ...
    "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/

  14. #14
    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 n'ai rien dans la fenêtre Exécution -> Affichage -> Fenêtre Exécution ...

    Citation Envoyé par ouskel'n'or
    Ceci dit, je ne vois pas l'intérêt de la chose puisque Shapes est une collection de Shape(s)
    ben moi non plus , justement je ne veux/peux pas faire ça ...

    par contre, chose intéressante qui va surement faire avancer le schmilblick, lorsque j'affiche tous les noms des shapes, je n'ai pas Infos1 mais Groupe 1.

    j'en conclue qu'on ne peux pas utiliser les noms qu'on donne dans une macro ?! ce qui me parait bizarre ...

    Du coup ma question revient à :
    Comment récupère t'on le nom donné à une shape ? Peut on s'en servir pour accéder à cette shape ?

    merci de votre aide en tout cas
    "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/

  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 543
    Points
    15 543
    Par défaut
    Comment nommes-tu tes shapes ? Par soft ?
    Option Explicit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public listeInfo As New Collection 
     
    Sub RemplissageCollection()
        Dim i As Integer
        Dim Feuille_Admin As String
        Feuille_Admin = "Feuil1"
        For i = 1 To Sheets(Feuille_Admin).Shapes.Count
            Sheets(Feuille_Admin).Shapes(i).Name = "Groupe " & i 'Nomme tes shapes
            listeInfo.Add Sheets(Feuille_Admin).Shapes(i).Name
            Debug.Print listeInfo(i)
        Next
    End Sub
    Là tu nommes tes Shapes et tu places les objets dans une collection
    Précise tes besoins
    A+

  16. #16
    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
    Comment nommes-tu tes shapes ? Par soft ?
    Citation Envoyé par in, à la 3ème ligne du 1er post
    Ces groupes je les nomme (insertion > nom)
    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 ...
    "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/

  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 543
    Points
    15 543
    Par défaut
    Ok. Mais comme tu as aussi dit :
    voilà j'ai des formes automatiques
    je pensais que tu les nommais par soft
    Tu ne t'es pas facilité la tâche. Je te suggère une autre méthode pour former tes groupes.
    - Tu crées pour chaque groupe un tableau des objets le composant
    Groupe(1) = array("","Objet1", "Objet2", "Objet3", "Objet4", "Objet5", ...)
    où Objet1, 2, 3, 4 sont les vrais noms que tu as donnés aux objets du groupe1 dans Excel
    Groupe(2) = array("","Objet5", "Objet6","Objet7","Objet8","Objet9", ...)
    etc.
    Et si tu tiens aux collections, il ne te reste plus qu'à les placer dedans
    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
    Sub CréerDesGroupe()
    Dim Listinfo1 As New Collection
    Dim Listinfo2 As New Collection
    Dim Groupe1, Groupe2
        Groupe1 = Array("", "Objet1", "Objet2")
        'où Objet1, 2, 3, 4 sont les vrais noms que tu as donnés _
         aux objets du groupe1 dans Excel
        Groupe2 = Array("", "Objet3", "Objet4")
        'où Objet5, 6, 7... idem
    'En supposant que tu aies le même nombre d'objets dans chaque groupe
        For i = 1 To UBound(Groupe1)
            Listinfo1.Add Groupe1(i)
            Listinfo2.Add Groupe2(i)
        Next
        Debug.Print Listinfo1(1) & "   " & Listinfo2(2)
    End Sub
    Mais tu peux plus simplement utiliser directement les tableaus, c'est toi qui vois
    Si tu as un pb avec ça, précise-le
    A+

  18. #18
    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
    - Tu crées pour chaque groupe un tableau des objets le composant
    Groupe(1) = array("","Objet1", "Objet2", "Objet3", "Objet4", "Objet5", ...)
    où Objet1, 2, 3, 4 sont les vrais noms que tu as donnés aux objets du groupe1 dans Excel
    Je n'ai pas donné de nom aux objets qui composent le groupe. Si j'avais fait ça, ça aurait été exactement la même chose ! j'aurais ajouté aux collections les shapes en essayant d'y accéder par leur nom !

    Justement, je groupe/nomme dans Excel pour ne pas avoir à me préoccuper des formes qui composent le groupe ...

    Du coup je repose ma question :
    Comment récupère t'on le nom donné à une shape ? Peut on s'en servir pour accéder à cette shape ?

    je peux pas par exemple faire
    "msgbox Infos1" qui me renvoie rien. Comment puis-je accéder à cette valeur dans ma macro ? Ou alors on ne peux pas ?

    C'est tout ce que je demande en fait ...


    PS : en fait mes shapes sont des formes automatiques, c'est ptet à cause de ça ?
    "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/

  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 543
    Points
    15 543
    Par défaut
    pendant que je cherche, qu'appelles-tu "mes shapes sont des formes automatiques" ?
    A+

  20. #20
    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
    Bien, je viens de faire un essai
    Citation Envoyé par Tu
    Ces groupes je les nomme (insertion > nom)
    Si tu fais ça, Excel ne sait pas distinguer le nom d'un groupe qui regroupe plusieurs objets d'un groupe qui n'en possède qu'un. Résultat : 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
    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
    Est-ce que cette solution te conviendrait
    Si oui, on verra pour la suite
    A+

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

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, 12h58
  2. Réponses: 13
    Dernier message: 22/04/2009, 16h43
  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, 19h23

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