Excel - macro (mise en forme conditionnelle)
Résolu/Fermé
A voir également:
- Vba supprimer mise en forme conditionnelle
- Vba mise en forme conditionnelle - Meilleures réponses
- Excel - macro (mise en forme conditionnelle) ✓ - Forum - Programmation
- Supprimer mise en forme conditionnelle si case vide ✓ - Forum - Excel
- VBA excel mise en forme conditionnelle ✓ - Forum - VB / VBA
- VBA Excel: Mise en forme conditionnelle ✓ - Forum - VB / VBA
- Vba excel mise en forme conditionnelle - Forum - Excel
8 réponses
Armojax
1 sept. 2006 à 13:35
- Messages postés
- 1852
- Date d'inscription
- mercredi 19 janvier 2005
- Statut
- Membre
- Dernière intervention
- 9 mars 2022
1 sept. 2006 à 13:35
Re,
Il se peut que je sois à côté de la plaque, et je ne sais pas dans quelles conditions tu utilises tes formats.
Je reprécise : pour chaque cellule, Excel autorise 3 formats conditionnels. A la tentative de création d'un 4ème pour la même cellule, on a précisément le message qui t'enquiquine.
Ayant créé des formats au cours d'une exécution, ils restent définis dans le classeur. Donc si au cours d'une exécution suivante tu réinterviens sur une cellule qui a déjà des formats créés par une exécution précédente, ça tilte. Autrement dit, si FormatConditions.Count = 3, il faut en supprimer avant d'en rajouter...
Encore une fois, ce n'est peut-être pas ça ton problème, mais je préfère lever les ambiguïtés d'interprétation.
Il se peut que je sois à côté de la plaque, et je ne sais pas dans quelles conditions tu utilises tes formats.
Je reprécise : pour chaque cellule, Excel autorise 3 formats conditionnels. A la tentative de création d'un 4ème pour la même cellule, on a précisément le message qui t'enquiquine.
Ayant créé des formats au cours d'une exécution, ils restent définis dans le classeur. Donc si au cours d'une exécution suivante tu réinterviens sur une cellule qui a déjà des formats créés par une exécution précédente, ça tilte. Autrement dit, si FormatConditions.Count = 3, il faut en supprimer avant d'en rajouter...
Encore une fois, ce n'est peut-être pas ça ton problème, mais je préfère lever les ambiguïtés d'interprétation.
Armojax
1 sept. 2006 à 09:51
- Messages postés
- 1852
- Date d'inscription
- mercredi 19 janvier 2005
- Statut
- Membre
- Dernière intervention
- 9 mars 2022
1 sept. 2006 à 09:51
Hello chewi,
Je pense que tu ne peux pas indéfiniment ajouter des Format.Conditions à une cellule, vu que leur nombre est limité à 3.
Donc avant, fais un : Cellule.FormatConditions.Delete
Je pense que tu ne peux pas indéfiniment ajouter des Format.Conditions à une cellule, vu que leur nombre est limité à 3.
Donc avant, fais un : Cellule.FormatConditions.Delete
Salut Armojax et les autres.
Tout d'abord, merci pour ta réponse.
Cependant,... (si je ne me trompe pas)
Si tu regarde bien dans la macro, je ne mets que deux conditions par cellules qui restent les mêmes de cellule en cellule.
Vert si compris entre 16 et 23 et rouge si non compris.
Le message d'erreur s'applique aux lignes qui sont soulignées.
Si tu vois autre chose, n'hésite pas!
Merci quand même.
@+
Tout d'abord, merci pour ta réponse.
Cependant,... (si je ne me trompe pas)
Si tu regarde bien dans la macro, je ne mets que deux conditions par cellules qui restent les mêmes de cellule en cellule.
Vert si compris entre 16 et 23 et rouge si non compris.
Le message d'erreur s'applique aux lignes qui sont soulignées.
Si tu vois autre chose, n'hésite pas!
Merci quand même.
@+
Armojax
1 sept. 2006 à 10:53
- Messages postés
- 1852
- Date d'inscription
- mercredi 19 janvier 2005
- Statut
- Membre
- Dernière intervention
- 9 mars 2022
1 sept. 2006 à 10:53
OK, tu n'en mets que deux... à chaque exécution. Et tu en enlèves quand ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Armojax
1 sept. 2006 à 18:53
- Messages postés
- 1852
- Date d'inscription
- mercredi 19 janvier 2005
- Statut
- Membre
- Dernière intervention
- 9 mars 2022
1 sept. 2006 à 18:53
Tu peux mettre, p.ex. :
Tu peux aussi écrire tout simplement :
If .FormatConditions.Count <> 0 Then .FormatConditions.Delete End If
Tu peux aussi écrire tout simplement :
.FormatConditions.Deletesans rien tester, car la commande ne plante pas, même si aucun format n'existe (donc pas besoin de On error... etc.).
Re
Je vais essayer de mieux m'expliquer.
Dans ma macro, à chaque exécution, l'emplacement d'une des cellules transférées subit deux mises en forme conditionnelles mais ensuite, cette cellule étant complétée, elle n'est plus jamais modifiée, je n'y touche plus. ( Tu peux voir : "Column + 1" )
Donc dans chaque cellule, il n'y a que deux mises en forme conditionnelles (qui en plus, sont toujours les mêmes).
Les mises en formes conditionnelles sont limitées à 3 par cellule !
Je viens d'essayer dans un classeur plus de 20 formats conditionnels répartis sur une quinzaine de cellules et aucun problème!
Le problème ne vient donc pas, à mon humble avis, du nombre de répétitions du format.
Je ne pense donc pas être obligé d'en enlever.
Maintenant, s'il s'agit réellement du problème, je veux bien enlever tout format conditionnel à chaque exécution et n'en mettre qu'un seul sur toute la plage de cellule concernée.
Mais encore une fois, je ne crois pas que ça vienne de là.
En attendant de tes nouvelles.
Si d'autres pouvaient m'aiguiller sur mon problème, j'en serait le plus heureux car je ne trouve vraiment pas la clé du problème.
Bien à vous.
Et merci d'avance!
Je vais essayer de mieux m'expliquer.
Dans ma macro, à chaque exécution, l'emplacement d'une des cellules transférées subit deux mises en forme conditionnelles mais ensuite, cette cellule étant complétée, elle n'est plus jamais modifiée, je n'y touche plus. ( Tu peux voir : "Column + 1" )
Donc dans chaque cellule, il n'y a que deux mises en forme conditionnelles (qui en plus, sont toujours les mêmes).
Les mises en formes conditionnelles sont limitées à 3 par cellule !
Je viens d'essayer dans un classeur plus de 20 formats conditionnels répartis sur une quinzaine de cellules et aucun problème!
Le problème ne vient donc pas, à mon humble avis, du nombre de répétitions du format.
Je ne pense donc pas être obligé d'en enlever.
Maintenant, s'il s'agit réellement du problème, je veux bien enlever tout format conditionnel à chaque exécution et n'en mettre qu'un seul sur toute la plage de cellule concernée.
Mais encore une fois, je ne crois pas que ça vienne de là.
En attendant de tes nouvelles.
Si d'autres pouvaient m'aiguiller sur mon problème, j'en serait le plus heureux car je ne trouve vraiment pas la clé du problème.
Bien à vous.
Et merci d'avance!
Re Armojax.
C'est précisément là le problème, je viens de le trouver aussi et vu ton dernier post, c'est exactement ça!
En fait ma macro n'est pas sensée revenir sur une cellule qui a déjà été remplie mais le problème (qui finalement n'en est pas un) est que lorsque je fais des essais, j'efface le contenu des cellules et donc pas la mise en forme conditionnelle que j'oublie!
Donc la macro est bonne mais pas la manipulation que je fais de mon fichier.
Il vaudrait donc mieux que lors de ma mise en forme conditionnelle dans la macro, je vérifie d'abord si une conditionnelle est déjà présente et si oui, l'effacer avant d'appliquer la nouvelle (qui est la même).
Si tu savais m'aider sur la ligne de code à entrer pour dire en bon visual:
With Feuil2.Cells(17, Colonne)
If .FormatCondition = True Then
.Format.Conditions.Clear
End If
.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, _
Formula1:="16", Formula2:="22"
.FormatConditions(1).Font.ColorIndex = 3
End With
C'est précisément là le problème, je viens de le trouver aussi et vu ton dernier post, c'est exactement ça!
En fait ma macro n'est pas sensée revenir sur une cellule qui a déjà été remplie mais le problème (qui finalement n'en est pas un) est que lorsque je fais des essais, j'efface le contenu des cellules et donc pas la mise en forme conditionnelle que j'oublie!
Donc la macro est bonne mais pas la manipulation que je fais de mon fichier.
Il vaudrait donc mieux que lors de ma mise en forme conditionnelle dans la macro, je vérifie d'abord si une conditionnelle est déjà présente et si oui, l'effacer avant d'appliquer la nouvelle (qui est la même).
Si tu savais m'aider sur la ligne de code à entrer pour dire en bon visual:
With Feuil2.Cells(17, Colonne)
If .FormatCondition = True Then
.Format.Conditions.Clear
End If
.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, _
Formula1:="16", Formula2:="22"
.FormatConditions(1).Font.ColorIndex = 3
End With
salut les as d'excel !!!
Je travaille avec une équipe de 6 personnes pendent 7 jours de la semaines et sur trois shifts répartis comme suit: 3 de 8h à 15h; 2 de 15h à 22h et 1 de 18h à 1h du matin. Comment faire pour automatiser le planing hebdomadaire sur une période de 5 semaines par exemple. il existe aussi certaines conditions: par exemple celui qui travaille de 18hà 1h ne doit pas faire 8h-15h le lendemain. Le week end seuls 2 personnes travaillent la journée et les autres se reposent.
Merci de m'aider!!!!
Je travaille avec une équipe de 6 personnes pendent 7 jours de la semaines et sur trois shifts répartis comme suit: 3 de 8h à 15h; 2 de 15h à 22h et 1 de 18h à 1h du matin. Comment faire pour automatiser le planing hebdomadaire sur une période de 5 semaines par exemple. il existe aussi certaines conditions: par exemple celui qui travaille de 18hà 1h ne doit pas faire 8h-15h le lendemain. Le week end seuls 2 personnes travaillent la journée et les autres se reposent.
Merci de m'aider!!!!
Modifié par khawla le 26/03/2010 à 00:31