Regrouper et compter des valeurs par paquet de 10 maximum avec reset.
3 réponses
Baton .rouge
Bonjour
je ne sais pas si c'est faisable en sql access.
Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du
mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C
sachant que la première valeur sert de référence au compteur.
Si le premier nombre est 41, alors on ne poura pas dépasser 50 même
s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart
à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle
colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je
passe par un paquet de collones intermédiaire et avec des vraifaux en
pagaille et je trouve àa pas propre.
Merci de votre aide
Ce que je cherche à faire:
A B C D
1 2 067 10
1 2 077 10
1 2 087 5
1 2 098 2
1 3 024 1
1 3 064 3
1 3 157 1
1 6 050 2
Pour les courageux qui sont arrivé jusqu'ici : ;o))
En tout cas, je tiens à remercier ceux qui donnent du temps, car je
mets en pratique tous les jours ce que j'apprends grace à vous et je
le transmet à mes collègues.
--
Vous voulez un conseil ?
Ne faites jamais confiance à ceux qui vous donnent des conseils.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
db
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access. Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C sachant que la première valeur sert de référence au compteur. Si le premier nombre est 41, alors on ne poura pas dépasser 50 même s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je passe par un paquet de collones intermédiaire et avec des vraifaux en pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça pourrait donner ça :
Sub baton() Dim db As Database Dim r As DAO.Recordset Set db = CurrentDb Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c") Dim a As String, b As String, c As String, cs As String
a = 0 b = 0 c = "" While Not r.EOF If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs = "041" And c = "050")) Then If a <> 0 Then Debug.Print a, b, cs, n a = r!a b = r!b cs = r!c c = r!c n = 1 Else n = n + 1 c = r!c End If r.MoveNext Wend Debug.Print a, b, cs, n
Set r = Nothing Set db = Nothing End Sub
db
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access.
Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du
mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C
sachant que la première valeur sert de référence au compteur.
Si le premier nombre est 41, alors on ne poura pas dépasser 50 même
s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart
à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle
colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je
passe par un paquet de collones intermédiaire et avec des vraifaux en
pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça
pourrait donner ça :
Sub baton()
Dim db As Database
Dim r As DAO.Recordset
Set db = CurrentDb
Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c")
Dim a As String, b As String, c As String, cs As String
a = 0
b = 0
c = ""
While Not r.EOF
If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs
= "041" And c = "050")) Then
If a <> 0 Then Debug.Print a, b, cs, n
a = r!a
b = r!b
cs = r!c
c = r!c
n = 1
Else
n = n + 1
c = r!c
End If
r.MoveNext
Wend
Debug.Print a, b, cs, n
je ne sais pas si c'est faisable en sql access. Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C sachant que la première valeur sert de référence au compteur. Si le premier nombre est 41, alors on ne poura pas dépasser 50 même s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je passe par un paquet de collones intermédiaire et avec des vraifaux en pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça pourrait donner ça :
Sub baton() Dim db As Database Dim r As DAO.Recordset Set db = CurrentDb Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c") Dim a As String, b As String, c As String, cs As String
a = 0 b = 0 c = "" While Not r.EOF If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs = "041" And c = "050")) Then If a <> 0 Then Debug.Print a, b, cs, n a = r!a b = r!b cs = r!c c = r!c n = 1 Else n = n + 1 c = r!c End If r.MoveNext Wend Debug.Print a, b, cs, n
Set r = Nothing Set db = Nothing End Sub
db
Baton .rouge
On Fri, 18 Oct 2013 20:06:20 +0200, db wrote:
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access. Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C sachant que la première valeur sert de référence au compteur. Si le premier nombre est 41, alors on ne poura pas dépasser 50 même s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je passe par un paquet de collones intermédiaire et avec des vraifaux en pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça pourrait donner ça :
Sub baton() Dim db As Database Dim r As DAO.Recordset Set db = CurrentDb Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c") Dim a As String, b As String, c As String, cs As String
a = 0 b = 0 c = "" While Not r.EOF If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs = "041" And c = "050")) Then If a <> 0 Then Debug.Print a, b, cs, n a = r!a b = r!b cs = r!c c = r!c n = 1 Else n = n + 1 c = r!c End If r.MoveNext Wend Debug.Print a, b, cs, n
Set r = Nothing Set db = Nothing End Sub
Sur le principe, je comprend, mais ça coince avec access 2003 sur "r!a". Il aime pas trop, probablement pas ce que c'est déjà basé sur une requete et non une table.
Je vais reessayer demain.
-- Vous voulez un conseil ? Ne faites jamais confiance à ceux qui vous donnent des conseils.
On Fri, 18 Oct 2013 20:06:20 +0200, db <blue_moon_frXX@hotmail.com>
wrote:
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access.
Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du
mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C
sachant que la première valeur sert de référence au compteur.
Si le premier nombre est 41, alors on ne poura pas dépasser 50 même
s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart
à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle
colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je
passe par un paquet de collones intermédiaire et avec des vraifaux en
pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça
pourrait donner ça :
Sub baton()
Dim db As Database
Dim r As DAO.Recordset
Set db = CurrentDb
Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c")
Dim a As String, b As String, c As String, cs As String
a = 0
b = 0
c = ""
While Not r.EOF
If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs
= "041" And c = "050")) Then
If a <> 0 Then Debug.Print a, b, cs, n
a = r!a
b = r!b
cs = r!c
c = r!c
n = 1
Else
n = n + 1
c = r!c
End If
r.MoveNext
Wend
Debug.Print a, b, cs, n
Set r = Nothing
Set db = Nothing
End Sub
Sur le principe, je comprend, mais ça coince avec access 2003 sur
"r!a". Il aime pas trop, probablement pas ce que c'est déjà basé sur
une requete et non une table.
Je vais reessayer demain.
--
Vous voulez un conseil ?
Ne faites jamais confiance à ceux qui vous donnent des conseils.
je ne sais pas si c'est faisable en sql access. Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C sachant que la première valeur sert de référence au compteur. Si le premier nombre est 41, alors on ne poura pas dépasser 50 même s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je passe par un paquet de collones intermédiaire et avec des vraifaux en pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça pourrait donner ça :
Sub baton() Dim db As Database Dim r As DAO.Recordset Set db = CurrentDb Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c") Dim a As String, b As String, c As String, cs As String
a = 0 b = 0 c = "" While Not r.EOF If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs = "041" And c = "050")) Then If a <> 0 Then Debug.Print a, b, cs, n a = r!a b = r!b cs = r!c c = r!c n = 1 Else n = n + 1 c = r!c End If r.MoveNext Wend Debug.Print a, b, cs, n
Set r = Nothing Set db = Nothing End Sub
Sur le principe, je comprend, mais ça coince avec access 2003 sur "r!a". Il aime pas trop, probablement pas ce que c'est déjà basé sur une requete et non une table.
Je vais reessayer demain.
-- Vous voulez un conseil ? Ne faites jamais confiance à ceux qui vous donnent des conseils.
Baton .rouge
On Mon, 21 Oct 2013 16:58:17 +0200, Baton .rouge wrote:
On Fri, 18 Oct 2013 20:06:20 +0200, db wrote:
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access. Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C sachant que la première valeur sert de référence au compteur. Si le premier nombre est 41, alors on ne poura pas dépasser 50 même s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je passe par un paquet de collones intermédiaire et avec des vraifaux en pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça pourrait donner ça :
Sub baton() Dim db As Database Dim r As DAO.Recordset Set db = CurrentDb Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c") Dim a As String, b As String, c As String, cs As String
a = 0 b = 0 c = "" While Not r.EOF If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs = "041" And c = "050")) Then If a <> 0 Then Debug.Print a, b, cs, n a = r!a b = r!b cs = r!c c = r!c n = 1 Else n = n + 1 c = r!c End If r.MoveNext Wend Debug.Print a, b, cs, n
Set r = Nothing Set db = Nothing End Sub
Sur le principe, je comprend, mais ça coince avec access 2003 sur "r!a". Il aime pas trop, probablement pas ce que c'est déjà basé sur une requete et non une table.
Je vais reessayer demain.
Finalement, je suis passé par excel sur le même principe. Si j'ai le temps, j'aimerai quand même faire ça sur access un jour -- Vous voulez un conseil ? Ne faites jamais confiance à ceux qui vous donnent des conseils.
On Mon, 21 Oct 2013 16:58:17 +0200, Baton .rouge <nospam@trash.nul>
wrote:
On Fri, 18 Oct 2013 20:06:20 +0200, db <blue_moon_frXX@hotmail.com>
wrote:
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access.
Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du
mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C
sachant que la première valeur sert de référence au compteur.
Si le premier nombre est 41, alors on ne poura pas dépasser 50 même
s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart
à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle
colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je
passe par un paquet de collones intermédiaire et avec des vraifaux en
pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça
pourrait donner ça :
Sub baton()
Dim db As Database
Dim r As DAO.Recordset
Set db = CurrentDb
Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c")
Dim a As String, b As String, c As String, cs As String
a = 0
b = 0
c = ""
While Not r.EOF
If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs
= "041" And c = "050")) Then
If a <> 0 Then Debug.Print a, b, cs, n
a = r!a
b = r!b
cs = r!c
c = r!c
n = 1
Else
n = n + 1
c = r!c
End If
r.MoveNext
Wend
Debug.Print a, b, cs, n
Set r = Nothing
Set db = Nothing
End Sub
Sur le principe, je comprend, mais ça coince avec access 2003 sur
"r!a". Il aime pas trop, probablement pas ce que c'est déjà basé sur
une requete et non une table.
Je vais reessayer demain.
Finalement, je suis passé par excel sur le même principe. Si j'ai le
temps, j'aimerai quand même faire ça sur access un jour
--
Vous voulez un conseil ?
Ne faites jamais confiance à ceux qui vous donnent des conseils.
On Mon, 21 Oct 2013 16:58:17 +0200, Baton .rouge wrote:
On Fri, 18 Oct 2013 20:06:20 +0200, db wrote:
Le 18/10/2013 18:34, Baton .rouge a écrit :
Bonjour
je ne sais pas si c'est faisable en sql access. Au pire, je peux passer par un critère pour remplir les champs.
Ce dessous une liste de nombre que je dois classer et ce que j'ai du mal à faire.
Le but étant de regrouper par paquet de 10 valeur maximum la colonne C sachant que la première valeur sert de référence au compteur. Si le premier nombre est 41, alors on ne poura pas dépasser 50 même s'il y a des trous.
Pour corser le tout, quand la valeur de la colonne B change, C repart à zéro. Si A change, c'est B et C qui repartent à zéro.
Cerise sur le gateau, mais ça c'est le plus facile, la nouvelle colonne D indique combien de valeur il y a dans chaque paquet.
J'arrive plus ou moins (surtout moins bien que plus), seulement je passe par un paquet de collones intermédiaire et avec des vraifaux en pagaille et je trouve àa pas propre.
Avec des requêtes, ça me paraît compliqué, mais avec un module, ça pourrait donner ça :
Sub baton() Dim db As Database Dim r As DAO.Recordset Set db = CurrentDb Set r = db.OpenRecordset("select a,b,c from baton order by a,b,c") Dim a As String, b As String, c As String, cs As String
a = 0 b = 0 c = "" While Not r.EOF If (r!a <> a Or r!b <> b Or n = 10 Or Val(c) + 1 <> Val(r!c) Or (cs = "041" And c = "050")) Then If a <> 0 Then Debug.Print a, b, cs, n a = r!a b = r!b cs = r!c c = r!c n = 1 Else n = n + 1 c = r!c End If r.MoveNext Wend Debug.Print a, b, cs, n
Set r = Nothing Set db = Nothing End Sub
Sur le principe, je comprend, mais ça coince avec access 2003 sur "r!a". Il aime pas trop, probablement pas ce que c'est déjà basé sur une requete et non une table.
Je vais reessayer demain.
Finalement, je suis passé par excel sur le même principe. Si j'ai le temps, j'aimerai quand même faire ça sur access un jour -- Vous voulez un conseil ? Ne faites jamais confiance à ceux qui vous donnent des conseils.