Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/08/2011, 16h23   #1
Invité de passage
 
Inscription : décembre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 3
Points : 1
Points : 1
Par défaut Shapes - Comment changer le nom d'une shape appartenant à un groupe

Bonjour,

Voici mon problème :
Dans le fichier joint, en cliquant sur shapes, vous modifiez le contenu.
Sauf que ça ne marche pas quand la shape appartient à un groupe.

Ce qui est bizarre, c'est que pour une shape appartenant à un groupe, on peut changer son nom mais pas son contenu.

Quelqu'un a-t-il une solution ?
Merci d'avance.



PS : je ne me vois pas devoir dégrouper, modifier puis regrouper ... ça ne serait pas très propre.

PS2 : Je tourne sur Excel 2000

Voici le code :


Code :
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
32
33
34
35
36
37
38
39
40
41
42
 
Option Explicit
 
 
Sub Rectangle_QuandClic()
    Dim Active_Shape As String
 
    'on récupère le nom de l'objet qui a appelé
    Active_Shape = Application.Caller
 
    'on lance la fonction pour modifier l'objet en question
    'au départ, on cherche dans la feuille active
    Call Changer(ActiveSheet.Shapes, Active_Shape)
 
End Sub
 
 
Function Changer(ouChercher, quoiChercher)
 
    Dim s As Shape
 
    For Each s In ouChercher
        'on passe en revue tous les shpaes
        If s.Type = msoGroup Then
            'on a trouvé un groupe
            Call Changer(s.GroupItems, quoiChercher) 'on cherche dans le groupe
        Else
            'sinon, on continue
            If s.Name = quoiChercher Then
                'le nom correspond
 
                'alors on fait des modif
                s.Name = s.Name ' Pas de bug pour changer le nom
 
                'ici, cela bug quand on essaie d'attaquer le texte d'une shape appartenant à un groupe
                s.DrawingObject.Text = Format(Now, "hh:mm:ss")
                s.AlternativeText = quoiChercher & " - " & Now
            End If
        End If
    Next
 
End Function
Fichiers attachés
Type de fichier : xls Shape.xls (40,0 Ko, 4 affichages)
ArnaudFABRY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h58   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
J'ai testé en simplifiant sans souci
Code :
1
2
3
4
5
6
7
Sub Rectangle_QuandClic()
 
With ActiveSheet.Shapes(Application.Caller)
    .DrawingObject.Text = Format(Now, "hh:mm:ss")
    .AlternativeText = Application.Caller & " - " & Now
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 17/08/2011, 17h08   #3
Invité de passage
 
Inscription : décembre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 3
Points : 1
Points : 1
Bravo pour la simplification.

Le problème persiste toujours si la shape fait partie d'un groupe.
C'est l'exmple qu'il y a dans le fichier joint.

Cordialement
ArnaudFABRY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h16   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
J'ai testé sur ton fichier. Groupe ou non, le texte du shape cliqué est modifié sans problème.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 11h40   #5
Invité de passage
 
Inscription : décembre 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 3
Points : 1
Points : 1
Par défaut Merci

mercatog,

Je viens de tester ta macro et la mienne, elles fonctionnent toutes les 2 sur ... excel 2010.

Le problème vient donc de ma version 2000 qui ne prend pas en charge cette spécificité et qui a été corrigée sous 2010 (ou avant)

En tous les cas encore merci pour ton aide et pour ta simplification de code.
Comme au boulot on est en version 2000, j'ai un réel problème.

Cordialement.

Arnaud
ArnaudFABRY est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h59.


 
 
 
 
Partenaires

Hébergement Web