MFC en VBA ligne par ligne

Bonjour à tous et merci beaucoup de vos lumières,

Sous Excel 2000 (oui oui, ça existe encore ), ayant utilisé les 3 mfc disponibles, j'aurais besoin de 2 autres en macro, si c'est possible, et je n'y connais rien pour l'instant.

Sur une ligne,je veux colorer des cellules qui se trouvent dans plusieurs champs et qui ont les mêmes valeurs que deux cellules de référence se trouvant sur la même ligne et ceci pour chaque ligne.

Les cellules de référence sont toujours dans les mêmes colonnes mais les valeurs changent à chaque ligne.

Ceci pour les lignes 14 à 1000, sur trois pages et dans des champs différents.

Je souhaiterais également quelques explications afin de comprendre les lignes de code si possible.

Je joint un fichier allégé pour une meilleure compréhension.

Merci beaucoup et Bonne journée.

19etude-valeurs.xls (18.50 Ko)

Bonsoir,

quitte à passer par VBA pourquoi ne pas faire les 5 conditions de couleur ?

Alors quelles sont les trois autres couleurs ?

@ bientôt

LouReeD

un essai avec comme couleur les couleurs qui se trouvent en entête de colonne, comme cela pas besoin de connaître le code couleur, il suffit de prendre la couleur de la cellule.

La mise en couleur se fait lors d'un changement de valeur d'une cellule de la feuille, après il est possible de le mettre "sur ordre" avec un bouton.

@ bientôt

LouReeD

24etude-valeurs.zip (11.25 Ko)

Merci LouReeD,

Je vais regarder ce que tu m'as concocté,

je ne connais pas du tout le VBA,, je découvre excel depuis quelques temps.

J'ai donc commencé avec trois valeurs et mettais les autres couleurs manuellement.

Sinon, les couleurs sont, dans l'ordre de mes colonnes de référence:

rouge, orange, jaune, vert, bleu.

Les cellules de référence ne sont pas en couleur mais si ça peut aider, je peux le faire sans problème.

Je te tiens au courant en fin de semaine,

Bonne soirée et merci encore.

Calou85

Bonsoir,

le fait de "créer" des cellules de références avec les couleurs c'est une façon de ne pas se compliquer avec les index, et en plus le jour où vous voulez modifier les couleurs, il suffit de changer les couleurs de ces cellule et nul besoin de retoucher au code VBA...

@ bientôt

LouReeD

Re-bonsoir,

Je viens de jeter un oeil sur ce que vous m'avez envoyé, c'est tout à fait ce que je recherche, c'est génial.

