Faire apparaitre forme à l'aide d'une macro

Résolu/Fermé
riton - Modifié par riton le 22/09/2010 à 11:25
ESCOUGER Messages postés 31 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 17 juillet 2019 - 19 oct. 2011 à 13:53
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?




A voir également:

10 réponses

Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
22 sept. 2010 à 16:09
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
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
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 454
23 sept. 2010 à 20:38
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
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 454
22 sept. 2010 à 15:20
Bonjour,
Mettre une copie de votre code !
0

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

Posez votre question
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 vendredi 28 mars 2003 Statut Contributeur Dernière intervention 27 janvier 2022 3 189
Modifié par UsulArrakis le 23/09/2010 à 16:59
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 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 23/09/2010 à 21:15
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
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 454
23 sept. 2010 à 21:44
Bonjour Mike-31,
Par rapport à : J'ai bien cliqué sur enreigistrer macro, puis insertion=> formes=> "rectangle" puis arréter la macro

Ma réponse concerne uniquement l'enregistreur de macro sous 2007 qui ne prend plus en charge les formes, graphiques--- il créer la macro manuellement.
Par contre sous 2003 l'enregistreur de macro fait tout le travail.
Salutations.
Le Pingou
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié par Mike-31 le 23/09/2010 à 22:32
Salut l'ami,

Ma réponse était plus destinée au post de Riton du 23 septembre 16:19 qui dit

Non en réalité ce n'est pas un objet mais tout simplement une forme (un rectangle ou un losange, que j'insère avec l'onglet insertion, formes). Ensuite j'aimerai affecter une macro à cette forme. Suis-je clair?

Ce à quoi je lui réponds toute forme est prise en compte avec les quelques codes que je lui proposais et il y en a bien d'autre.
S'il à besoin d'un petit fichier exemple qu'il le demande.

Pour l'assistant macro je l'utilise assez peu et n'ai pas remarqué, mais je te remercie de l'info et y jetterais un oeil

Cordialement
Mike-31
0
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 1 454
23 sept. 2010 à 22:20
Bonjour Mike-31,
Le voilà son code enregistré avec l'enregistreur de macro et comme il est en version 2007 les [shapes] ne sont pas enregistrés. Il faut le faire manuellement dans la macro.
Son code :
Sub Macro4 () 
' 
' Macro4 Macro 
' 
Sheet ("FEUILLE2"). Select 
End Sub

A une prochaine.
Salutations.
Le Pingou
0
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 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
24 sept. 2010 à 15:00
Les codes que je t'ai proposé fonctionnent aussi bien sur Excel 2003 que 2007 ou 2010 pour les avoir testés
0
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
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 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
24 sept. 2010 à 21:06
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 lundi 3 décembre 2007 Statut Membre Dernière intervention 17 juillet 2019
19 oct. 2011 à 13:53
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