Faire apparaitre forme à l'aide d'une macro

Résolu
riton -  
ESCOUGER Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je souhaite faire apparaitre un objet (forme, ou image) à l'aide d'une macro. J'ai bien cliqué sur enreigistrer macro, puis insertion=> formes=> "rectangle" puis arréter la macro. Ensuite j'ai affecté ma macro à un bouton. Mais lorsque je clic sur le bouton, la forme n'apparait pas. Si j'écri un texte dans un case pendant l'enregistrement, lui apparait lorsque je clic sur le bouton. Pourquoi est-ce différent pour une forme?




10 réponses

Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Tu ne donne pas trop d'explications sur ce que tu veux faire, nous ne sommes pas devin.

c'est une image qui est dans le même répertoire que tu veux faire apparaitre !!!
c'est une image qui est stockée sur une autre feuille !!!
C'est une image qui est déjà sur la feuille que tu veux faire apparaitre et disparaitre c'est ce code

Shapes("nom de l'image").Visible = Not Shapes("nom de l'image").Visible
1
riton
 
ok voici le code de ma macro:
Sub Macro4 ()
'
' Macro4 Macro

'
Sheet ("FEUILLE2"). Select
End Sub

Donc rien apparait par rapport au rectangle. "Feuille 2" apparait uniquement parce que je voulais placer le rectangle en feuille 2.


Si je tape votre code, il ya une erreur: toute la ligne "ActiveDocument..." est surlignée en jaune.

Quelle a été votre démarche pour arriver à ce code?

Merci.
1

 
Bonjour,
Selon Microsoft : https://support.microsoft.com/en-us/help/937620 ; dans Microsoft Excel 2007, vous ne pouvez pas enregistrer de nouvelles formes, forme et effets de forme à l'aide de l'enregistreur de macros.
Pour contourner ce problème, appliquez Microsoft code Visual Basic pour Applications (VBA) pour mettre en forme les formes.

Note: Dans Visual Basic Editor, cliquez sur Explorateur d'objets dans le menu Affichage pour rechercher correctes des objets, méthodes et des propriétés qui sont utilisées dans du code VBA.
1

 
Bonjour,
Mettre une copie de votre code !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
riton
 
non en réalité ce n'est pas un objet mais tout simplement une forme (un rectangle ou un losange, que j'insere avec l'onglet insertion, formes). Ensuite j'aimerai affecter une macro à cette forme. suis-je clair?
0
UsulArrakis Messages postés 7405 Date d'inscription   Statut Contributeur Dernière intervention   3 190
 
met le code récupéré à partir de l'enregistreur de macro comme demandé par Le Pingou

voici le code que j'obtiens avec l'enregistreur pour un rectangle dans word 2007

Sub test()
'
' test Macro
'
'
ActiveDocument.Shapes.AddShape(msoShapeRectangle, 105#, 129#, 72#, _
72#).Select
Selection.ShapeRange.IncrementLeft 4.5
End Sub
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Salut,

Je reviens à la charge, j'ai du mal à comprends, il s'agit bien sur une feuille de calcul et de faire apparaitre ou disparaitre une forme géométrique (rond ou carré etc ...)

Lorsqu'on clique sur la forme, dans la barre d'adresse s'incrit son nom que l'on peut éventuellement renommer
prenons un exemple et dessinons un rectangle dont son nom récupéré dans la barre d'adresse est Rectangle 1

le code pour masquer ce rectangle est

Sub test()
ActiveSheet.Shapes("Rectangle 1").Visible = False
End Sub

pour le faire réapparaitre est

Sub test()
ActiveSheet.Shapes("Rectangle 1").Visible = True
End Sub

il suffit d'associer les codes à des boutons ou l'associer au contenu d'une cellule

code pour la faire rapparaitre, il suffit de remplacer True par False pour la faire disparaitre

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$6" Then ActiveSheet.Shapes("Rectangle 1").Visible = True
End Sub

Ou à la valeur 1 en C6 apparait, 2 masque la forme

Private Sub Worksheet_Change(ByVal Target As Range)
If [C6] = 1 Then ActiveSheet.Shapes("Rectangle 1").Visible = True
If [C6] = 2 Then ActiveSheet.Shapes("Rectangle 1").Visible = False
End Sub

A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0
riton
 
Ok je vous remercie je vais tenter ce que vous m'avez proposés. Quitte à revenir sur la version 2003.
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Les codes que je t'ai proposé fonctionnent aussi bien sur Excel 2003 que 2007 ou 2010 pour les avoir testés
0
riton
 
ok j'arrive à me démerder en jouant sur les 2 versions. Maintenant un nouveau problème se pause. J'aimerai, toujours à l'aide d'un macro afectée à un bouton, supprimer tout ce qui a sur la feuille, notament les formes. Sachant qu'il n y aura pas toujours les même formes. Je m'explique. Je lance la macro 1, une forme apparait. Je clic ensuite sur mon bouton qui va effacer la forme (jusque la tout va bien). Maintenant, si je lance maintenant la macro 2, une autre forme apparait. j'aimerai qu'avec le même bouton, cette deuxième forme disparaisse également.
Il ya t-il un code qui dit "effacer toutes les formes quelque soit son nom?"
0
riton
 
C'est bon vous embétez pas, j'ai trouvé comment faire gràce à vos indications. Mon logiciel commence a avoir de la gueule.

Merci pour tout! mon patron va adorer.
0
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

Regarde quelques exemples valable sur les versions Excel 2003 à 2010 avec des explications sur les quatres feuilles.
Pour voir les différents codes, soit tu clic droit sur l'onglet de feuille/Visualiser le code
ou lorsque tu es sur un feuille en même temps clis sur la touche Alt et sur la touche de fonction F11

https://www.cjoint.com/?jyvdvFGUJF
0
ESCOUGER Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Mon problème est proche du tien.
J'active une macro depuis une forme ou une image.
Dans cette macro, je voudrais inserer cette forme ou image dans la cellule active.
Ainsi ma forme ou mon image apparaîtrait 2 fois sur ma feuille.
Je pense que "ActiveSheet.Pictures.Insert....." permet peut-être cela mais ne sait pas comment exprimer cela dans cette ligne de code?
Peut-être peux-tu m'aider?
0