Macro - modification d'objets

  • Initiateur de la discussion Initiateur de la discussion Hub
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hub

XLDnaute Occasionnel
Bonjour à tous,

Vous trouverez dans le fichier joint, un exemple de la question ci-dessous.

Comment faire apparaître et disparaître les "objets flèche" de la même manière que le texte en cliquant sur les cases d'option ?

D'avance merci pour votre réponse,

@+
 

Pièces jointes

Re : Macro - modification d'objets

Bonjour Hub,

... ce serait sans doute déjà plus simple avec de vraies flèches, plutôt qu'une série de lignes dessinées en forme de flèche 😱
Tu peux affecter une macro à tes boutons d'option (clic droit sur la "case")

... Voir pièce jointe (Module 2)

PS: j'oubliais de le signaler, mais tu n'as pas posté dans le bon forum ... Le mieux aurait été le forum Excel
 

Pièces jointes

Dernière édition:
Re : Macro - modification d'objets

Merci pour ta réponse et l'exemple en pièce jointe.

C'est vrai que la flèche que tu proposes est beaucoup plus simple que celle à laquelle j'avais pensé.
De plus en cherchant un peu, il me sera possible de changer les couleurs si nécessaire.

Par contre si on n'a pas la possibilité d'utiliser un objet pré-défini et qu'il faille dessiner une forme complexe comme ma flèche, comment faut il si prendre ?

D'avance merci pour ta réponse,

@+
 
Re : Macro - modification d'objets

Bonjour Hub ... et puis tous les autres 🙂

Une fois tous tes traits assemblés pour construire un objet, tu peux sélectionner l'ensemble de ces éléments (il y a un petit outil de sélection multiple d'objets) et les Grouper. Ils deviendront ainsi un seul et même objet ... Attention cependant que tu ne pourras pas y appliquer de couleur de remplissage.
Tu peux aussi tracer une première forme, puis "Modifier les points" ... mais ça devient un peu plus compliqué.

... Et le code proposé fonctionne sous ta version d'Excel?
 
Re : Macro - modification d'objets

Par contre si on n'a pas la possibilité d'utiliser un objet pré-défini et qu'il faille dessiner une forme complexe comme ma flèche, comment faut il si prendre ?

Bonjour,

Il faut énumérer toutes les Shapes pour pouvoir les distinguer.

Dans votre classeur, tous les objets "Line" ont été renommés avec un additif qui spécifie leur appartenance à gauche ou à droite. Ceci permet de les distinguer pour les rendre visibles OU non.

Code:
Sub Casdoption2_Cliquer()
'/// droite ///
If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
  Call SwitchFlecheVisible(Bascule:="droite")
End If
End Sub
Sub Casdoption1_Cliquer()
'/// gauche ///
If ActiveSheet.Shapes(Application.Caller).OLEFormat.Object.Value = 1 Then
  Call SwitchFlecheVisible(Bascule:="gauche")
End If
End Sub

Sub SwitchFlecheVisible(Bascule As String)
Dim SH As Shape
Dim L As Excel.Line
'---
For Each SH In ActiveSheet.Shapes
  If TypeName(SH.OLEFormat.Object) = "Line" Then
    Set L = SH.OLEFormat.Object
    If InStr(1, L.Name, Bascule) Then
      L.Visible = True
    Else
      L.Visible = False
    End If
  End If
Next SH
End Sub
 

Pièces jointes

Re : Macro - modification d'objets

Bonjour,

J’utilise Excel 2002. L’exemple que tu m’as fait parvenir, et donc les codes qui vont avec, fonctionne très bien.
De plus, si je superpose les 2 objets, ils se recouvrent l’un l’autre sans interférence.

Par contre, comme je suis débutant d’en dessous des pâquerettes, jusque maintenant, je réalisais les macros en enregistrant une série de « clic ». Solution fastidieuse et qui ne permet pas de superposer des objets !
Vraisemblablement, tu saisis des lignes de commande.

