Excel : Conditions si ou mise en forme

Résolu/Fermé
colt74500 Messages postés 3 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010 - 7 janv. 2010 à 11:44
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 - 12 janv. 2010 à 07:16
Bonjour,
J'aimerais appliquer une couleur aux cellules d'une meme colone ayant la meme valeur en sachant que le tableau est tres grand (300 cellules par colone) soit avec une condition ou une mise en forme conditionnelle
Petit exemple ci dessous
merci pour votre aide

a a
a d
b d
f s
f q
q q
r p
u m
u m
A voir également:

15 réponses

tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
7 janv. 2010 à 18:06
Bonjour,
S'il s'agit d'identifier les ref en double, pkoi ne pas simplement ajouter un colonne et y mettre un formule du genre : =SI(NB.SI($A:$A;A1)>1;"ref en double";"") ? Passer par un code couleur n'est pas simple et ne permettra ni de filter, ni de trier la liste (apres si tu y tiens vraiment, tu ajoute un colonnes que tu masques puis une petite mise en forme automatique avec un formule =B1="ref en double")
3
A B
a =SI(NB.SI($A:$A;A1)>1;"ref en double";"")
b
c
c
d
e
f
f

resalut Tom
j'ai mis ta formule en B1 pour sortir les c et f , ca marche pas ou j'ai rien compris
C'est comme ca que tu pensais ?
a+
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435 > colt74500
7 janv. 2010 à 22:56
resalut,
oui oui, c'est bien ça, reste juste à tirer la formule vers le bas (via la poignée de recopie)
tu devrais obtenir ça pour les formules:
a	=SI(NB.SI($A:$A;A1)>1;"ref en double";"")
b	=SI(NB.SI($A:$A;A2)>1;"ref en double";"")
c	=SI(NB.SI($A:$A;A3)>1;"ref en double";"")
c	=SI(NB.SI($A:$A;A4)>1;"ref en double";"")
d	=SI(NB.SI($A:$A;A5)>1;"ref en double";"")
e	=SI(NB.SI($A:$A;A6)>1;"ref en double";"")
f	=SI(NB.SI($A:$A;A7)>1;"ref en double";"")
f	=SI(NB.SI($A:$A;A8)>1;"ref en double";"")

et ça devrait donner ça en affichage:
a	
b	
c	ref en double
c	ref en double
d	
e	
f	ref en double
f	ref en double
0
colt74500 > tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013
7 janv. 2010 à 23:02
Super ca marche
je vais le faire dans mon fichier
je te remerci c'est vraiment sympa, 1er fois que je vais dans un forum , super utile
a+
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435 > colt74500
7 janv. 2010 à 23:04
de rien, content d'avoir pu aider :)
@+
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
7 janv. 2010 à 16:23
ceci ne s applique que a ta colonne A?
1
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
7 janv. 2010 à 12:29
bonjout

tu peux utiliser la mise en forme conditionnelle avec la mise en surbrillance
0
Bonjour moiced59
Je sais le faire entre 2 cellules voir plusieurs en lui disant que si la valeur est = a une cellule mettre en gras , couleur etc mais si il faut que je le fasse a toute les cellules par rapport aux autres je vais y passer 2010.
il me faudrait qque chose que j'applique a tout le document, colonne,
merci a+
0
je ferai colonne par colonne donc pour l'instant oui
en faite j'ai une multitude de mots dans ces colonnes et je voudrais avoir qque chose qui m'indique quand j'ai un doublon
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
7 janv. 2010 à 17:59
oula ce se complique je pensais que c t seulement avec d lettre tu as bcp de ref differente?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
7 janv. 2010 à 18:48
voila g trouver:

tiens tu peux executer ce code derriere un bouton il trie t donné et met t doublon de la meme coulleur si 2 doublons se suivent un est en rouge et l autre en bleu

Columns("A:A").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:A68000") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A68000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

i = 1

numcouleur = vbRed
Do Until i = 1000

If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
If numcouleur = vbRed Then
numcouleur = vbBlue
Else
numcouleur = vbRed
End If
End If
End If
i = i + 1
Loop

End Sub
0
J'ai copier coller ta mixture dans une macro, je l'ai executée mais ca me met une erreur
tu penses qu'il faudrait que je fasse autrement ?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
7 janv. 2010 à 19:11
re

bien sur si tu as plusieur colonne avec des donnée remplace le :
Columns("A:A").Select du debut parpar exemple t donné vous jusqua la colonne h par
:Columns("A:H").Select
de meme pour:
.SetRange Range("A1:A68000") par:
.SetRange Range("A1:H68000")
0
Merci a vous deux
mais il va falloir que je digere et comprendre vos reponses , je ne suis pas un pro.
je vous tiendrai au courant si je m'en sort
a+ et merci
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
8 janv. 2010 à 09:59
bonjour
quel est ton message?
0
colt74500 Messages postés 3 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
8 janv. 2010 à 18:09
Salut

