Macro sous excel

koffy13 Messages postés 48 Statut Membre -  
koffy13 Messages postés 48 Statut Membre -
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

4 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    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
  2. koffy13 Messages postés 48 Statut Membre
     
    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
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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
    2. koffy13 Messages postés 48 Statut Membre
       
      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
    3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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
    4. koffy13 Messages postés 48 Statut Membre
       
      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
  3. koffy13 Messages postés 48 Statut Membre
     
    pour la mise en forme conditionnelle, ça me semble impossible.
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      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
    2. koffy13 Messages postés 48 Statut Membre
       
      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
  4. koffy13 Messages postés 48 Statut Membre
     
    la boucle tourne mais ne s'arrête jamais d'où je presume l'explication du message "28 espace pile insuffisant "
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Chez moi ça fonctionne parfaitement SANS les 2 dernières lignes
      Application.Run "'meth aaa.xlsx'!doublon"
      Application.Goto Reference:="doublon"
      0
    2. koffy13 Messages postés 48 Statut Membre
       
      oui je viens de réessayer.

      un grand merci pour ton aide !
      0