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
Bonsoir,
Merci j'ai pu adapter votre travail à ma base principale, tout fonctionne !!!!
Je profite de votre savoir-faire pour vous poser une nouvelle question.
Voila j'ai une autre base qui regroupe un certain nombre de dates (date "réalisation action" et date "fin de validité").
Je cherche a faire 2 choses:
1. Lorsque j'inscrit la date de réalisation: que la date de fin de validité s'affiche automatiquement en fonction d'une fréquence définie
2. Mettre en place une MFC selon l'écart entre la date de fin de validité et la date d'aujourd'hui. (exemple: fréquence de 3ans entre les 2 dates donc VERT si écart>1an; JAUNE si < date AUJOURDHUI et <1an ; ROUGE > date AUJOURDHUI.
Bien sur pour la 2nd question j'ai essayé une MFC avec formule, cela fonctionne sauf que lorsque je copie/colle des cellules extérieures ma MFC est effacée.
Dans l'espoir que vous pourrez m'aider comme précédemment, un grand merci d'avance.
Merci j'ai pu adapter votre travail à ma base principale, tout fonctionne !!!!
Je profite de votre savoir-faire pour vous poser une nouvelle question.
Voila j'ai une autre base qui regroupe un certain nombre de dates (date "réalisation action" et date "fin de validité").
Je cherche a faire 2 choses:
1. Lorsque j'inscrit la date de réalisation: que la date de fin de validité s'affiche automatiquement en fonction d'une fréquence définie
2. Mettre en place une MFC selon l'écart entre la date de fin de validité et la date d'aujourd'hui. (exemple: fréquence de 3ans entre les 2 dates donc VERT si écart>1an; JAUNE si < date AUJOURDHUI et <1an ; ROUGE > date AUJOURDHUI.
Bien sur pour la 2nd question j'ai essayé une MFC avec formule, cela fonctionne sauf que lorsque je copie/colle des cellules extérieures ma MFC est effacée.
Dans l'espoir que vous pourrez m'aider comme précédemment, un grand merci d'avance.
Bonjour,
Avec un exemple / extrait du fichier se sera plus simple de vous proposer une solution.
Et de quelle manière : je copie/colle des cellules extérieures ma MFC ?
Salutations.
Le Pingou
Avec un exemple / extrait du fichier se sera plus simple de vous proposer une solution.
Et de quelle manière : je copie/colle des cellules extérieures ma MFC ?
Salutations.
Le Pingou
Bonjour,
Merci.
Il me manque la réponse à ceci : Et de quelle manière : je copie/colle des cellules extérieures ma MFC ?
Merci.
Il me manque la réponse à ceci : Et de quelle manière : je copie/colle des cellules extérieures ma MFC ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Petite question, la date et sa validité sont attribuées à une personne, alors pourquoi ne pas travailler directement sur la colonne [Date dernière formation] de la feuille [Feuil2] en utilisant un formulaire (UseForm] pour renseigner la date ?
Salutations.
Le Pingou
Petite question, la date et sa validité sont attribuées à une personne, alors pourquoi ne pas travailler directement sur la colonne [Date dernière formation] de la feuille [Feuil2] en utilisant un formulaire (UseForm] pour renseigner la date ?
Salutations.
Le Pingou
Bonjour,
Dans votre exemple en feuille 1 le délai est de + 2 ans alors je pense que ceci n'est pas correct :
. (Exemple: fréquence de 3ans entre les 2 dates donc VERT si écart>1an; JAUNE si < date AUJOURDHUI et <1an ; ROUGE > date AUJOURDHUI.
Merci de le reformuler !
Dans votre exemple en feuille 1 le délai est de + 2 ans alors je pense que ceci n'est pas correct :
. (Exemple: fréquence de 3ans entre les 2 dates donc VERT si écart>1an; JAUNE si < date AUJOURDHUI et <1an ; ROUGE > date AUJOURDHUI.
Merci de le reformuler !
en fait cela depend de la formation {2, 3 ou 5 ans} donc pas vraiment d'importance pour l'exemple. je les adapterai sur ma base selon les cas
Bonsoir, merci pour la relance, par contre j'ai fait une réponse à 20.06.
Je ne sais qu'elles sont les messages 25 et 26.
Je vais répondre à tous les points:
1. Il me manque la réponse à ceci : Et de quelle manière : je copie/colle des cellules extérieures ma MFC ?
. Copier manuellement (clic droit) les dates de la feuille 1 et coller manuellement (clic droit)en feuille 2.
2. a date et sa validité sont attribuées à une personne, alors pourquoi ne pas travailler directement sur la colonne [Date dernière formation] de la feuille [Feuil2] en utilisant un formulaire (UseForm] pour renseigner la date ?
. Dans notre organisation interne nous avons 2 dossier différent pour de multiples raisons, la feuille 1 est une base et la feuille 2 en est une autre.
Merci et n'hésitez pas à me relancer si vous avez la moindre question.
Je ne sais qu'elles sont les messages 25 et 26.
Je vais répondre à tous les points:
1. Il me manque la réponse à ceci : Et de quelle manière : je copie/colle des cellules extérieures ma MFC ?
. Copier manuellement (clic droit) les dates de la feuille 1 et coller manuellement (clic droit)en feuille 2.
2. a date et sa validité sont attribuées à une personne, alors pourquoi ne pas travailler directement sur la colonne [Date dernière formation] de la feuille [Feuil2] en utilisant un formulaire (UseForm] pour renseigner la date ?
. Dans notre organisation interne nous avons 2 dossier différent pour de multiples raisons, la feuille 1 est une base et la feuille 2 en est une autre.
Merci et n'hésitez pas à me relancer si vous avez la moindre question.
Bonjour,
Votre exemple et prenez soin d'appliquer le conseil de gbinforme.
https://www.cjoint.com/?3EyxPDpkFoh
Votre exemple et prenez soin d'appliquer le conseil de gbinforme.
https://www.cjoint.com/?3EyxPDpkFoh
Bonjour,
Dans le but d'éviter un oubli lors du copier/coller, j'ai rajouté une option via une procédure.
Votre fichier avec l'ajour : https://www.cjoint.com/?3Ezphlytn0j
Dans le but d'éviter un oubli lors du copier/coller, j'ai rajouté une option via une procédure.
Votre fichier avec l'ajour : https://www.cjoint.com/?3Ezphlytn0j
Je viens de regarder votre travail
C'est exactement ce qu'il me fallait, encore un grand merci le pingou
C'est exactement ce qu'il me fallait, encore un grand merci le pingou
Bonjour,
Vous m'avez bien aidé pour mon tableau de bord;
Une erreur apparaît lorsque je clic sur les flèches de défilement des commentaires.
Je n'arrive pas à la corriger, pourriez vous s'il vous plait m'indiquer la démarche à suivre afin que je puisse corriger sur le tableau de bord original.
Merci d'avance.
le fichier se trouve à l'adresse ci dessous*
http://cjoint.com/?3Ftsaye6vMB
Cordialement
Vous m'avez bien aidé pour mon tableau de bord;
Une erreur apparaît lorsque je clic sur les flèches de défilement des commentaires.
Je n'arrive pas à la corriger, pourriez vous s'il vous plait m'indiquer la démarche à suivre afin que je puisse corriger sur le tableau de bord original.
Merci d'avance.
le fichier se trouve à l'adresse ci dessous*
http://cjoint.com/?3Ftsaye6vMB
Cordialement
Bonjour,
Modifier la procédure de la [Toupie] comme suit :
Modifier la procédure de la [Toupie] comme suit :
Private Sub SpinButton1_Change() Application.EnableEvents = False If SpinButton1.Value < (Sheets("Tableau de bord").Cells(32, 16) - 5) Then Sheets("Tableau de bord").Cells(32, 14) = SpinButton1.Value Else SpinButton1.Value = SpinButton1.Value - 1 End If Application.EnableEvents = True End Sub