IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Détection de changement de couleur dans cellule avec multiple conditions


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Détection de changement de couleur dans cellule avec multiple conditions
    Bonjour à tous

    J’ai un tableau simple avec des valeurs fixe dans chaque cellule,
    et sur ce tableau j’ai fait plusieurs macros qui sélectionne des cellules
    par un remplissage de couleurs( ici en rouge) selon les données qui me sont fourni au
    fur et à mesure.

    Ce que j’aimerais arriver à faire, c’est de mettre une couleur dans la ou les cellules restante
    sur une ligne ou une colonne, ou en diagonale .
    Exemple :

    Nom : exemple.jpg
Affichages : 1329
Taille : 134,0 Ko

    condition de couleur.xlsx


    J’ai bien pensé à utiliser les Mise en forme conditionnelle avec SI et OU, mais j’ai l’impression
    que la détection de changement de couleur n’est pas possible.
    Ou alors sous forme de macro, mais je suis dans le flou le plus total pour appliquer
    un code qui détecte le changement de couleur d’une cellule et d’ajouter des conditions par la même occasion.


    Merci d’avance pour votre aide

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Ton explication n'est pas claire.
    Est-ce que ce que tu souhaites est de mettre en couleur la cellule symétrique lorsque tu passes une cellule en rouge ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Bonjour Menhir , désolé de n’avoir pas était clair dans ma demande , et merci d’avoir jeté un œil sur mon sujet.

    Je vais redonner des exemples plus explicites

    Nom : tableau 1 et 2.jpg
Affichages : 1222
Taille : 220,6 Ko

    Dans le tableau 1 c’est le cas de figure que je peux rencontrer actuellement lors du remplissage, qui s’effectue au fur et à mesure par le biais d’une macro.
    On observe sur la première ligne que la cellule «3» est la seul à ne pas être colorier en rouge,
    sur la deuxième colonne on observe que la cellule « 8 » et elle aussi la seul à rester sur cette colonne
    on observe les même chose sur la diagonale qui va du « 31 » au « 6 », que le « 16 » n’est pas colorier en rouge, et sur la diagonale qui va du « 4 » au « 18 », que le « 18 » n’est pas colorier en rouge .
    Sur le tableau 2, c’est ce que j’aimerais faire. C’est-à-dire que lorsque une cellule non colorier en rouge, mais qui se situe sur une ligne, ou une colonne, ou une diagonale, que cette cellule se colorie en vert automatiquement.

    Je vais aller plus loin en donnant un exemple pour la cellule « 8 ».

    Nom : tableau 3,4,5,6.jpg
