MFC sur cellules identiques d'une même colonne

Résolu
agathe182 Messages postés 49 Statut Membre -  
agathe182 Messages postés 49 Statut Membre -
Bonjour,

J'ai une liste de plus d'un millier de codes dans une colonne, dont certains sont identiques. Les codes identiques se suivent de cette façon (il n'y a donc pas de doublons isolés) :
14723
14723
14723
14723
14725
14725
14725
14725
14725
14728
14728

Dans un souci de visualisation rapide des données, je souhaiterai intégrer une mise en forme conditionelle à ma colonne afin de pouvoir mettre en évidence les codes du même type, ex :
14723 rouge
14723 rouge
14723 rouge
14723 rouge
14725 vert
14725 vert
14725 vert
14725 vert
14725 vert
14728 bleu
14728 bleu

J'ai cherché la solution à mon problème sur internet mais sans résultat parce que je pense que je ne sait pas trop comment le formuler et aussi mes connaissances en VBA sont très limitées...

Si vous avez la solution je vous en remercie par avance,

Agathe

5 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Agathe

    La solution par VBA n'est peut être pas la meilleure puisque les codes se suivent ; il suffit de rajouter une colonne pour identifier une série de code identique par des 1 puis la série suivante par des 0 puis la suivante de nouveau par des 1 etc et de colorer les lignes avec 1.; ce devrait être assez visuel pour repérer tes séries

    Exemple expliqué : http://www.cjoint.com/c/FHym3d7knQ6

    Cdlmnt
    Via
    0
    1. agathe182 Messages postés 49 Statut Membre
       
      Bonjour Via55 et merci de ta réponse.

      Justement mon fichier est amené à changer toutes les semaines et je souhaiterai avoir le moins de manip possibles pour éviter les manipulations.
      Y-a-t-il moyen de faire autrement ?
      0
  2. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    mon fichier est amené à changer toutes les semaines
    c'est à dire ? la colonne se rallonge ? toutes les références changent ?

    Est que la mise en couleur d'une série sur deux peut aller ?

    On peut essayer par VBA mais il faut connaître la structure de ton fichier : postes un exemple de ton fichier (allégé, une centaine de lignes suffiront) sur cjoint.com, fais créer un lien, copies le et reviens le coller ici dans un prochain message

    0
    1. agathe182 Messages postés 49 Statut Membre
       
      La colonne peut se rallonger effectivement, mais la base de ce fichier est une extraction de données de SAP. Le but étant de minimiser les actions manuelles.
      Oui une ligne sur deux suffirait largement !

      Malheureusement je ne peux pas poster mon fichier en ligne au risque de me faire taper sur les doigts...
      0
      1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759 > agathe182 Messages postés 49 Statut Membre
         
        Ne postes pas l'original bien sûr mais une copie avec des données bidons à la même place que les vraies données (feuille, colonne, cellules) pour pouvoir établir une macro
        Il ne te restera plus après qu'à faire un copier-coller de la macro dans ton vrai fichier
        0
    2. agathe182 Messages postés 49 Statut Membre
       
      Ca m'a pris plus de temps pour changer les données que j'aurais cru :)

      Voilà le fichier http://www.cjoint.com/c/FHyoEGwSYOM et merci pour ton aide.
      0
    3. agathe182 Messages postés 49 Statut Membre
       
      C'est pour la colonne E que je voudrais faire la différence parce que la suite de code n'est pas très claire...
      0
  3. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Re

    Voilà
    http://www.cjoint.com/c/FHypo5q6zW6

    Le fichier comporte 2 macros, l'une pour mettre la colonne E en couleur une série sur 2, l'autre pour annuler la mise en couleur
    Pour lancer l'une ou l'autre aller dans le ruban à Developpeur - Macros , selectionner la macro puis Executer

    Faire ALT+F11 pour ouvrir l'éditeur VBA et voir les macros

    Pour mettre les macros dans ton fichier :

    Ouvrir ton fichier en même temps que ce fichier exemple
    Dans ton fichier ALT+F11 pour ouvrir l'éditeur VBA puis Insertion - Module

    Aller dans l'éditeur VBA du fichier exemple, copier les lignes des macros et les coller dans la page blanche qui s'est ouverte dans ton fichier quand tu as crée le module et fermer l'éditeur VBA

    Cdlmnt
    Via
    0
    1. agathe182 Messages postés 49 Statut Membre
       
      Je te remercie énormément, je teste ça demain matin :)
      0
  4. agathe182 Messages postés 49 Statut Membre
     
    Au final je n'ai jamais réussi à exploiter le document que tu m'as envoyé VIA.

    J'ai ça :

    Public Sub ChangerCoulSKU()

    Dim pl As Range 'déclare la variable pl
    Dim i As Integer
    Dim Derniereligne As Integer

    Derniereligne = Range("I100000").End(xlUp).Row
    For i = 3 To Derniereligne

    Worksheets("Launch Tracker").Activate

    'définit la variable pl(ici toutes les cellules éditées de la colonne A)
    Set pl = Worksheets("Launch Tracker").Range("I3:I" & Range("I65536").End(xlUp).Row)

    coul = 3 ' mais ce n'est qu'une histoire de goût

    If Cells(i, "I").Text = Cells(i + 1, "I").Text Then 'condition : si les cellules sont identiques
    Cells(i, "I").Interior.ColorIndex = coul 'colorie la cellule cel1
    Cells(i + 1, "I").Interior.ColorIndex = coul 'colorie la cellule cel2 avec la même couleur
    End If 'fin de l a condition

    Next i 'prochaine cellule de la boucle 2
    coul = coul + 1 'change de couleur
    End Sub


    Mais le changement de couleur ne se fait pas.. Est-ce parce que je n'ai pas défini suffisemment de variables ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Agathe

    1) Tu actives une feuille mais tu ne fais pas forcément effectuer les actions sur cette feuille
    2) la variable pl ne sert à rien
    3) le changement de couleur doit se faire dans la boucle et pas après

    Pour faire plus simple si tu veux changer de couleur à chaque ligne différente de la précédente la macro serait plutôt quelque chose comme ça :

    Public Sub ChangerCoulSKU()
    
     Dim pl As Range 'déclare la variable pl
     Dim i As Integer
     Dim Derniereligne As Integer
      coul = 2 'pour que la 1ere couleur utilisée soit en fait la 3
     With Worksheets("Launch Tracker") 'avec cette feuille faire les actions qui suivent et qui sont précédées d'un .
     .Activate
     Derniereligne = .Range("I10000").End(xlUp).Row ' dernire ligne remplie
     
     For i = 3 To Derniereligne  ' boucle de la ligne 3 à la dernière
    
     'condition : si la cellule n'est pas identique à la précédente on change de couleur
     If .Cells(i - 1, "I").Text <> .Cells(i, "I").Text Then coul = coul + 1
     
     'puis on colorie la cellule
     .Cells(i, "I").Interior.ColorIndex = coul
    
     Next i 'prochaine cellule de la boucle
     
     End With ' fin du With
    
     End Sub


    Cdlmnt
    Via
    0
    1. agathe182 Messages postés 49 Statut Membre
       
      Bonjour Via,
      Je viens de me rendre compte que je ne t'avais jamais répondu.
      Je te remercie la solution fonctionne parfaitement.
      Cdlt,
      Agathe
      0