Excel et coloriage de cellules en VBA
Fermé
pietreo
Messages postés
3
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
30 mars 2010
-
29 mars 2010 à 18:19
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 31 mai 2011 à 11:44
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 31 mai 2011 à 11:44
A voir également:
- Excel et coloriage de cellules en VBA
- Formule excel pour additionner plusieurs cellules - Guide
- Word et excel gratuit - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Verrouiller cellules excel - Guide
6 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
Modifié par eriiic le 29/03/2010 à 20:01
Modifié par eriiic le 29/03/2010 à 20:01
Bonjour,
si tu écris =SI(B2<A2;COLORCELL(C2:C2;3);COLORCELL(C2:C2;4))
c'est que tu veux faire une fonction personnalisée.
Une fonction personnalisée se déclare avec function xxx et non sub xxx.
Le problème c'est qu'une fonction personnalisée ne peut en aucun cas modifier l'environnement (donc une couleur de fond), elle retourne une valeur c'est tout.
Mais si tu as mis une couleur de fond par macro et que tu fais un copier-coller ensuite la couleur est emmenée aussi....
eric
si tu écris =SI(B2<A2;COLORCELL(C2:C2;3);COLORCELL(C2:C2;4))
c'est que tu veux faire une fonction personnalisée.
Une fonction personnalisée se déclare avec function xxx et non sub xxx.
Le problème c'est qu'une fonction personnalisée ne peut en aucun cas modifier l'environnement (donc une couleur de fond), elle retourne une valeur c'est tout.
Mais si tu as mis une couleur de fond par macro et que tu fais un copier-coller ensuite la couleur est emmenée aussi....
eric
chossette9
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 310
30 mars 2010 à 09:13
30 mars 2010 à 09:13
Bonjour,
dans la formule de cellule, tu utilises une formulle (COLORCELL) qui a 2 paramètres. Or ta fonction de départ (que tu as malheureusement défini en tant que Sub alors qu'il faudrait définir en Function) n'a pas de paramètres... Je pense que c'est ce qui peut expliquer le fait que ta couleur ne s'ajoute pas sur ta cellule.
Cordialement.
dans la formule de cellule, tu utilises une formulle (COLORCELL) qui a 2 paramètres. Or ta fonction de départ (que tu as malheureusement défini en tant que Sub alors qu'il faudrait définir en Function) n'a pas de paramètres... Je pense que c'est ce qui peut expliquer le fait que ta couleur ne s'ajoute pas sur ta cellule.
Cordialement.
pietreo
Messages postés
3
Date d'inscription
lundi 29 mars 2010
Statut
Membre
Dernière intervention
30 mars 2010
30 mars 2010 à 18:03
30 mars 2010 à 18:03
Merci,
Oui je sais j'ai copier collé un peu vite mais le code que je voulais mettre était effectivement défini sous la forme d'un fonction:
Ce code ne marche pas mais j'ai une explication comme me l'a signalé eriiic avec la notion d'environement
j'essaie de trouver un astuce.
Merci en core
Oui je sais j'ai copier collé un peu vite mais le code que je voulais mettre était effectivement défini sous la forme d'un fonction:
Public Function ColorCell(Plage As Range, couleur As Integer) Application.Volatile Plage.Interior.ColorIndex = couleur End Function
Ce code ne marche pas mais j'ai une explication comme me l'a signalé eriiic avec la notion d'environement
j'essaie de trouver un astuce.
Merci en core
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
30 mars 2010 à 19:12
30 mars 2010 à 19:12
Re,
Cherche un peu si tu veux mais n'y perds pas trop de temps. L'aide d'excel est très claire là-dessus...
Je pense qu'il faut que tu cherches une autre approche.
Limites des fonctions complémentaires
- Attribution
VBA pour Excel impose des limites très strictes aux fonctions appelées à l'intérieur de formules de feuilles de calcul. Leur seule attribution est de renvoyer une valeur à la cellule hôte. Ces fonctions ne peuvent effectuer aucune autre action susceptible de modifier le contenu du classeur.
En particulier, une fonction complémentaire ne peut pas modifier la valeur d'autres cellules que celles où elles ont été saisies. De même, il est impossible de renommer une feuille, déplacer une plage, changer le format d'une cellule, etc. à l'intérieur d'une fonction complémentaire. Les seules actions autorisées sont celles qui n'ont aucun effet sur le contenu du classeur, comme par exemple afficher un message par MsgBox.
eric
Cherche un peu si tu veux mais n'y perds pas trop de temps. L'aide d'excel est très claire là-dessus...
Je pense qu'il faut que tu cherches une autre approche.
Limites des fonctions complémentaires
- Attribution
VBA pour Excel impose des limites très strictes aux fonctions appelées à l'intérieur de formules de feuilles de calcul. Leur seule attribution est de renvoyer une valeur à la cellule hôte. Ces fonctions ne peuvent effectuer aucune autre action susceptible de modifier le contenu du classeur.
En particulier, une fonction complémentaire ne peut pas modifier la valeur d'autres cellules que celles où elles ont été saisies. De même, il est impossible de renommer une feuille, déplacer une plage, changer le format d'une cellule, etc. à l'intérieur d'une fonction complémentaire. Les seules actions autorisées sont celles qui n'ont aucun effet sur le contenu du classeur, comme par exemple afficher un message par MsgBox.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Djorge84
Messages postés
2
Date d'inscription
jeudi 14 avril 2011
Statut
Membre
Dernière intervention
31 mai 2011
31 mai 2011 à 11:32
31 mai 2011 à 11:32
Bonjour,
je rebondis sur ce post car je cherchais également depuis quelques temps à colorer certaines cellules dans le cadre d'une fonction personnalisée.
Si cela n'est pas possible car l'environnement (donc une couleur de fond) ne peut pas être modifiée à partir d'une fonction personnalisée, y-a-t-il une alternative / solution de remplacement ?
Merci de vos réponses.
je rebondis sur ce post car je cherchais également depuis quelques temps à colorer certaines cellules dans le cadre d'une fonction personnalisée.
Si cela n'est pas possible car l'environnement (donc une couleur de fond) ne peut pas être modifiée à partir d'une fonction personnalisée, y-a-t-il une alternative / solution de remplacement ?
Merci de vos réponses.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 260
Modifié par eriiic le 31/05/2011 à 11:46
Modifié par eriiic le 31/05/2011 à 11:46
Bonjour,
Il faut que tu utilises un évènement (change, selectionchange, activate,...) et que dans le code appelé tu recalcules et applique les couleurs sur les cellules concernées.
Bien sûr si tu as plusieurs centaines de cellules concernées ça va ralentir l'utilisation, essaie de restreindre aux seules cellules susceptibles d'être concernées.
eric
PS : tu as pensé à la mise en forme conditionnelle ?
Il faut que tu utilises un évènement (change, selectionchange, activate,...) et que dans le code appelé tu recalcules et applique les couleurs sur les cellules concernées.
Bien sûr si tu as plusieurs centaines de cellules concernées ça va ralentir l'utilisation, essaie de restreindre aux seules cellules susceptibles d'être concernées.
eric
PS : tu as pensé à la mise en forme conditionnelle ?
30 mars 2010 à 17:58
effectivement j'ai lu que les fonctions ne pouvaient modifier l'environnement je vais essayer
de trouver un "workaround" et posterai si je trouves une solution.