Macro pour colorer une forme libre - Page 3

Résolu
  1. Re,

    j'ai jeté un oeil rapide sur ton fichier, il est possible effectivement de supprimer de nombreuses lignes de code.

    explique moi en B1 tu saisis un numéro et tu zoome un forme, pourquoi ne pas créer une liste déroulante avec les noms des continents et le continent se zoome
    0
    1. Oui en effet j'ai prévu une liste déroulante avec le nom des zones géographiques, chaque nom correspond à un chiffre de la cellule B1 qui est repris dans ma macro ensuite.
      Mon problème.
      Pour la zone Afrique du Nord/Moyen Orient correspondant au chiffre 3 qui s'affiche par une simple formule (SI) dans la cellule B1. En lançant la Marco "bouton Valider" la zone en question s'affiche seule (en rouge) Mais elle est trop petite. Je zoome donc à 400% mon écran.
      Tout ceci fonctionne très bien.
      Mais je perds la zone de part le grossissement de l'écran et je dois la chercher ce qui n'est pas satisfaisant. J'aurais souhaité que la zone reste au centre de l'écran.
      Est ce possible?
      0
      1. Re,

        maintenant que j'ai le support je vais me pencher sur le problème
        0
        1. Ok
          Merci
          J'attends avec impatience le résultat
          0
          1. Re,

            Un premier jet, j'ai été obligé de redessiner chaque forme et les placer directement sur une feuille de calcul.

            je pense faire une liste déroulante, à la sélection d'une partie du monde, cette partie se colorise et le reste du monde pâli. Peut être ajouter ce coup là un bouton pour zoomer la partie du monde sélectionné
            pour l'instant il n'y a qu'un seul effet, clic sur le bouton et pour le retester ferme le fichier sans enregistrer, le fichier fonctionne sous protection sans mot de passe pour l'instant afin d'éviter le déplacement accidentel des pièces

            https://www.cjoint.com/?DDkxMEemvXz
            0
            1. Bonjour,
              Je ne sais comment te remercier.
              je regarde cela immédiatement, ça l'air vraiment génil

              Merci
              0
              1. Re,

                J'ai avancé un peu sur ce fichier sélectionne la région sur la liste de validation en R1

                https://www.cjoint.com/?DDljwcaNkyJ
                A+
                Mike-31

                Une période d'échec est un moment rêvé pour semer les graines du savoir.
                0
                1. Re Bonjour,
                  Grace à tes conseil et à ton aide, j'avance et le résultat commence à être intéressant.
                  Pourrais tu me dire comment faire pour n'avoir aucun remplissage
                  ActiveSheet.Shapes("Grouper 506").Fill.ForeColor.RGB = RGB(.......

                  Merci de ton aide
                  0
                  1. Re,

                    Pour une seule shape nommée Grouper 506
                    ActiveSheet.Shapes("Grouper 506").Fill.Visible = msoFalse

                    pour plusieurs shapes nommées Form1, Form2 etc...
                    ActiveSheet.Shapes.Range(Array("Form1", "Form2", "Form3", "Form4", "Form5", "Form6")).Fill.Visible = msoFalse

                    pour toutes les shapes
                    For Each img In Worksheets(1).Shapes 'colorise toutes les formes
                    img.Fill.Visible = msoFalse
                    Next
                    A+
                    Mike-31

                    Une période d'échec est un moment rêvé pour semer les graines du savoir.
                    0
                    1. Bonjour,
                      Je suis toujours sur mon outil de cartographie qui grace à tes conseils a bien avancé.
                      Se pose maintenant un problème de compilation.
                      Pour chaque pays (172) j'ai dessiné quatre ellipses de taille différente que ai positionné sur les pays. Cela m'a pris pas mal de temps. En fonction de la valeur AI et T2 l'une de ces quatre ellipse apparait au milieu du pays.
                      Pour l'Autriche par exemple cela me donne cette écriture:

                      If Range("A1").Value = 10 And Range("T2").Value = 1 Then ActiveSheet.Shapes("Ellipse 610").Visible = True
                      If Range("A1").Value = 10 And Range("T2").Value = 2 Then ActiveSheet.Shapes("Ellipse 980").Visible = True
                      If Range("A1").Value = 10 And Range("T2").Value = 3 Then ActiveSheet.Shapes("Ellipse 1239").Visible = True
                      If Range("A1").Value = 10 And Range("T2").Value = 4 Then ActiveSheet.Shapes("Ellipse 1177").Visible = True

                      Pour le pays suivant l'écriture est la suivante,
                      If Range("A1").Value = 10 And Range("T3").Value = 1 Then ActiveSheet.Shapes("Ellipse 516").Visible = True
                      If Range("A1").Value = 10 And Range("T3").Value = 2 Then ActiveSheet.Shapes("Ellipse 994").Visible = True
                      If Range("A1").Value = 10 And Range("T3").Value = 3 Then ActiveSheet.Shapes("Ellipse 1250").Visible = True
                      If Range("A1").Value = 10 And Range("T3").Value = 4 Then ActiveSheet.Shapes("Ellipse 1476").Visible = True

                      Ainsi de suite pour les 50 premiers pays.
                      Cela fonctionnait très bien.
                      Mais pour le 51 ° pays, ma macro se bloque et un message d'erreur apparait m'indiquant un problème de compilation que je n'arrive pas à résoudre.
                      Aurais tu une idée?
                      Merci par avance de ton aide
                      0
                      1. Re,

                        Copie la ligne sur laquelle la macro plante, elle est en jaune dans le code

                        A+
                        Mike-31

                        Une période d'échec est un moment rêvé pour semer les graines du savoir.
                        0
                        1. Bonjour, et merci de ta réponse.
                          Pardonne moi, j'ai eu une matinée chargée. Je me remets sur mon outil .
                          Pardonne moi, mais je ne comprends pas ta réponse. La seule ligne en jaune qui apparaisse est
                          Sub Bouton1_QuandClic()
                          Que veux tu dire par copier.
                          Le message d'erreur est:
                          Erreur de compilation
                          Procédure trop grande.

                          Dois je diviser ma macro en plusieurs que je pourrais lancer par le même bouton. Est ce possible?
                          Merci encore de ton aide
                          0
                          1. Re,

                            sur la gauche, tu as un module si tu clic dessus il s'ouvrira et tu verras le code associé et la ligne qui est en erreur.

                            pour scinder un code trop long en plusieurs petit certainement plus facile à comprendre, il suffit de créer dans un module des codes successifs exemple

                            Sub code1 ()
                            avec le code
                            puis Sub code2 ()

                            etc ...

                            ensuite soit tu le regroupes dans un code ou dans un bouton ActiveX qui donnera cece

                            Sub group ()
                            Call code1
                            Call code2
                            etc ...

                            ou dans un bouton ActiveX

                            Sub Bouton1_QuandClic()
                            Call code1
                            Call code2
                            etc ...

                            les codes s'activeront dans l'ordre

                            je te conseille dans chaque code et en début une fois que le code est testé et fonctionne correctement de mettre une gestion d'erreur afin d'éviter le plantage, mais une fois que le code est fonctionnel sinon tu ne verras pas la ligne en erreur

                            Sub code1 ()
                            On Error Resume Next
                            avec le code
                            0
                            1. Super.
                              Tout fonctionne parfaitement avec des codes que j'appelle avec mon bouton principal.
                              Merci mille fois
                              0
                              1. Bonjour,
                                Je souhaiterais remplacer une procédure longue et conduisant à un blocage de Excel réalisée avec des formules, par une macro.
                                Je dispose d'un tableau de 25 000 lignes correspondant au coût de notre action dans 170 pays dans un certain nombre de disciplines (danse, musique,....)
                                Chaque pays et chaque discipline sont identifiés par un code.
                                L'objectif est de calculer le montant engagé dans chaque discipline par pays.
                                Exemple :
                                Pays Discipline Montant
                                ALL D 20€
                                ALG D 40€
                                ALG M 50€
                                DAN T 15€
                                POR PL 5€
                                ALG M 25€
                                Pour le pays ALG, nous avons engagé 50€ et 25€ sur le secteur M soit 75€. Ceci à répéter dans un tableau de 25 000 lignes
                                Une macro peut elle être réalisée ?
                                Merci pour votre aide
                                0
                                Précédent
                                • 1
                                • 2
                                • 3