[EXCEL + VBA ] Mise en forme conditionnelle

Mise en forme conditionnelle [EXCEL + VBA ] - Logiciels - Windows & Software

Marsh Posté le 20-10-2006 à 14:20:05    

Salut à vous tous
 
je n'arrive pas à trouver le pourquoi du comment ma macro ne marche pas:
je m'explique :
 
je veux colorier un groupe sur deux par ex :
 
aaaa --------- rererseres - re re -r
aaaa --------- refsdgsdgdg - f sfsd fsf -
 
fvfvf ---------f fsd fsd fsdf s- fs fsf s- fs
 
tope -------- fsd fgsd - gsdf gsd- gsfd
tope --------- fsd fsd s
 
 
l'idée c'est de colorier le groupe aaaa puis le groupe tope
 
j'ai trouver ceci sur le net et ca marche quand je passe par format/mise en forme conditionelle
 

Code :
  1. =MOD(ENT(SOMME(1/NB.SI($A$1:$A1;$A$1:$A1)));2)=1


 
mais je voudrais le faire par macro j'ai donc fait ceci :
 

Code :
  1. With Range("A1:H50" )
  2. .FormatConditions.Delete
  3. .FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(ENT(SOMME(1/NB.SI($B$8:$B8;$B$8:$B8)));2)=1"
  4. .FormatConditions(1).Interior.ColorIndex = 17
  5. End With


 
et la ca ne marche plus, ca me colorie toute la page..
 
si je reselectionne la plage A1:H50 et que je retourne dans format/mise en forme condio..
ma formule est bien inscrite, je clique sur ok et ca marche
 
mais je n'arive pas à le faire avec la macro.
merci d'avance de votre aide précieuse.
 

Reply

Marsh Posté le 20-10-2006 à 14:20:05   

Reply

Marsh Posté le 20-10-2006 à 21:12:36    

est-ce qu'il ne faut pas que tu utilises le nom des fonctions dans les version GB ?
 
remplace ENT par INT (je crois) et somme par SUM (ça j'en suis sûr), pour voir
 


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 21-10-2006 à 10:59:49    

merci de ta réponse.. ca ne change rien que j'essaye SUM ou INT ou les DEUX ..
si ce n'est que au lien de mal colorier ca ne colorie rien du tout..

Reply

Marsh Posté le 21-10-2006 à 12:54:46    

j'avais pas vu que tu as nb.si qu'il faudrait aussi remplacer par countif, je pense.
 
la gestion des pack de langue dans excel est un peu compliquée : les formules dans les documents eset dans la langue de l'utilisateur mais c'est uniquement en anglais dans VBA.
 
Quand tu entres cette formule dans une cellule (et pas comme format conditionnel) par le VBA, est-ce qu'il te retourne un vrai/faux, ou bien un message d'erreur ?


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 21-10-2006 à 13:52:38    

je vais essayer ce que tu me demande :
 
je change donc : SUM et IN et COUNTIF
 
quand je mets la formule "originale " dans la cellule ca me retourne VRAI.
si je change avec SUM par exemple ca me retourne : #NOM?
 
si je mets cette formule dans ma macro aucun effet :
 
With Range("A1:H50" )
 
.FormatConditions.Delete
 
.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(INT(SUM(1/countif($B$8:$B8;$B$8:$B8)));2)=1"
 
.FormatConditions(1).Interior.ColorIndex = 17
 
End With

 
 
merci encore de ton aide...

Message cité 1 fois
Message édité par flclsd le 21-10-2006 à 13:58:11
Reply

Marsh Posté le 22-10-2006 à 15:23:09    

flclsd a écrit :

je vais essayer ce que tu me demande :
 
je change donc : SUM et IN et COUNTIF
 
quand je mets la formule "originale " dans la cellule ca me retourne VRAI.
si je change avec SUM par exemple ca me retourne : #NOM?
 
si je mets cette formule dans ma macro aucun effet :
 
With Range("A1:H50" )
 
.FormatConditions.Delete
 
.FormatConditions.Add Type:=xlExpression, Formula1:="=MOD(INT(SUM(1/countif($B$8:$B8;$B$8:$B8)));2)=1"
 
.FormatConditions(1).Interior.ColorIndex = 17
 
End With

 
 
merci encore de ton aide...


 
je ne parlais pas d'entrer la formule à la main mais de la faire entrer par VBA (pas comme format conditionnel.
 
Un truc par exemple : enregistre comme macro le fait d'entrer manuellement ta formule originale dans la cellule et va voir le code généré : tu devrais retrouver la formule "traduite" dans l'editeur VBA


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 23-10-2006 à 10:14:22    

Bon j'y ai cru.. mais je n'y arrive toujours pas
 
pour rappel voici ma formule originale :
=MOD(ENT(SOMME(1/NB.SI($B$8:$B8;$B$8:$B8)));2)=1
voici la formule que j'obtiens quand j'enregistre avec une macro et en tapant la formule du dessus
=MOD(INT(SUM(1/COUNTIF(R8C2:R[-17]C2,R8C2:R[-17]C2))),2)=1
 
quand je mais cette formule dans ma macro, aucun effet. Et quand j'essaye de la copier en passant par format-mise en forme.. j'ai une erreur
 
j'ai donc essayer une combinaison des deux :
=MOD(INT(SUM(1/COUNTIF($B$8:$B8;$B$8:$B8)));2)=1
et la ca ne marche toujours pas. la formule me retourne #NOM?
 
En esperant que tu ai encore une piste.. merci


Message édité par flclsd le 23-10-2006 à 10:16:53
Reply

Marsh Posté le 24-10-2006 à 11:18:48    

up :-)

