Compter et identifier chaques éléments d'une colonne

Bstn -  
 Maurice -
Bonjour,

J'ai une colonne couleur avec trois possibilitées (bleu, vert, rouge). A coté de cette colonne j'aimerai pouvoir compter les éléments et les indexer sous la forme B001 pour le premier élément bleu rencontré, V012 pour le douzieme élément vert rencontré et ainsi de suite.
Quelqu'un a-t-il une idée pour coder ceci?

Merci d'avance

6 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

    essaies ceci
    D5=SI(C5="bleu";"B" & TEXTE(NB.SI($C$4:C5;"bleu");"000");SI(C5="vert";"V" & TEXTE(NB.SI($C$4:C5;"vert");"000");SI(C5="rouge";"R" & TEXTE(NB.SI($C$4:C5;"rouge");"000"))))
    à tirer vers le bas

    Cdlmnt
    1
    1. Bstn
       
      Merci pour ta formule, elle marche très bien, j'ai réussi à le faire assez facilement sous forme de formule, mon problème c'est que je dois le développer sous forme de macro et comme je ne suis pas a l'aise avec le VBA j'ai du mal. En gros si t'arrives à trouver un truc similaire mais en VBA c'est super
      0
  2. Bstn
     
    Pour info, mon idée de départ est de créer un compteur intermédiaire pour chaque élément et de l'incrémenter.
    Un truc dans ce genre:
    i=3, v=0, r=0, b=0
    Si Ci = Vert Then v=v+1
    Si Ci = Rouge Then r=r+1
    Si Ci = Bleu Then b=b+1
    i=i+1
    0
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Toujours mettre un fichier de travail.
    On ne sait pas si c'est le mot "bleu"?
    Une couleur mise manuellement ? par MFC ? Le texte ? le fond ? Les plages concernées ? Etc
    cjoint.com et coller ici le lien fourni.
    eric
    0
    1. Bstn
       
      http://cjoint.com/?3Cfq7yBbbC5

      c'est un fichier dans lequel je rentre la date de réception d'une pièce ainsi que sa couleur et je veux généré automatiquement en fonction de la couleur un code unique pour cette pièce
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    mon problème c'est que je dois le développer sous forme de macro et comme je ne suis pas a l'aise avec le VBA j'ai du mal.
    Est ce que tu veux
    1. une fonction à utiliser dans la feuille, quelque chose du genre
    D5 = MAJCompteur(C5)
    2. une procédure à exécuter une seule fois pour mettre à jour
    - soit toute la colonne C en un coup
    - soit compléter la cellule Dxx dès que la cellule Cxx est remplie
    0
    1. Bstn
       
      Je cherche une procédure permettant de compléter la cellule Dxx dès que la cellule Cxx est remplie puisque mon tableau n'est pas finis et que je rajoute des lignes
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Maurice
     
    Bonjour
    Voila un macro
    a toi de modifier comme tu veux
    Sub Couleur()
    V = 0
    R = 0
    B = 0
       For L = 5 To Range("B" & Rows.Count).End(xlUp).Row
          Select Case UCase(Cells(L, 3).Value)
             Case "VERT"
                V = V + 1
                Cells(L, 4).Value = "V" & Format(V, "000")
             Case "ROUGE"
                R = R + 1
                Cells(L, 4).Value = "R" & Format(R, "000")
             Case "BLEU"
                B = B + 1
                Cells(L, 4).Value = "B" & Format(B, "000")
          End Select
       Next
    End Sub
    

    A+
    Maurice
    0
    1. Bstn
       
      ça a l'air pas mal, je vais travailler dessus, merci de ton aide
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    A mettre dans le module de la feuille à traiter
    Modifier les valeurs des constrantes selon ta config

    Const cocoul = "C"
    Const cocode = "D"
    Const lideb = 5
    
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim plage As Range, li As Long, coul As String, nbcoul As Long, F As String
    If Not Intersect(Target, Columns(cocoul)) Is Nothing Then
      li = Target.Row
      Set plage = Range(cocoul & lideb & ":" & cocoul & li - 1)
      coul = Target.Value
      F = UCase(Left(coul, 1))
      nbcoul = Application.WorksheetFunction.CountIf(plage, coul)
      Range(cocode & li).Value = F & Format(nbcoul + 1, "000")
    End If
    End Sub

    Cdlmnt
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      J'ai oublié de préciser que la maj de Cxx entrainera celle de Dxx

      Salutations à Maurice au passage
      0
      1. Maurice > ccm81 Messages postés 11033 Statut Membre
         
        Bonsoir ccmB1
        a toi aussi
        bon moi je ferme dodo
        A+
        0
    2. Bstn
       
      Merci, je vais essayer de voir si j'y arrive en me servant de ça. Encore merci pour ton aide
      0