Question :
Je ne comprends pas comment différencier et nommer les différentes cases d’option. De même pour les objets puisque tu ne clic pas dessus.

Il va falloir sérieusement que je trouve un tutoriel en ligne pour apprendre les différentes étapes de base…

A bientôt
 
Re : Macro - modification d'objets

Bonjour,

Pou info, j’utilise Excel 2002

Comme je suis débutant d’en dessous des pâquerettes, jusque maintenant, je réalisais les macros en enregistrant une série de « clic ». Solution assez fastidieuse !

Vraisemblablement, tu saisis des lignes de commande.

Question :
Je ne comprends pas comment différencier et nommer les différentes cases d’option. De même pour les objets puisque tu ne clic pas dessus.

Il va falloir sérieusement que je trouve un tutoriel en ligne pour apprendre les différentes étapes de base…

A bientôt
 
Re : Macro - modification d'objets

Bonsoir Hub,
Salut PMO2 🙂

Hub, je ne sais pas trop à qui tu poses les questions de tes deux messages?
Je ne sais pas non plus si tu as vu le message de PMO2? On n'avait visiblement pas compris la même chose!?

Si je comprends un bout de ta question, tu peux faire un clic droit sur une des cases d'options que-and tu les as créées et choisir "Affecter une macro" et choisir ensuite soit une macro existante, soit (via le bouton "Nouvelle") rédiger le code en fonction des besoins.
La bonne nouvelle c'est que le web (et ce forum, en particulier) regorgent de tutos et d'exemples (mais, comme disait l'autre, Rome ne s'est pas faite en un jour 🙂 ... alors, un pas à la fois!)

Bonne soirée
 
Re : Macro - modification d'objets

Bonjour Modeste,

J'ai bien pris note de tes conseils ( voir fichier joint ).

1) à quoi correspond "feuil1.shape" ?
2) peut on lier une cellule avec une macro de la même manière qu'une case à option ?

Sub Forme()
If [A20] = 1 Then
Feuil1.Shapes("Rectangle 27").Visible = True
Feuil1.Shapes("Ellipse 28").Visible = False
ElseIf [A20] = 2 Then
Feuil1.Shapes("Rectangle 27").Visible = False
Feuil1.Shapes("Ellipse 28").Visible = True
Else
End If
End Sub

D'avance merci pour la réponse,

@+
 

Pièces jointes

Re : Macro - modification d'objets

salut

Hub, il faudrait quand même jeter un coup d'oeil aux réponses données dans le premier fil et en faire un retour.

Nouvelle proposition (avec explications).

Merci pour ta réponse et le complément d’information.

1) J’ai bien compris que VBA ne tient pas compte du nom de la feuille mais uniquement de son code (contrairement à un groupement d’objets « Groupe 23 » renommer en « Triangle G »)

Par contre, dans la version d’Excel 2002 que j’utilise, je n’arrive pas à retrouver quelque chose de similaire à ta copie d’écran.
De ce fait, je suis incapable de retrouver le nom de code d’une feuille dans un autre classeur.

Question :
Peux tu me renseigner comment retrouver le code d’une feuille ?

2) C’est étrange que VBA ne puisse pas faire de test sur la valeur ou le résultat de valeur de cellule.
C’est d’autant plus étrange que lorsque je forçais l’exécution de la macro, cela fonctionnait bien !!!

Question :
Est-ce que la macro que j’envisageai est complètement inadaptée à mon besoin ? N’y a t’il pas un complément de code à rajouter pour qu’elle fonctionne ?
Je n’est pas le niveau pour comprendre comment ta macro fonctionne et d’autre part, lorsque je l’essaie, il y a un « bug » sur la reconnaissance d’objet « l’élément portant ce nom est introuvable »

D’avance merci pour ta réponse,

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
261
  • Question Question
Réponses
6
Affichages
379
Réponses
2
Affichages
156
Retour