Macro pour colorer une forme libre

Résolu
Limon -  
 Limon -
Bonjour,
Je suis débutant en VBA. Je désire à l'aide d'une mise en forme conditionnelle colorer une forme libre.
Le message d'erreur suivant apparait "Erreur de compilation End Sub attendu
Ci dessous ma macro. sur Excel 2010 MAC
Merci pour votre aide
Sub Test1()

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("B1").Value = 20000 Then
ActiveSheet.Shapes("Forme libre 2").Fill.ForeColor.SchemeColor = 11

End If
End Sub

A voir également:

56 réponses

Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
Limon2010 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
Re,

maintenant que j'ai le support je vais me pencher sur le problème
0
Limon2010 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Ok
Merci
J'attends avec impatience le résultat
0

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

Posez votre question
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
Limon2010 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,
Je ne sais comment te remercier.
je regarde cela immédiatement, ça l'air vraiment génil

Merci
0
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
Limon2010 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
 
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
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
Limon
 
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
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
Limon
 
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
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
Limon
 
Super.
Tout fonctionne parfaitement avec des codes que j'appelle avec mon bouton principal.
Merci mille fois
0
Valentyn Messages postés 12 Date d'inscription   Statut Membre Dernière intervention  
 
0
Limon
 
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