Compteur excel

Résolu/Fermé
Charles25620 - 19 juil. 2010 à 14:19
 Charles25620 - 20 juil. 2010 à 14:17
Bonjour à toutes et à tous,

J'essaie de faire un compteur sous excel qui en faite dans une cellule (par exemple A1) afficherait le nombre de fois qu' il y a affichage d'un mot (par exemple retard) dans la case B1) . Donc en somme , le compteur doit itéré +1 à chaque fois qu'il y a "retard" dans B1.

J'ai essayer des fonction comme NB.SI et Somme prod mais pas réussi !! POuvez vous m'aider!!

A voir également:

4 réponses

dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
Modifié par dobo69 le 19/07/2010 à 14:55
bonjour,

réponse "simple" dans un premier temps :
petite macro à coller dans le module de la feuille où doit être fait cette manip :

Private Sub Worksheet_Change(ByVal Target As Range)    
If Not Intersect([B1], Target) Is Nothing And [B1]= "retard" Then   
[A1]= [A1]+ 1    
End If    
End Sub


Rajoute 1 dans la cellule A1 chaque fois qu'on écrit 'retard' en B1

Pour intégrer le code :
- Clic-droit sur l'onglet correspondant
- 'Visualiser le code' (ouvre le module vba au niveau de l'objet de la feuille en cours)
- Coller le texte du code ci-dessus dans la page blanche ainsi ouverte,
- fermer le module vba.

la procédure est active : tester si c'est ce que vous voulez.

par contre si vous cherchez à comptabiliser tous les 'retards' qui pourraient être présents en colonne B il s'agit bien de =NB.SI(B:B;"retard") à écrire en A1.
Si vous n'avez besoin de rien, demandez-moi.
0
Charles25620
19 juil. 2010 à 15:11
Merci pour votre réponse ,

Je vais préciser pour avoir la meilleur réponse possible !! ^^
alors en faite j'ai deux colonne une appelé "état" l'autre "Retard" exemple Colonne I et J, la colonne "état" à 3 paramètre soit outil monté, OP fini , ou non traité, la colonne J donc "Retard" a deux paramètres soit Retard début OP, ou rien " ". Et en faite se que je souhaite c'Est que quand j'ai à chaque fois retard début OP et Non traité pour les colonnes J et I cela m'incrémente de +1 dans la case B2 !

J'espère être clair !

merci !!
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
19 juil. 2010 à 15:17
non,,

pas très clair :
Vous pouvez déposer un fichier exemple (sans infos personnelles ou confidentielles) sur http://www.cijoint.fr/ et coller le lien fourni par le site sur votre prochain message
0
Charles25620
19 juil. 2010 à 15:24
Voila j'ai déposé le fichier ici http://www.cijoint.fr/cjlink.php?file=cj201007/cij1PDAQRC.xls
Vous pourrez voir que en case B2 de la feuille planning S1 et jaune et c'est sur cette feuille que je travail , je veux qu'il y est une itération +1 à chaque fois qu'il y a Retard début OP en colonne J et non traité en colonne I . J'espère que vous comprendrez ,

Merci salutation
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
19 juil. 2010 à 15:25
fichier protégé par mot de passe... merci de l'enlever.
0
Charles25620
19 juil. 2010 à 15:31
http://www.cijoint.fr/cjlink.php?file=cj201007/cijWg1xiKi.xls
voici le nouveau lien excusez moi !
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
Modifié par dobo69 le 19/07/2010 à 15:59
Sub compter() 
compte = 0 
With ActiveSheet 
nbrligne = .Cells(.Columns(9).Cells.Count, 2).End(xlUp).Row - 1 
For i = 5 To nbrligne 
If .Cells(i, 9) = "Non traité" And .Cells(i, 10) = "Retard début OP" Then 
compte = compte + 1 
End If 
Next 
.[B2] = compte 
End With 
End Sub


pour compter les occurrences I:I="Non traité" et J:J= retard début OP"
à copier-coller dans un module du classeur (le module 1 ou un autre...) et affecter un bouton. (Visiblement vous connaissez...)


Sub RAZ() 
With ActiveSheet 
.[B2].ClearContents 
end with
End Sub


pour effacer la valeur en B2.
Procédure idem précédent

Si vous n'avez besoin de rien, demandez-moi.
0
Charles25620
19 juil. 2010 à 16:19
Merci de votre aide cela marche mais cela décrement qd je change un état de non traité a OF fini je passe de de 49 a 48 ,, cela garde pas la mémoire . Connaissez vous un moyen aussi que cela ce mete à jour automatiquement sans que je fasse alt F8 pour relancer la macro!

Merci beaucoup
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
19 juil. 2010 à 16:32
désolé mais je ne comprends pas le but recherché.
la macro proposée compte à chaque fois qu'on l'exécute le nombre d'occurrences. Ensuite le nombre affiché ne change ps tant qu'on ne cherche pas à recompter, donc la valeur est bien conservée. Si on relance le calcul c'est qu'on cherche à la mettre à jour non ?
Qu'est ce que vous entendez par "garder en mémoire" ?
0
Charles25620
19 juil. 2010 à 16:37
En faite le but est de savoir à chaque semaine le nombre de fois que l'on a été en retard, donc tous les jours je lancerai le macro pour qu'il comptabilise mais le lendemain si j'ai une ligne qui vient à etre fini alors je changerais l'état par OF fini . Et ce que je veux en faite c'est que le nombre compter de la veille ne régresse pas par rapport à celui d'aujourd8 si je viens à changer l'état. Je vous explique en faite c'est pour faire un digramme de pareto et donc pour savoir le nombre de fois que j'ai été en retard par jour puis par semaine . SUis je plus clair? merci de votre intérêt
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
19 juil. 2010 à 16:44
Il faut donc, avant chaque 'écriture' par la macro du nombre d'occurrences, sauvegarder l'ancienne valeur dans un tableau d'historique. Cela est très simple à faire, mais il faut savoir :
- sous quelle forme ? dans une autre feuille ?
- conserver les semaines précédentes ? mettre à 0 ce tableau au moyen d'un bouton ?
etc...
Merci de préparer ce tableau d'historique avant de poursuivre. je ne peux pas deviner ce qui vous intéresse vraiment au final...
0
Charles25620
19 juil. 2010 à 17:04
Voila donc j'ai créer un tableaux dans la feuille QRQC S1 colonne P qui récapitule tous les jours le nombre de retard que j'ai accumulé avec le total pour la semaine qui sera en définitive le nombre de retard au dernier jours ...

Voici le lien où vous pourrez trouver le fichier excel...

Encore merci !
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
19 juil. 2010 à 17:44
Sub compter()
compte = 0
With ActiveSheet
nbrligne = .Cells(.Columns(9).Cells.Count, 2).End(xlUp).Row - 1
For i = 5 To nbrligne
If .Cells(i, 9) = "Non traité" And .Cells(i, 10) = "Retard début OP" Then
compte = compte + 1
End If
Next
ancien = [B2].Value
.[B2] = compte
End With
With Sheets("QRQC S1")
nblign = .Range("Q11:Q16").Find("*", , , , xlByRows, xlPrevious).Row + 1
If nblign = 17 Then
.Range("Q12:Q16").ClearContents
nblign = 12
End If
.Cells(nblign, 17) = ancien
End With
End Sub


compte les occurrences dans B2 de la feuille active et copie "l'ancienne" valeur dans le tableau de la feuille QRQC S1 'à la suite'. Si le tableau est complet, le "remet à 0" si les 5 lignes sont déjà remplies (au bout de 5 jours donc).

A METTRE DANS LE "MODULE 1" ET PAS DANS LE MODULE DE LA FEUILLE, puis affecter un bouton "compter"

Sub RAZ()
With ActiveSheet
.[B2].ClearContents
End With
End Sub


A mettre dans le module MODULE 1 ET PAS DANS LE MODULE DE LA FEUILLE, puis affecter un bouton "RAZ"
0
Charles25620
20 juil. 2010 à 09:22
Bonjour ,
Merci cela marche tr;es bien comme ca ,j'ai essayer de suivre votre programmation pour faire la même chose mais cette fois ci avec les« retard de fin OP » et «Non traité» Ou «retard fin d'OP» et « Outil monté», donc j'ai rentré le code suivant dans le module 1 :

Sub compter2()
'
'Compter le nombre de OP non traité et en retard de fin OP ou outil monté et en retard de fin OP'

compte2 = 0
With ActiveSheet
nbrligne = .Cells(.Columns(9).Cells.Count, 2).End(xlUp).Row - 1
For i = 5 To nbrligne
If .Cells(i, 9) = "Non traité" And .Cells(i, 11) = "Retard Fin OP" Or .Cells(i, 9) = "Outil monté" And .Cells(i, 11) = "Retard Fin OP" Then
compte2 = compte2 + 1
End If
Next
ancien2 = [E2].Value
.[E2] = compte2
End With
With Sheets("QRQC S1")
nblign = .Range("R11:R16").Find("*", , , , xlByRows, xlPrevious).Row + 1
If nblign = 17 Then
.Range("R12:R16").ClearContents
nblign = 12
End If
.Cells(nblign, 17) = ancien2
End With
End Sub

En faite pour compter j'ai pas de problème mais c'est dans la partie du programme ou je renvoi l'information dans la feuille QRQC S1 Je voudrais le mettre à la suite dans la colonne d'apres c'est à dire R donc pour 5 jours de R12 à R16, mais cela ne marche pas vous trouverez peut être l'erreur dans mon code .

En vous remerciant encore de votre aide et de votre patience !

Charles
0
dobo69 Messages postés 1587 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 30 juin 2013 822
Modifié par dobo69 le 20/07/2010 à 12:17
jour,

Pour faire la meme chose dans la colonne R :

Sub compter2() 
' 
'Compter le nombre de OP non traité et en retard de fin OP ou outil monté et en retard de fin OP' 

compte2 = 0 
With ActiveSheet 
nbrligne = .Cells(.Columns(9).Cells.Count, 2).End(xlUp).Row - 1 
For i = 5 To nbrligne 
If .Cells(i, 9) = "Non traité" And .Cells(i, 11) = "Retard Fin OP" Or .Cells(i, 9) = "Outil monté" And .Cells(i, 11) = "Retard Fin OP" Then 
compte2 = compte2 + 1 
End If 
Next 
ancien2 = .[E2].Value 
.[E2] = compte2 
End With 
With Sheets("QRQC S1") 
nblign = .Range("R11:R16").Find("*", , , , xlByRows, xlPrevious).Row + 1 
If nblign = 17 Then 
.Range("R12:R16").ClearContents 
nblign = 12 
End If 
.Cells(nblign, 18) = ancien2 
End With 
End Sub 


Ce la ne se voit pas très bien : avant dernière ligne : .Cells(nblign, 18) 18 représente la colonne R.
Si vous n'avez besoin de rien, demandez-moi.
0
Charles25620
20 juil. 2010 à 14:17
Je vous remercie pour votre patience et pour votre détermination tout marche à merveille ! Un grand merci!!!
0