Erreur d'execution 438
Proprieté ou méthode non gerée par cet objet

Dans la macro apres l'erreur le 1er Activeworkbook etait en jaune

Je ne sais pas si c'est tres clair sinon je me suis debrouillé avec la formule des doublon
a+

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 08/01/2010 par colt
'
' Touche de raccourci du clavier: Ctrl+d
'Columns("A:A").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:A68000") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A68000")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

i = 1

numcouleur = vbRed
Do Until i = 1000

If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
If numcouleur = vbRed Then
numcouleur = vbBlue
Else
numcouleur = vbRed
End If
End If
End If
i = i + 1
Loop

End Sub
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
8 janv. 2010 à 18:25
re
tu peux essayé en retirant les activeworkbook
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
8 janv. 2010 à 18:56
Salut,
oulà, pas mal de soucis de compatibilité sur le tri :
SortFields => inexistant en 2003, jvérifierai + tard pour excel 2007
pareil : Range("A1:A68000") ne peut fonctionner qu'en excel 2007 (excel 2003 ne fournit que 65536 lignes)...
ensuite Do Until i = 1000 : il serait plus judicieux de determiner la derniere cellule non vide de la plage et boucler de la 1ere ligne à à celle-ci
etc...
Apres pourquoi vouloir absolument coder qd une manipulation simple et facilement répétable pour un non-initié au vba (formule/MFC) peut résoudre le pb ? La solution la plus simple est bien souvent la meilleure (j'aurais bien mis toujours mais ça va lancer un débat lol) !
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
8 janv. 2010 à 19:38
re

je suis d'accord avec toi pr la solution mais trouve moi une formule qui trie les enregistrement et qui met un doublon sur 2 d'1 couleur <> j crois pas trop !!

les chiffre ds mon code son bien sur fictif il faut les adapter a son pb!
voila avec la 1ere ligne vide

vide= Worksheets("feuil1").Cells(1, "A").End(xlDown).Row + 1
Columns("A:A").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:vide") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:vide")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

i = 1

numcouleur = vbRed
Do Until i = vide

If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
If numcouleur = vbRed Then
numcouleur = vbBlue
Else
numcouleur = vbRed
End If
End If
End If
i = i + 1
Loop

End Sub
0
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 435
8 janv. 2010 à 20:50
Re,
premiere chose tu devrais tester ton code avant de le poster :
Range("A1:vide") => "A1:A" & vide
ensuite tu dis : "qui met un doublon sur 2 d'1 couleur <> j crois pas trop !! "...en fait tu mets les 2 de la meme couleur, c'est ici : Range(Cells(i, 1), Cells(i + 1, 1)).Font.Color = numcouleur
du coup, ça ferait :
vide = Worksheets("feuil1").Cells(1, "A").End(xlDown).Row + 1
Columns("A:A").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("A1:A" & vide) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:A" & vide)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

i = 1
numcouleur = vbRed

Do Until i = vide
    If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
        Cells(i + 1, 1).Font.Color = numcouleur
        If Cells(i, 1).Value <> Cells(i + 2, 1).Value Then
            If numcouleur = vbRed Then
                numcouleur = vbBlue
            Else
                numcouleur = vbRed
            End If
        End If
    End If
    i = i + 1
Loop
=> mettra tous les codes en double en couleur sauf le 1er (avec changemnt de couleur 1 fois sur 2)
bon, ça change pas le fait que ce code ne fcontionnera que sur excel 2007 (SortFields) !
enfin moi jdis ça, c'est pour aider et puis on va pas debattre sur un post résolu...
bonne soirée
0
colt74500 Messages postés 3 Date d'inscription jeudi 7 janvier 2010 Statut Membre Dernière intervention 11 janvier 2010
11 janv. 2010 à 21:25
Bonsoir
je viens d'investir dans office2007 et je viens d'essayer la mixture ci dessus.
ca a l'air de marcher, cela tri et met les doublons en couleur.
je pense que je vais pouvoir m'en servir
Derniere petite question, tout ces commandes, vous avez travaillez longuement dessus ou il y a des applications toutes faites, ca 'interesse mais c'est un peu du chinois pour moi.
Merci encore
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
9 janv. 2010 à 08:21
re

bah mon code je l'zi tester et il met bie un doublon sur 2 de couleur <>
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
12 janv. 2010 à 07:16
bonjour

Bah non il faut travailler dessus mais grace a l'enregistreur de macro pas besoin de faire tout par coeur
0