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 :

Remplir colonne en fonction de critères de plusieurs colonnes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut Remplir colonne en fonction de critères de plusieurs colonnes
    Bonjour,

    Je m'arrache les cheveux à trouver une macro pre-faite pour résoudre le problème suivant.
    J'ai le tableau ci-dessous. Je cherche à remplir la colonne "Couleur ID" en tenant compte de plusieurs critère: la saison, le code article et la couleur.

    Saison Client Code article Code couleur Quantité Couleur ID
    F16 A HA2201 noir 22
    F16 B HA2201 noir 12
    F16 C HA2201 noir 3
    F16 A HA2201 bleu 30
    F16 B HA2201 vert 23
    F16 B LO3201 jaune 9
    F16 C LO3201 jaune 5
    F17 A HA2201 noir 21
    F17 A HA2201 vert 50
    F17 B HA2201 vert 23
    F17 C TR2206 jaune 45
    F17 D TR2206 rouge 67

    Ainsi, la macro devrait me donner le résultat suivant (le rouleur ID s'incrémente en fonction du nombre de couleur pour un code article par saison):


    Saison Client Code article Code couleur Quantité Couleur ID
    F16 A HA2201 noir 22 color#1
    F16 B HA2201 noir 12 color#1
    F16 C HA2201 noir 3 color#1
    F16 A HA2201 bleu 30 color#2
    F16 B HA2201 vert 23 color#3
    F16 B LO3201 jaune 9 color#1
    F16 C LO3201 jaune 5 color#1
    F17 A HA2201 noir 21 color#1
    F17 A HA2201 vert 50 color#2
    F17 B HA2201 vert 23 color#2
    F17 C TR2206 jaune 45 color#1
    F17 D TR2206 rouge 67 color#2

    Je pars du principe que mon tableau est toujours trié par saison, puis code article, puis code couleur
    Quelqu'un aurait une idée ?

    Merci!!!

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 432
    Par défaut
    Bonjour,

    Pour autant que le tri ait bien été réalisé, cela peut se faire par une formule, mais cette macro le fait aussi:
    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 CalculCouleur()
       Dim kR As Long, n As Long
       kR = 2
       n = 0
       While Cells(kR, 1) <> ""                           '--- 1 = colonne A
          If Cells(kR, 1) = Cells(kR - 1, 1) Then
             If Cells(kR, 3) = Cells(kR - 1, 3) Then      '--- 3 = colonne C
                If Cells(kR, 4) = Cells(kR - 1, 4) Then   '--- 4 = colonne D
                   '--- n ne change pas
                Else
                   n = n + 1
                End If
             Else
                n = 1
             End If
          Else
             n = 1
          End If
          Cells(kR, 6) = "color#" & n
          kR = kR + 1
       Wend
    End Sub
    Bonne continuation.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Avril 2017
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur VBA
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2017
    Messages : 122
    Par défaut
    la formule n'est pas si aisée à écrire je pense.


    J'utilise deux clés. En supposant couleur id en colonne f, cela fait cle1 en G (A&C&D), cle2 en H (A&C).
    Pour simplifié aussi, j'ai nommé les trois cellules en dessous du tableau pour ces trois colonnes finf, fing, finh.

    en f2 : taper "=SIERREUR(INDEX(F3:finf;EQUIV(G2;G3:fing;0));SIERREUR(INDEX(F3:finf;EQUIV(H2;H3:finh;0))+1;1))"


    a adapter pour inverser les sens si vous voulez des numéros croissants.




    En fait si, elle est simple puisque tout est trié : en f2
    si(a2=a1;si(c2=c1;si(d2=d1;f1;f1+1);1);1)


    tiens, tant que j'y suis, j'ai fait aussi l'adaptation :
    =SIERREUR(INDEX(F$1:F1;EQUIV(G2;G$1:G1;0));SIERREUR(INDEX(F$1:F1;EQUIV(H2;H$1:H1;0))+1;1))
    plus besoin de nommer des cellules

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Septembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Septembre 2014
    Messages : 2
    Par défaut
    Un grand merci Eric,
    Je viens d'essayer, c'est top!!!

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/04/2016, 07h31
  2. Réponses: 0
    Dernier message: 11/06/2014, 22h37
  3. Réponses: 2
    Dernier message: 19/02/2010, 14h14
  4. Réponses: 17
    Dernier message: 01/12/2008, 10h52
  5. [Excel] Somme avec critères de plusieurs colonnes
    Par trihanhcie dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/02/2007, 10h55

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