Macro couleur de formes

Résolu/Fermé
Gui - 20 mai 2012 à 17:11
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 - 20 juin 2012 à 15:03
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





A voir également:

35 réponses

Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
20 mai 2012 à 22:15
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 ?
0
Merci d'avance.

http://cjoint.com/?3EvndVyVip7


Cordialement
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
21 mai 2012 à 17:27
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" ??
0
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.
0

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

Posez votre question
http://cjoint.com/data3/3Evr0aMtTIH.htm
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
21 mai 2012 à 18:00
bonjour Gui llaume, Le Pingou,

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.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
21 mai 2012 à 18:14
Bonjour gbinforme,
Merci pour l'information, je l'avais déjà constaté ...
Salutations
Le Pingou
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
21 mai 2012 à 20:19
Bonjour,
Merci pour le supplément d'information.
La réponse va suivre, patience.
Salutations
Le Pingou
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
21 mai 2012 à 21:30
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.
0
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
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
22 mai 2012 à 10:25
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] ... !
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
22 mai 2012 à 10:29
Bonjour,
Pouvez-vous contrôler le nouveau lien car cela ne fonctionne pas ?
Merci.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
22 mai 2012 à 11:15
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
0
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
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
22 mai 2012 à 14:08
Bonjour,
Merci, je vous prépare une version dans ce sens.
Si possible en fin de journée.
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
22 mai 2012 à 16:19
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.
0
Bonsoir, effectivement je cherche a prendre le taux de fréquence cumulé du mois concerné
0
de meme avec les TG.

merci
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
22 mai 2012 à 22:11
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].
0
Bonjour,

C'est exactement ce que j'attendais merci beaucoup pour votre aide.
Je termine le tableau de bord et reviens vers vous si jamais j'ai un problème.

Encore merci et une excellente journée à vous.

Cordialement
0
Le Pingou Messages postés 12187 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 14 novembre 2024 1 449
23 mai 2012 à 10:50
Bonjour,
Merci pour l'information.
Note : la cellule pour le choix du mois est nommée [chxmois], ce nom est utilisé comme contrôle dans la procédure principale .... Pensez-y pour votre fichier de travail.
0