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 :

Cases de couleurs différentes si doublons multiples [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Par défaut Cases de couleurs différentes si doublons multiples
    Bonjour a tous
    Alors je ne sais pas si le titre est très explicite mais je m'explique.
    j'ai besoin pour le taf de faire en VBA
    de trouvé de trouver des référence identique sur plusieurs critères.
    c'est a dire toute les taille identique avec les mème couleurs et le même numéro ext...
    et si les critère sont identique sur plusieurs ligne que la dernière case soit d'une couleur différente pour tout les doublon différent.
    C'est a dire
    G + I + L + M + N + P est identique sur plusieurs ligne la case T doit être d'une couleur
    Et la couleur doit changé a chaque doublon différent.
    J’espère que c'est clair et pas trop compliqué à faire
    Merci à vous pour votre aide

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Exemple en PJ

    Boisgontier
    Fichiers attachés Fichiers attachés

  3. #3
    Expert éminent 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
    Par défaut
    Je n'ai pas très bien compris ta question mais j'ai l'impression que ça pourrait se régler sans VBA en utilisant un NB.SI (ou NB.SI.ENS) dans une règle d'une mise en forme conditionnelle.

  4. #4
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Par défaut
    Merci Menhir j'y est bien pensé mais je n'ai besoin de faire cela que ponctuellement à l'aide d'un bouton en fait.

    Merci aussi boisgontierjacques
    C'est exactement ce que je veut faire.
    Mais j'ai oublier de préciser que je suis débutant en VBA.
    Mais je vais essayer de me débrouiller avec sa.
    Sinon je revient vers vous.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Par défaut
    Re boisgontierjacques

    En parcourent ton site, j'ai trouver ce code que j'ai modifier selon mes recherche:

    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
    Sub DoublonsEntre2ColonnesCoulDiff()
      Set d = CreateObject("Scripting.Dictionary")
      couleurs = Array(3, 4, 6, 7, 8, 15, 17, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 50, 53)
      Set plage1 = Range("G3:G" & [g300].End(xlUp).Row)
      Set plage2 = Range("I3:I" & [i300].End(xlUp).Row)
      Union(plage1, plage2).Interior.ColorIndex = xlNone
      For Each C In plage1
         d.Item(C.Value) = d.Item(C.Value) & C.Row & "-"
      Next C
      For Each C In plage2
         If d.exists(C.Value) Then
           nocoul = (Application.Match(C.Value, d.keys, 0)) Mod UBound(couleurs)
           C.Interior.ColorIndex = couleurs(nocoul)
           a = Split(d.Item(C.Value), "-")
           For k = LBound(a) To UBound(a) - 1
             tmp = a(k) - plage1.Row + 1
             plage1(tmp).Interior.ColorIndex = couleurs(nocoul)
           Next k
         End If
       Next C
    End Sub
    Par contre il me mes une erreur sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nocoul = (Application.Match(C.Value, d.keys, 0)) Mod UBound(couleurs)
    Comment la corrigé?
    Et est ce possible d'ajouté des des plage de recherche en plus?
    Et comment faire pour ne mettre en couleur uniquement que les case de la colonne T correspondante au doublons?

    encore merci pour ton aide.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Il doit y avoir des celles vides.

    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
     
    Sub DoublonsEntre2ColonnesCoulDiff()
      Set d = CreateObject("Scripting.Dictionary")
      couleurs = Array(3, 4, 6, 7, 8, 15, 17, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44, 45, 46, 50, 53)
      Set plage1 = Range("G3:G" & [g300].End(xlUp).Row)
      Set plage2 = Range("I3:I" & [i300].End(xlUp).Row)
      Union(plage1, plage2).Interior.ColorIndex = xlNone
      For Each C In plage1
         If C.Value <> "" Then d.Item(C.Value) = d.Item(C.Value) & C.Row & "-"
      Next C
      For Each C In plage2
         If d.exists(C.Value) Then
           nocoul = (Application.Match(C.Value, d.keys, 0)) Mod UBound(couleurs)
           C.Interior.ColorIndex = couleurs(nocoul)
           a = Split(d.Item(C.Value), "-")
           For k = LBound(a) To UBound(a) - 1
             tmp = a(k) - plage1.Row + 1
             plage1(tmp).Interior.ColorIndex = couleurs(nocoul)
           Next k
         End If
       Next C
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  7. #7
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Par défaut
    En effet j'ai des cases vide par moment.
    J'ai fait la correction de code je n'ai plu d'erreur mais il ne se passe rien?
    Avez vous une solution?
    Merci

  8. #8
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Par défaut
    Bonsoir
    Alors en fait je me suis trompé de code

    C'est plutôt celui ci qu'il me faut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub GroupColor2CritèresColAColC()
      couleurs = Array(1, 3, 4, 6, 7, 8, 14, 15, 17, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, 37, 38, 39, 40, 42, 43, 44,    45, 46, 50, 53)
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range("a2", [a65000].End(xlUp))
        clé = c.Value & c.Offset(, 2)
        mondico.Item(clé) = mondico.Item(clé) + 1
      Next c
      For Each c In Range("a2", [a65000].End(xlUp))
        clé = c.Value & c.Offset(, 2)
        nocoul = (Application.Match(clé, mondico.keys, 0)) Mod UBound(couleurs)
        If mondico.Item(clé) > 1 Then c.Resize(, 4).Interior.ColorIndex = couleurs(nocoul)
      Next c
    End Sub

    Cela fonctionne bien sauf que j'ai besoin de faire la recherche sur 6 critère G + I + L + M + N + P
    et qu'il faudrait uniquement de la couleur dans la colonne T

    et la je n'y arrive pas de l'aide SVP

  9. #9
    Membre averti
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2017
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Janvier 2017
    Messages : 24
    Par défaut
    J'ai finalement réussie

    Voici le code pour ceux que ça intéresse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub GroupColor()
      couleurs = Array(3, 4, 5, 6, 7, 8, 10, 13, 14, 17, 22, 23, 25, 26, 27, 29, 33, 38, 39, 42, 43, 44, 46, 47, 49, 50, 53, 54)
      Set mondico = CreateObject("Scripting.Dictionary")
      For Each c In Range("B3", [b100].End(xlUp))
        clé = c.Value & c.Offset(, 2) & c.Offset(, 5) & c.Offset(, 6) & c.Offset(, 7) & c.Offset(, 9)
        mondico.Item(clé) = mondico.Item(clé) + 1
      Next c
      For Each c In Range("B3", [b100].End(xlUp))
        clé = c.Value & c.Offset(, 2) & c.Offset(, 5) & c.Offset(, 6) & c.Offset(, 7) & c.Offset(, 9)
        nocoul = (Application.Match(clé, mondico.keys, 0)) Mod UBound(couleurs)
        If mondico.Item(clé) > 1 Then c.Offset(, 13).Interior.ColorIndex = couleurs(nocoul)
      Next c
    End Sub
    Merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [FLASH MX] DataGrid ligne de couleur différente
    Par totoche dans le forum Flash
    Réponses: 4
    Dernier message: 15/09/2005, 10h40
  2. [Tableaux] ligne de couleurs différentes
    Par tom06440 dans le forum Langage
    Réponses: 4
    Dernier message: 22/08/2005, 15h31
  3. couleur différente d'un navigateur à un autre
    Par AMarco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/06/2005, 00h03
  4. TValueListEditor : Avoir des couleurs différentes par rangée
    Par Griswold dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/08/2004, 19h41
  5. Éléments de couleurs différentes dans un CheckListBox
    Par shogoune dans le forum Composants VCL
    Réponses: 5
    Dernier message: 12/06/2003, 20h17

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