Compteur excel

brahimkhalil Messages postés 11 Statut Membre -  
 brahimkhali -
bonjour
je vous demandes de m'aider pour avoir une macro qui resoud le probleme suivants
et merci d'avance

chaque fois que je rempli une cellule (Bn) de la colonne b
alors la cellule (Cn) juste a droite de la colonne C prend la valeur de la cellule de la colonne C repmli juste avant + 1

exemple :

b5 rempli alors c5=1
b7 rempli alors C7 = 2
B3 rempli alors C3 = 3
b56 rempli alors c56 = 4
c123 repli alors c123 =5

etc

7 réponses

  1. Gihef Messages postés 5165 Statut Contributeur 2 781
     
    Bon... ne nuit,
    Je crois que si j'avais à résoudre ce genre de problème, j'essaierais de m'en sortir avec une formule.
    Tu pourrais essayer d'en fabriquer une qui ferais :
    Si cellule dans colonne B n'est pas vide alors cellule active (de colonne C) = MAX de colonne active + 1 sinon rien.
    Quelque chose comme : =SI(ESTVIDE(B1);MAX(B1:B123) ;"")
    N'ayant pas Excel, je ne sais pas si ça fonctionne, mais ça peut être une piste.
    -1
  2. Gihef Messages postés 5165 Statut Contributeur 2 781
     
    Re,
    Enfin, plutôt Quelque chose comme : =SI(ESTVIDE(B1);"";MAX(C1:C123)+1)
    0
  3. Gihef Messages postés 5165 Statut Contributeur 2 781
     
    Re,
    Je viens d'avoir une idée plus simple.
    Il s'agit de compter le nombre de valeurs présentes dans la col. B puis de tester dans la col. C si la cellule voisine de la col. B n'est pas vide et, si c'est le cas, de faire =nombre de valeurs dans B.
    Du genre :
    dans C2 : =SI(ESTVIDE(B2);"";NBVAL(B1:B123))
    dans C13 : =SI(ESTVIDE(B13);"";NBVAL(B1:B123))
    etc.
    Tu vois ?
    0
    1. brahimkhali
       
      je te remerci de ta reponse

      mais mon probleme est que j'ai un tableau de plus de 20.000 lignes
      et que je doit remlir la colonne b d'une facon aleatoire suivantr une liste a chaque fois que je remli une cellule b la valeur de la cellule c ne doit plus changer comme ca je peut selectionner ma liste par ordre de remlissage et par ordre de la liste

      merci beaucoup de chercher encore pour moi une solution qui pourra m'aide
      0
  4. G.David Messages postés 790 Statut Membre 203
     
    Salut
    nbval(b1:b123) comptera le nombre de valeur emplissant les cellules de la zone B par contre une telle formule peche par le manque de dicernement imposé a excel la formule donnera la meme valeur dans toute la colonne C
    si(estvide(b2);"";nbval(B2:123))
    si B2 est non vide la valeur retournée sera le nombre total de case rempli dans B2:B123
    il faudrait peut etre mieux copié dans C2 la formule suivante
    =SI(estvide(B2);"";nbval($B$1:B2)-1
    le -1 sous entends que tu as mis un titre en B1 genre Articles
    la formule en C2 doit etre tiré vers le bas par contre si tu remplie la cellul B45 apres la cellule B47 la numerotation se refera a partir de B45 (si B47=8 b45 prendra la valeur 8 et B47 la valeur 9)
    Cordialement
    G.David

    le respect n'est pas un dû
    il se merite
    0
    1. brahimkhali
       
      merci de ta reponse

      mais la formule ne resout pas mon probleme

      si tu as une autre idee merci beaucoup de me la parvenir

      nb


      je ne suis pas tres fort en programmation
      0
    2. G.David Messages postés 790 Statut Membre 203
       
      Bon ce que tu veux ce n'est pas un compteur mais un indexage de tes cellule en b
      il faudra passer par une macro evenmentielle
      apres avoir mis en C1 la formule suivante : =max(C2:C20000)
      tu ouvres VBA
      par Alt + F11
      tu clic sur la feuille outu a mis ta formule dans l'explorateur de projet
      avec le bouton droit tu slectionne Worksheets et tu colles le code suivant:
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If ActiveCell.Offset(-1, 0) <> "" Then
      If ActiveCell.Offset(-1, 1) = "" Then
      ActiveCell.Offset(-1, 1) = Cells(1, 3).Value + 1
      End If
      End If
      End Sub

      Cordialement
      G.David
      0
      1. brahimkhali > G.David Messages postés 790 Statut Membre
         
        MERCI G. DAVID

        tu as raison pour l'indexage

        mais quand j'excute la macro j'ai un message d'erreur :

        erreur d'exeucution '1004'

        erreur defini par l'application ou par l'objet


        merci encore de ton aide precieuse
        0
      2. G.David Messages postés 790 Statut Membre 203 > G.David Messages postés 790 Statut Membre
         
        Curieux chez moi ça tourne . tu l'as nien coller dans le code de la feuille?
        Cordialement
        GDavid--
        le respect n'est pas un dû
        il se merite
        0
      3. brahimkhali > G.David Messages postés 790 Statut Membre
         
        BONJOUR G.david

        au debut sa marche impecable mais

        quant je rempli une cellule b et je decend d'une case en bas et a chaque fois si je me deplace avec les fleches a droite il rempli au fure et a mesure les cellules qui sont a droite de la derniere valeur de c

        en plus a chaque fois que je rempli une cellule n'importe ou dans le tableu il repmli automatiquement la cellule a droite

        et apres il affiche le message d'erreur :

        erreur d'execution '1004'

        et marci infiniment d'avence
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Gihef Messages postés 5165 Statut Contributeur 2 781
     
    Bonjour,
    En attendant de pouvoir le faire automatiquement, avec tout ce qui a été essayé, il te reste la possibilité de le faire à la main.
    Il te suffit d'avoir toujours sous les yeux le résultat de la cellule (p.ex. C1) où est la formule : NBVAL(B1:B123). Lorsque tu auras entré une nouvelle valeur dans B, la valeur de C1 augmentera de 1 après que tu auras pressé <TAB>. Inscris alors ce chiffre dans la cellule active.
    En attendant.
    0
  7. G.David Messages postés 790 Statut Membre 203
     
    essayes avec cici
    le principe est le même mais c'est bloqué sur les colonne b et c
    d'autre part tu doit toujours valider ta saisie en Colonne B par entree ou par la touchje fleche bas c'est a partir de la cellule du dessous que la macro teste les cellules remplies ou non .Attention si tu change une valeur en B la cellule C adjacente ne sera pas modifiée ( c'est la demande)
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim lg As Integer
    lg = ActiveCell.Row
    If Cells(lg - 1, 2) <> "" Then
    If Cells(lg - 1, 3) = "" Then
    Cells(lg - 1, 3) = Cells(1, 3).Value + 1
    End If
    End If
    End Sub

    Cordialement
    G.David
    le respect n'est pas un dû
    il se merite
    0
  8. brahimkhali
     
    mille fois merci G. davide

    ca marche

    et aussi merci pour tous les autres qui ont pris la peine de m'aider

    merci pour tous

    brahim
    0