Compteur excel
Résolu/Fermé
A voir également:
- Qrqc exemple excel
- Liste déroulante excel - Guide
- Formule excel - Guide
- Tableau croisé dynamique excel exemple - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
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
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 :
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.
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.
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
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.
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
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" ?
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" ?
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
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
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...
- 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...
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 !
Voici le lien où vous pourrez trouver le fichier excel...
Encore merci !
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
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"
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
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
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
Modifié par dobo69 le 20/07/2010 à 12:17
jour,
Pour faire la meme chose dans la colonne R :
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.
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.
19 juil. 2010 à 15:11
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 !!
19 juil. 2010 à 15:17
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
19 juil. 2010 à 15:24
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
19 juil. 2010 à 15:25
19 juil. 2010 à 15:31
voici le nouveau lien excusez moi !