Bonjour,
j'ai réalisé une macro dernièrment qui permet de colorier le choix que l'on fait dans un menu déroulant (datavalidation).
Il ne sagit pas de format conditionnel mais bien de Datavalidation avec dans certain cas l'emploi de la fonction "indirect" dans la datavalidation.
Cette macro fonctionne très bien mais quand le fichier est envoyé à l'étranger.
Elle bug uniquement quand la datavalidation utilise cette fameuse fonction "indirect".
Après analyse avec mes collègues Espagnol, la fonction indirect se traduit par "indirecto".
La ligne de commande que j'utilise interprète mal le tout puisque la fonction est comprise, je pense, en mode texte et non pas dynamique. La voici:
Set References = Range(ActiveCell.Validation.Formula1)
La solution de remplacer "indirect par indirecto" n'est pas pensable puisqu'il faudrait la traduire dans toutes les langues (puisque ces un fichiers WW).
Merci d'avance aux "king" de VBA-Excel de votre aide.
A toute fin utilse, voici la macro au complet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Plage As Range, Noms As Range, CelNom As Range, Celcouleur As Range
On Error Resume Next 'Permet d'arreter la macro sans message en d'erreur
Set References = Range(ActiveCell.Validation.Formula1)
If Sh.Name = ("Configurator") Then 'Feuille du classeur avec liste déroulante
Set Plage = Range("D9:D25") 'Plage dans la feuille du classeur
Else: Exit Sub
End If
If Not Intersect(Target, Plage) Is Nothing Then
For Each CelNom In Intersect(Target, Plage)
For Each Celcouleur In References
If CelNom = Celcouleur Then
CelNom.Interior.ColorIndex = Celcouleur.Interior.ColorIndex
CelNom.Font.ColorIndex = Celcouleur.Font.ColorIndex
Exit For
End If
If CelNom <> Celcouleur Then
CelNom.Interior.Color = 255
End If
Next Celcouleur
Next CelNom
End If
End Sub |
Partager