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

Macros et VBA Excel Discussion :

Colorier les cellules qui ont les mêmes lignes VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut Colorier les cellules qui ont les mêmes lignes VBA
    Bonjour chers experts,

    S'il vous plaît si quelqu'un pourra m'aider à réaliser ce besoin vu ma très humble connaissance en VBA.

    En fait, j'ai un tableau qui contient un ensemble de produits distribués selon leur processus: a,b,...i

    Mon objectif c'est de pouvoir rassembler les produits qui passent par le même processus et de changer la couleur à chaque fois que l'algorithme de la macro trouve un nouveau groupement, afin de construire à la fin un groupement de famille de produits.

    N.B: Notre output sera un ensemble de familles et du coup, au départ on ne sait pas le nombre de familles qu'on possède. Par conséquent, on ne pourra pas déterminer au départ le nombre de couleurs à utiliser.
    Nom : nmb.PNG
Affichages : 757
Taille : 17,8 Ko

    Je vous remercie pour votre collaboration

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Tes lignes 19 et 20 de la colonne A ne sont pas coloriées en rouge. Qu'est-ce qui les différencie des lignes 3 et 4 ? (c'est un oubli de ta part ou y-a-t-il une raison et si oui : laquelle ?) ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 113
    Points : 57
    Points
    57
    Par défaut
    Bonsoir unparia,

    Oui , en fait c'est un oubli . je voulais juste faire exemple

    Ci joint le fichier
    Colors.xlsx

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Ligne étant la plage d'une ligne de données avec des cellules avec 1 et d'autres vides :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each c In ligne
     titi = titi + (c.Column * c.Value) + ligne.SpecialCells(xlCellTypeConstants).columns.Count
    Next
    te retourne un chiffre unique qui ne peut correspondre qu'à ce type (mêmes colonnes avec 1 et mêmes colonnes vides)
    Travaille sur cette base (entre autres possibles)

    Regarde par exemple à quoi tu pourrais utiliser ceci :
    Une fonction personnalisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Function determ(ligne As Range) As Integer
      For Each c In ligne
       determ = determ + (c.Column * c.Value)
      Next
      determ = determ + WorksheetFunction.Sum(ligne)
    End Function
    Tu utilises ensuite cette fonction (comme une formule) dans la colonne suivant la dernière possible puis tu la tires vers le bas autant que nécessaire
    Supposons que tu aies choisi la colonne F : y figureront des numéros. Ces numéros seront identiques pour des "configurations" identiques.
    Le reste vient seul (attribution d'une couleur en fonction du résultat obtenu), mais j'espère que tu n'as pas un grand nombre de configurations différentes pour des raisons évidentes (difficile de distinguer visuellement une couleur de l'autre, lorsqu'elles sont proches).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    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
    Une solution simple, sans If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub FamCoul()
       Dim Y as Long
       For Y = 2 To Range("A2").End(xlDown).Row
          Cells(Y,1).Interior.Color = RGB(Cells(Y,2) * 85 + Cells(Y,3) * 170 + Cells(Y,4) * 256, _
                                          Cells(Y,5) * 85 + Cells(Y,6) * 170 + Cells(Y,7) * 256, _  
                                          Cells(Y,8) * 85 + Cells(Y,9) * 170 + Cells(Y,10) * 256)
        Next Y
    End Sub
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/10/2014, 15h18
  2. [XL-2003] masquer les colonnes dont toutes les cellules VISIBLES ont leur valeur="N"
    Par sylvaine dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 04/03/2011, 11h57
  3. Regrouper les cellules qui ont un contenu identique
    Par Iloon dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 16/01/2008, 14h26
  4. Réponses: 3
    Dernier message: 20/01/2007, 19h09
  5. supprimer les fichiers qui ont des mêmes noms
    Par manaboko dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2006, 09h09

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