Macro pour colorer une forme libre
Résolu
Limon
-
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
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:
- Macro pour colorer une forme libre
- Mise en forme conditionnelle excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mise en forme tableau word - Guide
- Libre office en francais - Télécharger - Suite bureautique
- Libre office gratuit - Guide
56 réponses
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
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
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?
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?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
Bonjour,
Je ne sais comment te remercier.
je regarde cela immédiatement, ça l'air vraiment génil
Merci
Je ne sais comment te remercier.
je regarde cela immédiatement, ça l'air vraiment génil
Merci
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.
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.
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
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
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.
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.
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
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
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.
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.
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
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
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
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
Super.
Tout fonctionne parfaitement avec des codes que j'appelle avec mon bouton principal.
Merci mille fois
Tout fonctionne parfaitement avec des codes que j'appelle avec mon bouton principal.
Merci mille fois
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
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