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 -
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
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:
- MFC sur cellules identiques d'une même colonne
- Déplacer une colonne excel - Guide
- Comment trier une colonne sur excel - Guide
- Colonne word - Guide
- Comment figer une colonne sur excel - Guide
- Formule somme excel colonne - Guide
5 réponses
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
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
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
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
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...
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...
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
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
Au final je n'ai jamais réussi à exploiter le document que tu m'as envoyé VIA.
J'ai ça :
Mais le changement de couleur ne se fait pas.. Est-ce parce que je n'ai pas défini suffisemment de variables ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 :
Cdlmnt
Via
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
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 ?