J'étudierai la macro à tête reposée pour pouvoir l'adapter à mon tableau et avec les cinq couleurs. (enfin, je vais essayer, ce qui me permettra d"apprendre).

Je ne clôture pas encore le sujet, au cas où je serais perdu.

Merci beaucoup.

Calou85

Mais de rien,

bonne fin de soirée et @ bientôt

LouReeD

Bonsoir à tous,

La solution proposée par LouReeD fonctionne très bien .

Mais lorsqu'on efface les valeurs, les couleurs restent et je me suis retrouvé avec toutes les cellules non concernées de la ligne passées en bleu. Ceci parce que j'ai voulu tester en changeant les valeurs sur la même ligne. Peut- être un bug qui vient d'ailleurs.

De toute façon, cela me convient parfaitement car je n'ai pas à modifier les valeurs inscrites.

Encore merci et Bon Week-end.

Calou85

Bonsoir,

merci pour les mercis malgré le petit désagrément de fonctionnement

Ceci dit ce n'est pas bon dans le temps de s'accommoder d'une solution un peu boiteuse...

C'est pourquoi je vous livre cette version deux, qui met à jour les couleurs que les valeurs soient effacées ou modifiées dans le tableau de gauche ou ceux de droites !

@ bientôt

LouReeD

Bonsoir,

une version qui met à jour automatiquement les couleurs même après un changement des couleurs de référence... soit quand on sort de la cellule, mais tout de même, c'est mieux qu'un malheureux bouton...

@ bientôt

LouReeD

Bonjour,

Merci pour les évolutions ,

la version 3 est-elle une évolution de la 2 ou est-elle différente , je n'ai pas très bien compris la différence , je vais regarder les 2.

Bonne soirée.

Calou85

Re bonsoir,

Ma feuille étant plus compliquée que le modèle que j'ai fourni, il y a plusieurs tableaux qui se succèdent et je ne vois pas comment intégrer les différents sauts entre les tableaux.

Je joint le code de la première mouture que j'ai adaptée à ma feuille, où tout est inscrit.

Merci pour votre patience.

Bonne soirée

Une chose à la fois,

la version 3, n'est utile que si vous avez des couleurs de référence comme je l'ai fait sur mon fichier. Les différents codes associés permettent de détecter un changement de ces couleurs une fois qu'on quitte la cellule. Si il y a changement alors la feuille se met à jour avec les nouvelles couleurs, s'il n'y a pas de changement alors rien ne se passe.

Ensuite vu votre code txt, je m'aperçois qu'il y a beaucoup de tableaux. Vous est-il possible sur la colonne de droite du dernier tableau et pour chaque ligne inscrire une donnée de type "fin" ?

Car plutôt de gérer un saut de colonnes, il serait alors plus simple de faire une boucle indéfinie sur la première ligne et de s'arrêter quand on trouve la valeur "fin". Tout comme on fait sur les lignes...

Alors ? Est-ce possible .

@ bientôt

LouReeD

Bonjour,

Oui, il m'est possible de rajouter une colonne avec une donnée de type "fin" mais je dois vous préciser que dans les espaces entre les tableaux se trouvent d'autres tableaux qui répertorient les valeurs trouvées par ligne, cela peut peut-être perturber la boucle.

Merci,

Calou85

Bonjour,

alors la solution serait une ligne (la 1) masquée, avec comme info des 1 par exemple sur le colonne où il faut faire le test des couleur, rien si c'est une colonne autre que le test des couleur, et fin pour dire qu'il n'y a plus rien après.

Vous pourriez profiter de cette ligne pour "cacher" les cellules de couleur de références. Une fois la ligne masquée, votre tableau serait comme à son habitude...

Reste à savoir si cette ligne supplémentaire est possible

@ bientôt

LouReeD

Bonsoir,

C'est possible pour la ligne1, 8)

Merci pour tout ce travail,

Bonne soirée

Calou85

Bon et bien voilà,

le principe :

il y a deux façon de mettre les couleurs à jour :

la première :

lors du changement d'une valeur quelconque sur la feuille, la macro couleur est lancée.

la deuxième :

lorsque vous sélectionnez une des cellule des couleurs de référence, et que vous la quittez alors la macro couleur est lancée également. Pourquoi cette possibilité ? Afin de mettre à jour les couleurs des tableaux suite à une modification d'une des couleurs de référence.

Le hic :

la macro couleur efface toutes les couleurs de la feuilles à défaut de connaître la taille exacte de la zone des tableaux. Ensuite, comme on a mit en mémoire la valeur des couleurs de référence, on les recrée puis on poursuit la mise en couleur...

Cette partie sera peut-être à modifier, suivant l'utilisation que vous faites des couleurs sur votre feuille

Une fois les couleurs de références choisies et les colonnes de test déterminées à l'aide de 1 ou de rien puis la fin de zone avec le mot, il ne vous reste plus qu'à masquer la première ligne !

Voilà, @ bientôt

LouReeD

Bonjour,

Désolé, pas eu trop de temps cette semaine ,

Bah oui bien sur , j'ai des couleurs partout.

Maintenant, ça devient un peu compliqué pour moi, je pense que je vais adapter la version 2 vu que les couleurs de référence ne changeront pas, en mettant les tableaux sur plusieurs feuilles, en les regroupant par importance et peut-être en supprimer.

Je suis pour l'instant dans la phase de création, donc tout changement intéressant peut être possible.

Merci pour toute cette réflexion,

Bon week-end

@Bientôt

Calou85

Bonjour,

Evidemment cela aurait été trop simple !!!

Après si les tableaux à coloriser ne "bouge" pas trop, on pourrait les nommés, une fois nommés on y accède par leur nom, et du coup on peut peut-être grâce à cela supprimer les couleurs que sur eux... Faut voir

Et bienvenue dans le club des "@ bientôt"

@ bientôt

LouReeD


En fait ça marche...

Reste à voir si on peut créer une boucle sur le nom des tableaux nommés pour éviter d'avoir autant de :

[Tab_1].Cells.Interior.Color = -1

Il faudrait pouvoir mettre le "1" en variable et de l'intégrer dans une boucle du type

For I=1 to 4

[Tab_I].Cells.Interior.Color = -1

Next I

En fait il suffit de remplacer le nom du tableau nommé par l'équivalent de la sélection de la zone représentant le tableau nommé !

Donc :

For I=1 to 4

Range("Tab_" & I).Cells.Interior.Color = -1

Next I

voir la version 5 du fichier !

@ bientôt

LouReeD

Bonjour,

J'ai réussi à sélectionner les tableaux et à les nommer,( en deux fois car je n' ai jamais pu tout sélectionner ensemble, à chaque fois les deux derniers étaient refusés .). donc, j'ai écrit:

For i = 1 To 4

Range("Couleur, Couleur2").Cells.Interior.ColorIndex = 40 ma couleur de fond.

Par contre, régulièrement , les couleurs de référence, ligne 1, et, bien sûr, les couleurs des cellules concernées passent au noir .

Bug ou virus?, l'antivirus n'a rien trouvé.

Sinon, tout va bien

@bientôt

Rechercher des sujets similaires à "mfc vba ligne"