Macro sous excel

Fermé
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014 - Modifié par Guillaume5188 le 5/12/2013 à 16:41
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014 - 6 déc. 2013 à 10:44
Bonjour,
je n'ai aucune connaissances en VBA, c'est pour cela que je demande de l'aide. Je me suis renseigné sur des sites web mais je rame.
Le but si vous arrivé à m'aider c'est que je comprenne les réponses que vous me donnerez, de manière à ce que je progresse, mais pour un début j'ai besoin de vous.

Voilà mon problème:
Sur une feuille d'un classeur excel j'ai des données dans les colonnes A,B et C. Je voudrais colorier en rouge les cellules similaires d'un trio ABC . Par exemple si le trio A1 B1 C1 est identique au trio A2 B2 C2 sont identiques (cela veut dire A1=A2 et B1=B2 et C1=C2) alors je voudrais colorier en rouge les cases A1, B1, C1, A2, B2, C2.

Sachant que la colonne A et C comprennent des lettres et B des chiffres.

le seul truc que je suis arrivé à faire c'est ça:
If Range("A1").Value = Range("A2").Value Then
Range("A2").Interior.ColorIndex = 3
End If

en plus j'ai un message d'erreur, et je ne met pas de fonctions ET, j'ai juste essayer de faire un truc basique.

Merci

A voir également:

4 réponses

via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
Modifié par via55 le 5/12/2013 à 16:54
Bonjour

Ton code n'a pas d'erreur, il fonctionne parfaitement, je viens d'essayer

Si tu veux cumuler les 3 conditions il faut faire ainsi :

Sub colorer

If Range("A1").Value = Range("A2").Value and Range("A2").Value = Range("B2").Value and Range("C1").Value = Range("C2").Value Then
Range("A2").Interior.ColorIndex = 3
Range("B2").Interior.ColorIndex = 3
Range("C2").Interior.ColorIndex = 3
End If

End sub

Mais tu pourrais aussi bien le faire par simple mise en forme conditionnelle sans passer par une macro


Cdlmnt

"L'imagination est plus importante que le savoir." A. Einstein
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
5 déc. 2013 à 17:01
merci pour la réponse.

cependant pour 2 lignes ça va mais je voudrais comparer plusieurs lignes et je ne veut pas écrire toutes les conditions c'est trop long. Genre comment faire si j'ai 500 lignes ?

J'ai oublié mais j'ai aussi D1 D2 à rajouter, je devrais y arriver mais il faudra que j'écrire les 8 cases à colorier après la condition Then ? ou il existe un raccourci ?

pour la mise en forme conditionnelle je vais regarder mais je connaissais pas

merci
0
via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
5 déc. 2013 à 17:28
Si tu veux comparer les cellules identiques sur 500 lignes il faut faire une boucle mais au départ il faut savoir ce que tu compares :
Est ce que c'est chaque ligne et celle du dessous ? ou chaque ligne avec toutes les autres ?
s'i l y a par exemple 1, 2 , 3 et 4 en ligne 1 et en ligne 5 puis 3,4,5 et 6 en ligne 3 et en ligne 10 est ce que toutes doivent être colorées en rouge ?

Dans l'attente des précisions
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
5 déc. 2013 à 17:34
la comparaison c'est chaque ligne avec toutes les autres.
pour ton exemple ligne 1: 1 2 3 4
ligne 5 : 3 4 5 6
ligne 10:3 4 5 6
Les cellules A5 B5 C5 D5 et A10 B10 C10 D10 doivent etre coloriées en rouge.
Oui donc une boucle de manière a si par la suite je supprime une ligne en doublon ça remouline
0
via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
Modifié par via55 le 5/12/2013 à 18:01
OK

donc une boucle du genre

For n=1 to 499

For t= n+1 to 500

If Range("A"& n).Value = Range("A"&t).Value and Range("B"& n).Value = Range("B"& t).Value and
Range("C"& n).Value = Range("C"&t).Value and Range("D"& n).Value = Range("D"& t).Value then
Range("A"& t).Interior.ColorIndex = 3
Range("B" & t).Interior.ColorIndex = 3
Range("C" & t).Interior.ColorIndex = 3
Range("D" & t).Interior.ColorIndex = 3
End If

Next t

Next n
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
Modifié par koffy13 le 5/12/2013 à 19:13
ok merci je vais regarder ça et essayer de comprendre ^^.

ça fonctionne par contre ça fais planter excel "ne répond pas"
et "erreur 1004 la méthode 'Run' de l'objet '_Application' a échoué"

j'ai cela en code:
"Sub doublon()
'
' doublon Macro
'

For n = 1 To 499

For t = n + 1 To 500

If Range("A" & n).Value = Range("A" & t).Value And Range("B" & n).Value = Range("B" & t).Value And Range("C" & n).Value = Range("C" & t).Value And Range("D" & n).Value = Range("D" & t).Value Then
Range("A" & t).Interior.ColorIndex = 3
Range("B" & t).Interior.ColorIndex = 3
Range("C" & t).Interior.ColorIndex = 3
Range("D" & t).Interior.ColorIndex = 3
End If

Next t

Next n


'
Application.Run "'meth aaa.xlsx'!doublon"
Application.Goto Reference:="doublon"
End Sub
"
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
5 déc. 2013 à 17:29
pour la mise en forme conditionnelle, ça me semble impossible.
0
via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
5 déc. 2013 à 17:31
si tu as 500 lignes oui il faut mieux une macro mais je réitère ma question que veux tu exactement comparer et comment; quels sont les critères de mise en couleur
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
5 déc. 2013 à 17:54
j'ai répondu dans l'autre réponse
"la comparaison c'est chaque ligne avec toutes les autres.
pour ton exemple ligne 1: 1 2 3 4
ligne 5 : 3 4 5 6
ligne 10:3 4 5 6
Les cellules A5 B5 C5 D5 et A10 B10 C10 D10 doivent etre coloriées en rouge.
Oui donc une boucle de manière a si par la suite je supprime une ligne en doublon ça remouline"
si ce n'est pas claire je reformulerais
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
5 déc. 2013 à 20:55
la boucle tourne mais ne s'arrête jamais d'où je presume l'explication du message "28 espace pile insuffisant "
0
via55 Messages postés 14426 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 6 juin 2024 2 711
5 déc. 2013 à 22:55
Chez moi ça fonctionne parfaitement SANS les 2 dernières lignes
Application.Run "'meth aaa.xlsx'!doublon"
Application.Goto Reference:="doublon"
0
koffy13 Messages postés 48 Date d'inscription lundi 24 septembre 2012 Statut Membre Dernière intervention 13 janvier 2014
6 déc. 2013 à 10:44
oui je viens de réessayer.

un grand merci pour ton aide !
0