Reply

Marsh Posté le 24-10-2006 à 21:02:34    

J'ai du mal à comprendre ta formule. J'ai copié quelques données à la con sur une feuille, collé la formule que tu donnes et ça ne m'indique TRUE que pour la première occurence d'une valeur dans la colonne BB
 
tu es sûr que ta formule fonctionne correctement ?
 
et si tu utilises la fonction (=EST.PAIR(LIGNE(B1)) ou =EST.PAIR(LIGNE(B1)+1), si tu veux colorier une ligne sur 2 ?
 
en anglais : =ISEVEN(ROW(B1))


Message édité par Prozac le 24-10-2006 à 21:05:25
Reply

Marsh Posté le 24-10-2006 à 22:05:54    

la formule est bonne tu peux regarder le classeur ci joint en exemple.. et tu verras vraiment ce que je veux dire. merci d'avance.  
PS : c'est pas une ligne sur deux que je veux, mais un groupe de données sur deux..
 
http://marie.daprato.free.fr/test.xls


Message édité par flclsd le 24-10-2006 à 22:06:26
Reply

Marsh Posté le 24-10-2006 à 22:05:54   

Reply

Marsh Posté le 24-10-2006 à 22:50:33    

ben j'arrive même pas à comprendre pourquoi son truc marche
 
en collant la formule utilisée pour le formattage conditionnel dans la feuille, les résultats ne me paraissent pas cohérents.
 
Et je n'arrive pas à reproduire le truc en agrandissant le tableau à d'autres valeurs :??:  
 
tu as trouvé ça sur quel site ?


---------------
La ligne droite n'est en aucun cas le plus court chemin entre deux points. Sauf, bien sûr, si les deux points sont bien alignés l'un en face de l'autre
Reply

Marsh Posté le 25-10-2006 à 07:19:25    

sur http://www.excelabo.net
mais la fonction recherche du site déconne un peu. je te joins le fichier excel d'exemple tu comprendras surement comment il fait sa forumle. c'est expliquer dedans.
http://cptflam.celeonet.fr/site_we [...] emples.xls

Reply

Marsh Posté le 27-10-2006 à 14:51:49    

alors t'y pige qq chose finalement ?

Reply

Marsh Posté le 27-10-2006 à 18:00:56    

Bonjour,
Je n'ai pas tout compris, mais la formule entrée est bonne, en effet, si , après lancement de ta macro, tu surlignes ta zone de format conditionnel puis affiches le format et fais ok, la mise en place se fait  
bizzarre (bug ou option?)
Cordialement

Reply

Marsh Posté le 28-10-2006 à 08:06:25    

Bonjour,
Si tu as la possibilité de mettre deux zones cachées, je t'envoie un xls
http://cjoint.com/?kCiczE1iXs
Cordialement

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed