Macro couleur de formes
Résolu
Gui
-
-
-
Bonjour,
Je récupère une macro qui jusqu'à présent fonctionne très bien, simplement en voulant étendre son champ d'utilisation cela ne fonctionne pas. Je m'explique:
A l'origine la macro colorie une freeform (régions de France), fait apparaître des objets (flèches) en fonction de la valeur de chaque mois de l'année.
Aujourd'hui je souhaite utiliser exactement le meme mode fonctionnement mais j'ai rajouté une deuxième carte de France (les freeform sont nommées différemment) qui se colorie en fonction d'autres valeurs.
J'ai donc repris la meme macro et changé les valeurs (j'ai certainement du en oublier vu que cela ne fonctionne pas)
Est ce que quelqu'un pourrait m'aider svp en apportant les modifs à la macro ci dessous ?
Merci d'avance.
'Programmation moisTF (fonctionne)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Mois As String
Dim i As Integer
Dim DR As String
Dim TxFreq, TxMoisEnCours, TxMoisPrec As Variant
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Mois = TDB.Range("I8").Value
'régions
For i = 1 To 61
DR = Source.Cells(i, 1)
'Taux
TxFreq = Source.Cells(i + 10, 14)
'mois
For a = 2 To 13
If Source.Cells(i + 1, a) = Mois Then
TxMoisEnCours = Source.Cells(i + 10, a)
TxMoisPrec = Source.Cells(i + 10, a - 1)
End If
Next a
Couleur DR, TxFreq
Fleche DR, TxMoisEnCours, TxMoisPrec, Mois
i = i + 14
Next i
End Sub
'Programmation couleur TF (fonctionne)
Function Couleur(Région, Tx) As Integer
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Select Case Tx
Case Is < param.Cells(3, 2)
Couleur = param.Cells(3, 3)
Case Is > param.Cells(4, 2)
Couleur = param.Cells(5, 3)
Case Else
Couleur = param.Cells(4, 3)
End Select
For b = 41 To 45
If param.Cells(b, 1) = Région Then
x = 2
Do While param.Cells(b, x) <> 0
nom = "Freeform " & param.Cells(b, x)
TDB.Shapes(nom).Fill.ForeColor.SchemeColor = Couleur
x = x + 1
Loop
End If
Next
End Function
'Programmation fleches TF (fonctionne)
Function Fleche(Région, TxEncours, TxPrec, MoisVal)
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
If MoisVal <> "JANVIER" Then
test = TxEncours - TxPrec
Select Case test
Case Is < 0
vtest = 1
Case Is > 0
vtest = 2
Case Is = 0
vtest = 3
End Select
Else
vtest = 0
End If
For b = 49 To 53
If param.Cells(b, 1) = Région Then
For y = 1 To 3
nom = param.Cells(48, y + 1) & " " & param.Cells(b, y + 1)
If y = vtest Then
TDB.Shapes(nom).Visible = True
Else
TDB.Shapes(nom).Visible = False
End If
Next y
End If
Next b
End Function
(CE QUI SUIT EST CE QUE JE SOUHAITE RAJOUTER MAIS NE FONCTIONNE PAS)
Private Sub Workbook_SheetChange2(ByVal Sh As Object, ByVal Target As Range)
Dim Mois As String
Dim i As Integer
Dim DR As String
Dim TxGrav, TxMoisEnCours, TxMoisPrec As Variant
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Mois = TDB.Range("I8").Value
'régions
For i = 1 To 61
DR = Source.Cells(i, 1)
'Taux
TxGrav = Source.Cells(i + 11, 14)
'mois
For a = 2 To 13
If Source.Cells(i + 1, a) = Mois Then
TxMoisEnCours = Source.Cells(i + 11, a)
TxMoisPrec = Source.Cells(i + 11, a - 1)
End If
Next a
Couleur DR, TxGrav
Fleche DR, TxMoisEnCours, TxMoisPrec, Mois
i = i + 14
Next i
End Sub
'programmation couleur TG
Function Couleur2(Région, Tx) As Integer
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Select Case Tx
Case Is < param.Cells(8, 2)
Couleur = param.Cells(8, 3)
Case Is > param.Cells(9, 2)
Couleur = param.Cells(10, 3)
Case Else
Couleur = param.Cells(9, 3)
End Select
For b = 58 To 62
If param.Cells(b, 1) = Région Then
x = 2
Do While param.Cells(b, x) <> 0
nom = "Freeform " & param.Cells(b, x)
TDB.Shapes(nom).Fill.ForeColor.SchemeColor = Couleur
x = x + 1
Loop
End If
Next
End Function
Je récupère une macro qui jusqu'à présent fonctionne très bien, simplement en voulant étendre son champ d'utilisation cela ne fonctionne pas. Je m'explique:
A l'origine la macro colorie une freeform (régions de France), fait apparaître des objets (flèches) en fonction de la valeur de chaque mois de l'année.
Aujourd'hui je souhaite utiliser exactement le meme mode fonctionnement mais j'ai rajouté une deuxième carte de France (les freeform sont nommées différemment) qui se colorie en fonction d'autres valeurs.
J'ai donc repris la meme macro et changé les valeurs (j'ai certainement du en oublier vu que cela ne fonctionne pas)
Est ce que quelqu'un pourrait m'aider svp en apportant les modifs à la macro ci dessous ?
Merci d'avance.
'Programmation moisTF (fonctionne)
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Mois As String
Dim i As Integer
Dim DR As String
Dim TxFreq, TxMoisEnCours, TxMoisPrec As Variant
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Mois = TDB.Range("I8").Value
'régions
For i = 1 To 61
DR = Source.Cells(i, 1)
'Taux
TxFreq = Source.Cells(i + 10, 14)
'mois
For a = 2 To 13
If Source.Cells(i + 1, a) = Mois Then
TxMoisEnCours = Source.Cells(i + 10, a)
TxMoisPrec = Source.Cells(i + 10, a - 1)
End If
Next a
Couleur DR, TxFreq
Fleche DR, TxMoisEnCours, TxMoisPrec, Mois
i = i + 14
Next i
End Sub
'Programmation couleur TF (fonctionne)
Function Couleur(Région, Tx) As Integer
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Select Case Tx
Case Is < param.Cells(3, 2)
Couleur = param.Cells(3, 3)
Case Is > param.Cells(4, 2)
Couleur = param.Cells(5, 3)
Case Else
Couleur = param.Cells(4, 3)
End Select
For b = 41 To 45
If param.Cells(b, 1) = Région Then
x = 2
Do While param.Cells(b, x) <> 0
nom = "Freeform " & param.Cells(b, x)
TDB.Shapes(nom).Fill.ForeColor.SchemeColor = Couleur
x = x + 1
Loop
End If
Next
End Function
'Programmation fleches TF (fonctionne)
Function Fleche(Région, TxEncours, TxPrec, MoisVal)
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
If MoisVal <> "JANVIER" Then
test = TxEncours - TxPrec
Select Case test
Case Is < 0
vtest = 1
Case Is > 0
vtest = 2
Case Is = 0
vtest = 3
End Select
Else
vtest = 0
End If
For b = 49 To 53
If param.Cells(b, 1) = Région Then
For y = 1 To 3
nom = param.Cells(48, y + 1) & " " & param.Cells(b, y + 1)
If y = vtest Then
TDB.Shapes(nom).Visible = True
Else
TDB.Shapes(nom).Visible = False
End If
Next y
End If
Next b
End Function
(CE QUI SUIT EST CE QUE JE SOUHAITE RAJOUTER MAIS NE FONCTIONNE PAS)
Private Sub Workbook_SheetChange2(ByVal Sh As Object, ByVal Target As Range)
Dim Mois As String
Dim i As Integer
Dim DR As String
Dim TxGrav, TxMoisEnCours, TxMoisPrec As Variant
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Mois = TDB.Range("I8").Value
'régions
For i = 1 To 61
DR = Source.Cells(i, 1)
'Taux
TxGrav = Source.Cells(i + 11, 14)
'mois
For a = 2 To 13
If Source.Cells(i + 1, a) = Mois Then
TxMoisEnCours = Source.Cells(i + 11, a)
TxMoisPrec = Source.Cells(i + 11, a - 1)
End If
Next a
Couleur DR, TxGrav
Fleche DR, TxMoisEnCours, TxMoisPrec, Mois
i = i + 14
Next i
End Sub
'programmation couleur TG
Function Couleur2(Région, Tx) As Integer
Set wk = ActiveWorkbook
Set Source = wk.Sheets("2012")
Set param = wk.Sheets("parametrage TdB")
Set TDB = wk.Sheets("Tableau de bord")
Select Case Tx
Case Is < param.Cells(8, 2)
Couleur = param.Cells(8, 3)
Case Is > param.Cells(9, 2)
Couleur = param.Cells(10, 3)
Case Else
Couleur = param.Cells(9, 3)
End Select
For b = 58 To 62
If param.Cells(b, 1) = Région Then
x = 2
Do While param.Cells(b, x) <> 0
nom = "Freeform " & param.Cells(b, x)
TDB.Shapes(nom).Fill.ForeColor.SchemeColor = Couleur
x = x + 1
Loop
End If
Next
End Function
A voir également:
- Macro couleur de formes
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Mise en forme conditionnelle excel couleur - Guide
- Boite a couleur - Télécharger - Divers Photo & Graphisme
- Somme si couleur - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
35 réponses
Bonjour,
Sans le fichier qui si rattache c'est pratiquement impossible de trouver ou il y a une faute dans la procédure. Pouvez-vous mettre le fichier sur https://www.cjoint.com/ et poster le lien ?
Sans le fichier qui si rattache c'est pratiquement impossible de trouver ou il y a une faute dans la procédure. Pouvez-vous mettre le fichier sur https://www.cjoint.com/ et poster le lien ?
Bonjour,
Merci pour le fichier.
Je n'ai encore pas trouvé comment le faire fonctionner ... les deux boutons sur la feuille [Tableau de bord] ne provoquent qu'une erreur ... !
En cherchant dans le code je ne trouve pas non plus les macros que vous avez montrées dans votre premier message... !
Que dois-je faire... !
En marge, est-ce que vous êtes "Guillaume" ou "Gui" ??
Merci pour le fichier.
Je n'ai encore pas trouvé comment le faire fonctionner ... les deux boutons sur la feuille [Tableau de bord] ne provoquent qu'une erreur ... !
En cherchant dans le code je ne trouve pas non plus les macros que vous avez montrées dans votre premier message... !
Que dois-je faire... !
En marge, est-ce que vous êtes "Guillaume" ou "Gui" ??
rebonjour,
Oui pardon pour le pseudo, il s'agit bien de la même personne.
Les copies des codes sont dans la page Thisworkbook de VBA.
Concernant les 2 boutons qui génèrent une erreur c'est normal, vous n'avez ici qu'un extrait de la base et j'ai seulement oublié de supprimer cette zone.
Le seul bouton qui m'intéresse est le choix multiple de mois pour animer les cartes selon le mois sélectionné.
Je vous renvoie le lien avec la base corrigée.
Merci d'avance pour votre aide.
Oui pardon pour le pseudo, il s'agit bien de la même personne.
Les copies des codes sont dans la page Thisworkbook de VBA.
Concernant les 2 boutons qui génèrent une erreur c'est normal, vous n'avez ici qu'un extrait de la base et j'ai seulement oublié de supprimer cette zone.
Le seul bouton qui m'intéresse est le choix multiple de mois pour animer les cartes selon le mois sélectionné.
Je vous renvoie le lien avec la base corrigée.
Merci d'avance pour votre aide.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour Gui llaume, Le Pingou,
Ceci est une macro événementielle dans Thisworkbook.
Si tu rajoutes celle-ci :
elle n'a aucune chance de se lancer car elle n'est pas connue d'excel en tant qu'événementielle.
Si tu veux la faire fonctionner il faut l'inclure dans la première et faire en sorte que le processus fonctionne correctement.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Ceci est une macro événementielle dans Thisworkbook.
Si tu rajoutes celle-ci :
Private Sub Workbook_SheetChange2(ByVal Sh As Object, ByVal Target As Range)
elle n'a aucune chance de se lancer car elle n'est pas connue d'excel en tant qu'événementielle.
Si tu veux la faire fonctionner il faut l'inclure dans la première et faire en sorte que le processus fonctionne correctement.
Bonjour,
Merci pour le supplément d'information.
La réponse va suivre, patience.
Salutations
Le Pingou
Merci pour le supplément d'information.
La réponse va suivre, patience.
Salutations
Le Pingou
Bonjour,
Contrôler pour voir si c'est comme vous le désirez : https://www.cjoint.com/?3EvvDvb6iCH
Note : je n'ai pas trouvé de code pour renseigner les [TextBox1] à [TextBox10] !!
Je ferai la correction définitive dès votre réponse.
Contrôler pour voir si c'est comme vous le désirez : https://www.cjoint.com/?3EvvDvb6iCH
Note : je n'ai pas trouvé de code pour renseigner les [TextBox1] à [TextBox10] !!
Je ferai la correction définitive dès votre réponse.
Bonjour,
Un grand merci dans l'idée c'est ce que je recherche. Par contre pensez vous qu'il est possible d'organiser les couleurs des régions comme les fleches ? Cad la couleur en fonction du mois sélectionné.
j'ai d'ailleurs préparé les noms des flèches pour le tableau de droite pour vous faciliter la tache. Veuillez trouver ci dessous le nouveau tableau
http://cjoint.com/?3Ewj5TYR0f3
encore merci et bon courage
Un grand merci dans l'idée c'est ce que je recherche. Par contre pensez vous qu'il est possible d'organiser les couleurs des régions comme les fleches ? Cad la couleur en fonction du mois sélectionné.
j'ai d'ailleurs préparé les noms des flèches pour le tableau de droite pour vous faciliter la tache. Veuillez trouver ci dessous le nouveau tableau
http://cjoint.com/?3Ewj5TYR0f3
encore merci et bon courage
Bonjour,
Merci pour l'information.
Votre fichier est presque terminé, je vais comparer avec ces nouvelles informations (Par contre pensez-vous qu'il est possible d'organiser les couleurs des régions comme les flèches ? Cad la couleur en fonction du mois sélectionné) ... !
J'ai par contre 2 questions :
La procédure [Private Sub Workbook_SheetChange(...)] n'a pas de contrôle sur l'origine du déclenchement (soit le changement de mois dans la feuille [Tableau de bord]) d'où chaque fois que vous modifier une cellule de n'importe quelles feuilles la procédure est exécutée inutilement ... !
Pourquoi ne pas utiliser la procédure [Private Sub Worksheet_Change(ByVal Target As Range)] placé directement dans le module de la feuille concernée [Tableau de bord] ... !
Merci pour l'information.
Votre fichier est presque terminé, je vais comparer avec ces nouvelles informations (Par contre pensez-vous qu'il est possible d'organiser les couleurs des régions comme les flèches ? Cad la couleur en fonction du mois sélectionné) ... !
J'ai par contre 2 questions :
La procédure [Private Sub Workbook_SheetChange(...)] n'a pas de contrôle sur l'origine du déclenchement (soit le changement de mois dans la feuille [Tableau de bord]) d'où chaque fois que vous modifier une cellule de n'importe quelles feuilles la procédure est exécutée inutilement ... !
Pourquoi ne pas utiliser la procédure [Private Sub Worksheet_Change(ByVal Target As Range)] placé directement dans le module de la feuille concernée [Tableau de bord] ... !
Bonjour,
Dans l'attente de votre réponse aux 2 messages précédents, je vous laisse la découverte : https://www.cjoint.com/?3EwloXAg47t
Dans l'attente de votre réponse aux 2 messages précédents, je vous laisse la découverte : https://www.cjoint.com/?3EwloXAg47t
Bonjour,
Je viens de voir votre super travail, du coup vous n'avez plus besoin de mon lien.
Vous avez raison nous pourrions limiter le déclenchement de la macro à la feuille concernée.
Cordialement
Je viens de voir votre super travail, du coup vous n'avez plus besoin de mon lien.
Vous avez raison nous pourrions limiter le déclenchement de la macro à la feuille concernée.
Cordialement
Bonjour,
Concernant l'attribution de la couleur, vous utilisez le taux de fréquence de la colonne 14 [N], est-ce correct ... ou faut-il prendre le taux cumulé du mois concerné ... ?
Merci de votre réponse.
Concernant l'attribution de la couleur, vous utilisez le taux de fréquence de la colonne 14 [N], est-ce correct ... ou faut-il prendre le taux cumulé du mois concerné ... ?
Merci de votre réponse.
Bonjour,
Merci pour les réponses.
Je vous laisse essayer et contrôler l'exactitude des valeurs.
Votre fichier adapté : https://www.cjoint.com/?3Ewwbo7rMiX
Note : la procédure principale est dans le module de la feuille [Tableau de bord], les 3 `'Function `' (qui en fait n'en sont pas...) sont transformées en procédure [Sub()] et placées dans le module [lepingou]
Le module [ThisWorkbook] est vide et les anciennes procédures sont dans le module [OLD].
Merci pour les réponses.
Je vous laisse essayer et contrôler l'exactitude des valeurs.
Votre fichier adapté : https://www.cjoint.com/?3Ewwbo7rMiX
Note : la procédure principale est dans le module de la feuille [Tableau de bord], les 3 `'Function `' (qui en fait n'en sont pas...) sont transformées en procédure [Sub()] et placées dans le module [lepingou]
Le module [ThisWorkbook] est vide et les anciennes procédures sont dans le module [OLD].