Renommer une "Function" en VBA
Bonjour à tous,
Dans un fichier, j'ai une mise en valeur de la colonne filtrée qui se fait grâce à la mise en forme conditionnelle et une fonction j'ai trouvé sur un forum (je vous la donne car elle est bien pratique ):
Code:
1 2 3 4
| Function ChampActif(C)
Application.Volatile
ChampActif = Sheets(Application.Caller.Parent.Name).AutoFilter.Filters.Item(C.Column - Sheets(Application.Caller.Parent.Name).Range("_FilterDataBase").Column + 1).On
End Function |
Ce même fichier est alimenté régulièrement grâce à une macro qui vérifie si les enregistrements son déjà présents.
Tout cela me donnais satisfaction jusqu’à ce que j' ajoute des instruction de mise en forme (quadrillage) pour faciliter la lecture.
La, ma macro ne fonctionne plus ! Arrivée à la ligne ou j'applique le quadrillage ( .BorderAround Weight:=xlThin) la macro stoppe sans message d'erreur... :weird:
Après bien des tâtonnements, j'ai trouvé que cela arrivait a cause de la mise en forme conditionnelle (si je la supprime, la macro roule sans problème) et je suis à la recherche d'un moyen d'arriver à faire cohabiter tout cela.
- J'ai essayé de désactiver le traitement des évènements avec
Code:
Application.EnableEvents = False
: mauvaise piste, ça ne marche pas (car la fonction n'est pas un évènement ?)
- J'ai essayé de supprimer la mise en forme conditionnelle
Code:
.FormatConditions.Delete
pour la rétablir après le traitement mais l'execution s'arrête sans message d'erreur à la ligne
Code:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= "=champactif(A1)"
.
- A la main, j'ai renommé la fonction "ChampActif" et là ma macro s'exécute sans problème...
Selon vous :
1/ je fais ça en vba : renommer "ChampActif" en "machino", exécuter mon code de mise à jour et de mise en forme puis renommer "machino" en "ChampActif" => Comment renommer une macro en vba ?
2/ vous connaissez un autre moyen plus élégant. :D