Compteur excel

Fermé
brahimkhalil Messages postés 11 Date d'inscription jeudi 28 juillet 2005 Statut Membre Dernière intervention 3 juillet 2006 - 29 juil. 2005 à 01:21
 brahimkhali - 1 août 2005 à 15:47
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
A voir également:

7 réponses

Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
29 juil. 2005 à 01:48
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.
0
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
29 juil. 2005 à 02:02
Re,
Enfin, plutôt Quelque chose comme : =SI(ESTVIDE(B1);"";MAX(C1:C123)+1)
0
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
29 juil. 2005 à 02:24
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
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
G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020 203
29 juil. 2005 à 08:51
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
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
G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020 203
29 juil. 2005 à 23:01
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
brahimkhali > G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020
30 juil. 2005 à 00:54
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
G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020 203 > G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020
30 juil. 2005 à 10:42
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
brahimkhali > G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020
30 juil. 2005 à 11:43
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gihef Messages postés 5150 Date d'inscription mercredi 20 juillet 2005 Statut Contributeur Dernière intervention 20 février 2023 2 775
31 juil. 2005 à 03:55
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
G.David Messages postés 768 Date d'inscription vendredi 21 novembre 2003 Statut Membre Dernière intervention 1 juin 2020 203
31 juil. 2005 à 07:21
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
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