VBA 2010, Shapes

Fermé
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 - 29 janv. 2022 à 22:52
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 1 févr. 2022 à 18:35
Bonjour à tous. Etant nul en VBA(je n'y comprends pas grand chose, j'apprends avec des copier-coller, en essayant de piger).
j'insére dans une feuille Excel des "Shapes", (cercle, anneau, rectangle, ect.) avec le mode "INSERTION" à l'aide du ruban d'accueil normal. J'arrive à renommer ces "Shapes" avec VBA. Mais j'aimerais bien sélectionner un de ces "Shapes", soit, "Cliquer" dessus pour ensuite modifier,par ex., la couleur, un texte, en avoir un certain controle.
Pourriez-vous me faire une macro, un exemple basique que je pourrais élargir par la suite.
Bien merci d'avance.





Configuration: Windows / Edge 97.0.1072.76
A voir également:

8 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
30 janv. 2022 à 08:11
1
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 1
30 janv. 2022 à 09:45
Bonjour. He bien merci ! Il y a un peu de lecture, mais cela me convient tant que l'explication est plus "accessible" quant à mon amateurisme du VBA. C'est dimanche, j'aurai le temps ! Merci.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024
31 janv. 2022 à 12:02
Bonjour aufilduweb,

Voici un exemple de changement de couleur par tirage aléatoire:

Faire Alt F11 pour accéder à l'éditeur
Insérer un module et mettre ce code

Option Explicit
Sub Test()
Dim Shp As Shape
Dim MyValue
Randomize ' Initialize random-number generator.
 MyValue = Int((6 * Rnd) + 1) ' Generate random value between 1 and 6.
  Set Shp = Feuil1.Shapes(Application.Caller) 'adapter nom feuille
Shp.DrawingObject.Interior.ColorIndex = MyValue 'couleur
End Sub


ensuite clic droit sur une shape: Affecter une macro et sélectionner test.
Faire de même pour toutes les shapes dont vous voulez changer la couleur

@+ Le Pivert
1
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 1 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
1 févr. 2022 à 17:26
Bonjour cs_Le pivert.
Je prends bonne note, déja pour la construction de la macro.
Je ne suis pas sur le sujet tout le temps, mais je rappellerai peut-etre si je ne m'en sors pas.

Salutation.
0
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 1 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
1 févr. 2022 à 17:41
Re salut cs_Le pivert.
Cela fonctionne mais avec "clic gauche".
pas grave ! OK !
A présent, je vais essayer de piger cette macro.
Merci.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728 > aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024
1 févr. 2022 à 18:35
Re

je laisse découvrir cette variante:

Sub couleurclic()
Dim Shp As Shape
If Range("A1") = 7 Then Range("A1") = 1
Set Shp = Feuil1.Shapes(Application.Caller) 'adapter nom feuille
Shp.DrawingObject.Interior.ColorIndex = Range("A1")  'couleur
Range("A1") = Range("A1") + 1
End Sub


@+ le Pivert
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 708
30 janv. 2022 à 09:08
Bonjoura vous deux,

Oui, mais ne permet pas de modifier en dynamique les parametres d'une Shappe avec choix dans les
differents parametres

aufilduweb
J'arrive à renommer ces "Shapes" avec VBA
Comment, a partir d'une Userform ou ?
1
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 708
30 janv. 2022 à 10:14
Bonjour,

J'arrive à renommer les "Shapes"
Oui, mais seulement sur creation de la Shapes ou alors vous ne changez jamais le nom
Par contre, vous devez passez par une userform et il faut affecter une procedure (la meme) a chaque Shapes au mement de la creation
Question: vous mettez vos Shapes n'import ou ou sue click d'une cellule?
Pour changement couleur, fonts vous devez passez par une userform et un control Activex pour changement couleur et fonts. Pour le texte un peu plus simple mais devra etre integre a l'UF

Vous decortiquez facilement les codes VBA, car j'ai un fichier qui vous permettrait d'avancer
1
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 708
30 janv. 2022 à 13:16
Re,

mes "Shapes" n'importe ou !
Ben, va pas etre simple.
Et vous creez des Shapes differentes (rectangle, cercle, et autre) pour rendre la tache encore plus facile

Je voulais éviter Userform,
Perso, je ne connais que cette methode

Pouvez mettre votre fichier a dispo que je vois un peu de quoi il en retourne
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com

Allez sur ce site : https://www.cjoint.com/
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
1

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

Posez votre question
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 1
30 janv. 2022 à 09:51
Bonjour. Et merci d'abord. C'est rapide . J'arrive à renommer les "Shapes" avec une simple macro :

With Feuil1.Shapes.AddShape(msoShapeRectangle, 20, 20, 70, 20)
.Name = "Titre"
pour un rectangle par ex. Vous l'aurez compris plus vite que moi.

Ceci copié sur un site quelconque ..Et ça marche !
Merci d'avance.
0
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 1
30 janv. 2022 à 13:08
Hello f894009 . Ce n'est pas trop convivial mais je remercierai aussi CCM pour ces échanges.
Oui, je place mes "Shapes" n'importe ou !
Je voulais éviter Userform, car ça me complique un peu (trés novice en la matiére), mais je vais essayer.
Comme beaucoup de gens, j'applique le peu que je sais pour faire des mini-programmes à des fins toutes personnelles.
J'ai un peu de temps (retraite), alors merci.
0
aufilduweb Messages postés 69 Date d'inscription mardi 21 février 2017 Statut Membre Dernière intervention 1 mai 2024 1
30 janv. 2022 à 19:04
Merci de votre patience. En fait je ne crée qu'une dizaine de cercles par ex.. Pour les rectangles et autres, je pense que l'ordinogramme doit se ressembler.
Je n'ai pas de fichier dispo, car au fur et à mesure que j'essaie d'écrire une macro, ça plante (évidemment) et j'efface pour recommencer autre chose. Je bégaie, quoi !
Mon idée était de dessiner par insertion (ou par VBA) des "Shapes" sur une feuille de calcul Excel (Feuil1 par ex.), pour ensuite avoir la possibilité de cliquer sur une de ces "Shapes", en la sélectionnant, et celle-ci changerait de couleur (ou de texte) en fonction du nombre de fois qu'elle aurait été cliquée.
Je connais un petit peu Userform, mais je voulais m'en passer.
Bonne reception.
0
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 708
30 janv. 2022 à 19:13
Re,

en fonction du nombre de fois qu'elle aurait été cliquée.
Pourquoi pas, faudra faire une mise en memoire dans une feuille

mais je voulais m'en passer.
Ben, faudra y passer car pour le changement de couleur pas d'autre moyen. Pour le texte pas d'obligation
0