MFC sur cellules identiques d'une même colonne

Résolu/Fermé
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016 - 24 août 2016 à 14:38
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016 - 15 sept. 2016 à 09:37
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
A voir également:

5 réponses

via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
24 août 2016 à 14:55
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
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
24 août 2016 à 15:15
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
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
24 août 2016 à 15:47
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
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
24 août 2016 à 15:51
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
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734 > agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
24 août 2016 à 16:04
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
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
24 août 2016 à 16:32
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
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
24 août 2016 à 16:34
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
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
24 août 2016 à 17:20
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
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
24 août 2016 à 17:31
Je te remercie énormément, je teste ça demain matin :)
0
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
2 sept. 2016 à 11:43
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

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

Posez votre question
via55 Messages postés 14495 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 7 novembre 2024 2 734
2 sept. 2016 à 14:17
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
agathe182 Messages postés 49 Date d'inscription mercredi 24 août 2016 Statut Membre Dernière intervention 26 septembre 2016
15 sept. 2016 à 09:37
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