VBA 2010, Shapes

aufilduweb Messages postés 81 Statut Membre -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
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

8 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    1
    1. aufilduweb Messages postés 81 Statut Membre 1
       
      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
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > aufilduweb Messages postés 81 Statut Membre
         
        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
      2. aufilduweb Messages postés 81 Statut Membre 1 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        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
      3. aufilduweb Messages postés 81 Statut Membre 1 > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        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
      4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > aufilduweb Messages postés 81 Statut Membre
         
        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
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. aufilduweb Messages postés 81 Statut Membre 1
     
    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
  7. aufilduweb Messages postés 81 Statut Membre 1
     
    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
  8. aufilduweb Messages postés 81 Statut Membre 1
     
    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
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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