Aide pour macro

Résolu
Bonjour,

J'aimerais crée une macro sous excel qui me permette de remplir une forme (en l'occurence une étoile à 5 branches disponible dans les formes de base dans excel) avec une couleur.
Ainsi mon étoile est vide(blanche) à la base mais en cliquant dessus elle deviendrait colorée.

De plus j'aimerais qu'à chaque click l'étoile change de couleur: respectivement couleur bronze puis argent puis or pour finalement redevenir vide et ceci indéfiniment.

Quelqun aurait une idée svp? (je n'y connais rien du tout aux macro)
Merci beaucoup.

20 réponses

  1. merci énormément c'est exactement ce que je voulais! désolé je ne retrouvais plus mon ancien post.

    j'espère que ça ne vous a pas pris trop de temps pour faire ça!!
    0
    1. Par contre quand je copie l'image et que je la colle sur mon classeur excel ca ne fonctionne plus
      erreur d'éxécution 438
      propriétés ou méthode non gérée par cet objet
      en cliquant sur débogage la ligne ci dessous est surligné en jaune:

      coul = Selection.ShapeRange.Fill.ForeColor.SchemeColor

      Je ne sais pas trop si je pouvais copier/coller votre image?
      0
      1. en fait je souhaiterai ancrer 3 étoiles comme la votre dans une cellule et ensuite pouvoir dupliquer la cellule sur toute la colonne (chaque cellule avec 3 étoiles)
        et qu'au final toutes les étoiles puissent changer de couleur indépendamment.
        0
        1. de sorte que quand je sauvegarde le document je puisse conserver les dernières couleurs sélectionnées pour chaque étoile.
          0
      2. ça complique pas mal les choses avec des étoiles de type "dessin"
        il y a plus simple avec des étoiles de type "caractère", j'ai utilisé la police Monotypesort mais on peut très bien en utiliser une autre
        https://www.cjoint.com/?3FboDPfK97J

        Cdlmnt
        0
        1. Merci vous avez exactement compris ce que je voulais.
          m'est il possible de dupliquer cette cellule sur une colonne de x lignes ou faut il changer le code a chaque cellule?
          0
          1. par contre sur la feuille 2 je n'obtiens pas des étoiles mais des "mains pointant l'index vers le bas" peut etre du à ma version d'excel (2010)
            0
            1. j'ai trouvé uné étoile wingdings 2 avec la touche "é" Celle ci me conviendrait très bien ( si cest vraiment plus compliquer de faire cela avec l'étoile type "dessin". Le désavantage du caractère est que le fichier risque de ne pouvoir être lu si les personnes ne possèdent pas ce caractère.
              0
          2. 1. La police Monotypesort a disparu depuis WXP, mais puisque tu en as récupéré une autre pas de problème.

            2. Pour que les nouvelles lignes soient prises en compte, tu modifies dans le code la valeur de la constante plage ici
            Const plage = "A2:C4"
            tu remplaces A2:C4 par la plage où se trouvent les étoiles
            0
            1. 3. Pour les étoiles "dessin", il te faut affecter une macro à chacune d'elle, macro qui lancera le changement de couleur, vois le code des 6 premières dans Module 1
              Si tu en as beaucoup, ça risque d'être lourd
              0
          3. ok je vais me rabattre sur les caracteres alors! j'ai déja ton code intégré à mon document et récupérer les codes couleurs pour pouvoir utiliser un jaune visible sur fond blanc! ca a l'air de fonctionner nickel!!
            un grand merci
            0
            1. par contre jsute une dernière chose quand je passe d'excel à openoffice cela semble ne plus fonctionner. Avez vous une idée?
              0
              1. VBA est un langage microsoft et n'est pas reconnu par open office
                0
                1. est il possible d'affecter 2 codes a la cellule afin que cela puisse fonctionner aussi bien sur exel que sur open office? ou cela va til creer une sorte de "conflit"?
                  0
                  1. Je ne connais pas Open Office mais je doute que ça puisse marcher. Le plus sûr/propre est d'écrire une version pour chaque logiciel
                    0
                    1. Je viens de tester sur Libre Office, les macros de la feuille "Caractères" sont bien reconnues et ont l'air de bien fonctionner
                      Celles de la feuille "dessin" semblent ne pas fonctionner, il faut certainement ré-assigner les macros aux étoiles
                      0
                      1. Voici le code tel qu'il se présente dans openoffice basic sous openoffice 4.1.0 :
                        Quand j'éxécute la macro pas de message d'erreur mais rien ne se passe

                        Rem Attribute VBA_ModuleType=VBADocumentModule
                        Sub Feuil1
                        Rem Option Explicit
                        Rem
                        Rem Const plage = "E:G"
                        Rem Const cbr = 53
                        Rem Const car = 16
                        Rem Const cor = 44
                        Rem Const cbl = 2
                        Rem
                        Rem Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
                        Rem Dim coul As Long
                        Rem If Intersect(Range(plage), Target) Is Nothing Then Exit Sub
                        Rem coul = Target.Font.ColorIndex
                        Rem Select Case coul
                        Rem Case cbr: coul = car
                        Rem Case car: coul = cor
                        Rem Case cor: coul = cbl
                        Rem Case cbl: coul = cbr
                        Rem End Select
                        Rem Target.Font.ColorIndex = coul
                        Rem Range("A1").Select
                        Rem End Sub
                        Rem
                        End Sub
                        0
                        1. Je ne peux pas te répondre, je n'ai pas open office

                          As tu accepté l'exécution des macros?
                          Tu dois avoir quelque chose comme Outils/Option/Securité/Securite des macros qui te permet de le faire
                          Avec mes vieux souvenirs des vieux Basic, REM en début de ligne met la ligne en commentaire donc inhibe la ligne (c'est l'équivalent de l'apostrophe en VBA)

                          Le mieux est d'ouvrir un nouveau sujet sur le forum OpenOffice et d'y exposer ton problème

                          Bon courage
                          0
                          1. Merci j'ai réussi à trouver mon code pour openoffice:

                            Option Explicit

                            Const plage = "E1:G1000"
                            Const cbr = 16749838
                            Const car = 13421772
                            Const cor = 16776960
                            Const cbl = 16777215

                            Sub Test(oEv)
                            Dim oCell as Object,oDoc as Object, oFeuille as Object, oPlage as Object, oResult as Object
                            Dim coul As Long
                            oCell = oEv
                            oDoc = thiscomponent
                            oFeuille = oDoc.currentController.activeSheet
                            oPlage = oFeuille.getcellrangebyname(plage)
                            oResult = oCell.queryIntersection(oPlage.RangeAddress)
                            If oResult.RangeAddressesAsString <> "" Then
                            If oCell.String = "A" Then
                            Coul = oCell.CharColor
                            Select Case Coul
                            Case cbr
                            coul = car
                            Case car
                            coul = cor
                            Case cor
                            coul = cbl
                            Case cbl
                            coul = cbr
                            End Select
                            End If
                            oCell.CharColor = coul
                            End If
                            End Sub

                            Il ya juste une chose un peu génante : quand je double clique sur la cellule comme sur excel, cela me fait "entrer" dans la cellule (comme pour écrire du texte) alors que sur excel la macro se réalise et me renvoie sur la sélection de la cellule A1
                            0
                            1. A la fin de la procedure en VBA il y a l'instruction
                              Range("A1").Select
                              qui envoie sur la cellule A1
                              A toi de trouver l'equivalent en OOo
                              0
                              1. ok!merci encore pour tout!! sinon j'y serai encore ^^
                                0