Affichages : 1344
Taille : 247,3 Ko

    Sur les tableaux 3, 4, 5, 6, ce sont mais conditions pour que la cellule « 8 » passe en VERT.

    Donc ce qu’il me faut est de détecter les cellules qui passent en rouge, et des lors qu’une condition ou plus, sont réuni, alors la cellule « 8 » ce colorie en VERT


    Voilà, je pense avoir était plus clair sur ce que je veux faire.
    En regardant quelque que tuto sur les Mise en formes conditionnelle, je ne pense pas trouvé mon bonheur la dedans. (Peut être que je me trompe)

    Alors je me tourne vers une solution en VBA , mais la ca va etre chaud , car je n’ai pas de base solide ,mais tout s’apprend !!

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    C'est beaucoup trop compliqué pour une mise en forme conditionnelle, même si, en théorie, c'est possible.

    Pour ce qui est du VBA, ça ne pose pas de problème technique.
    Il suffit juste de savoir détecter la couleur d'une cellule et la modifier. Ca se fait avec Cells(X,Y).Interior.ColorIndex, en remplaçant le X,Y par les coordonnées de la cellule.
    Ensuite, il faut savoir faire des boucles. Pour ça, on utilise l'instruction "For to".
    Techniquement, ça ne va pas beaucoup plus loin.

    Par contre, ton problème est avant tout un problème d'algorithme. Indépendamment du langage utilisé, il va falloir que tu rédiges les règles de calcul de ton processus.
    Pour ça, il suffit juste de se triturer les méninges.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Salut Menhir ! Merci de ta réponse encore une fois.

    Pour ce qui est du codage et des instructions, il va falloir que je mange des tutos à la pelle, car je n’ai vraiment aucune notion.
    Et à propos de la rédaction de l’algorithme, ma première vision était de donné 3 ou 4 quatre conditions pour chaque cellule à passer en vert, mais je m’aperçois que cela va représenter un code très long.
    Donc je me suis poser le problème à l’envers, c’est-à-dire de rechercher la dernière cellule en blancs sur chaque ligne, colonne et diagonale, je pense que ça va alléger le processus du codage et de recherche.

    Par la même occasion, si tu as des conseils à donner pour bien débuter en VBA et même comment bien rédiger un algorithme, je suis preneur …

    Merci

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par neoxod Voir le message
    Et à propos de la rédaction de l’algorithme, ma première vision était de donné 3 ou 4 quatre conditions pour chaque cellule à passer en vert, mais je m’aperçois que cela va représenter un code très long.
    Donc je me suis poser le problème à l’envers, c’est-à-dire de rechercher la dernière cellule en blancs sur chaque ligne, colonne et diagonale, je pense que ça va alléger le processus du codage et de recherche.
    Utilise la puissance brutale de l'informatique.

    J'ai un pote qui a voulu faire un programme en VBA pour résoudre des Sudoku, avec un algorithme sur le principe de la façon qu'à un humain de le résoudre. Au bout d'une semaine, il n'avait toujours rien de satisfaisant.
    J'ai essayé la même chose en plus brutal : tester toutes les combinaisons possibles. Mon programme écrit en 2 heures résout n'importe quel sudoku en moins de 10 s.
    C'est pour dire que lorsqu'on fait de la programmation, il ne faut pas toujours penser à reproduire la réflexion humaine.

    Dans ton cas, tu devrais scruter toutes les colonnes, puis toutes les lignes, puis toutes les diagonales.
    Dans chacune, tu comptes le nombre de rouges et tu vérifies s'il en manque 1.
    Y-a pas à aller chercher plus loin.

    Par la même occasion, si tu as des conseils à donner pour bien débuter en VBA
    Tu te trouves un tutoriel de base qui puisse t'apprendre les structures élémentaires : les variables, les tests, les boucles, les objets.

    Ensuite, tu utilises l'aide intégrée VBA Excel qui pourra résoudre 90% de tes problèmes.
    Et, pour t'aiguiller sur le bon chemin, tu pourras utiliser l'enregistreur automatique de macro qui pourra t'indiquer quels objets sont utilisés pour faire tels actions.

    Commence déjà par regarder dans l'aide VBA ce que j'ai indiqué dans mon précédent message.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Candidat au Club
    Homme Profil pro
    ouvrier
    Inscrit en
    Juillet 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : ouvrier
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Salut Menhir, bon je suis arrivé à faire ce que je veux, mais je pense que ce n’est pas la meilleure façon de faire.
    Je me suis fait un mini tableau pour m’exercer, avec une macro qui sélectionne les cellules en rouge et une autre macro
    avec toutes les conditions pour que la cellule numéro 1 passe en Vert.

    Pour le test, j’ai fait la macro juste pour le numéro 1.

    Je mets le code ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    Sub changementdecouleur()
     
     
                'changement de couleur num 1 en vert si num 2 et 3 sont rouge et num 1 est blanc
     
            If Range("table1").Cells(1, 3).Interior.ColorIndex = 3 And Range("table1").Cells(1, 2).Interior.ColorIndex = 3 And Range("table1").Cells(1, 1).Interior.ColorIndex = 2 Then
                Range("table1").Cells(1, 1).Interior.ColorIndex = 4
     
     
     
                End If
     
                'changement de couleur num 1 en vert si num 4 et 7 sont rouge et num 1 est blanc
            If Range("table1").Cells(2, 1).Interior.ColorIndex = 3 And Range("table1").Cells(3, 1).Interior.ColorIndex = 3 And Range("table1").Cells(1, 1).Interior.ColorIndex = 2 Then
                Range("table1").Cells(1, 1).Interior.ColorIndex = 4
     
                End If
     
     
                'changement de couleur num 1 en vert si num 5 et 9 sont rouge et num 1 est blanc
            If Range("table1").Cells(2, 2).Interior.ColorIndex = 3 And Range("table1").Cells(3, 3).Interior.ColorIndex = 3 And Range("table1").Cells(1, 1).Interior.ColorIndex = 2 Then
                Range("table1").Cells(1, 1).Interior.ColorIndex = 4
     
                End If
     
    End Sub


    Dis-moi ce que tu en pense ?

  8. #8
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je te conseille de créer une variable (nommée "compteur" par exemple).

    Tu l'utilises pour compter le nombre de cases rouges dans l'ensemble de cellules que tu scrutes.
    Si ce nombre est égal au (maximum-1), c'est qu'il y a un vide.

    Pour calculer ce compteur, utilise des boucles For to (voir la syntaxe dans l'aide VBA).

    Par exemple, pour scruter les colonnes une par une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Colonne = 1 to 5
        Compteur = 0
        For Ligne = 1 to 5
            if Cells(Ligne, Colonne).Interior.ColorIndex = 3 then Compteur = Compteur + 1
        Next Ligne
        If Compteur = 4 then Debug.Print "J'ai trouvé la colonne ";Colonne;" !!!"
    Next Colonne
    Essaye de comprendre ce petit code, d'y ajouter le code qui change la couleur et de l'adapter pour les lignes (facile) et pour les diagonales (plus compliqué).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. changement de couleur dans un logic iterate
    Par mat453 dans le forum Struts 1
    Réponses: 6
    Dernier message: 17/08/2007, 17h54
  2. changement de couleur en rapport avec un champ
    Par yannzool dans le forum IHM
    Réponses: 42
    Dernier message: 13/03/2007, 17h12
  3. Réponses: 1
    Dernier message: 07/05/2006, 16h33
  4. Excel: Comment créer un degradé de couleurs dans cellules?
    Par Turlututuh dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/12/2005, 00h04
  5. Changement de couleur dans les cellules d'un tableau
    Par allowen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/11/2005, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo