OVH Cloud OVH Cloud

"Spliter" (ventiler) les lignes dans une table

4 réponses
Avatar
Stéphane
Bonjour,

Une de mes tables contient toutes les écritures comptables.
Certaines écritures ont un code analityque (il existe une dizaine de codes
différents).
L'un de ces codes est particulier: ADM.
Après avoir importé mes écritures comptables dans ma table, je souhaiterais
"ventiler" les écritures contenant ce code. Pour cela, il faut réussir à
"dupliquer" les lignes qui contiennent ce "code analytique".

Exemple:
---------

Table: Liste_Ecritures (avant ventilation)

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 100 ADM
2 638000 50
(certaines écritures n'ont pas de code)
3 606100 200 001



Résultat souhaité: (dans une autre table par exemple)
-----------------------------------------------------

Table: Ecritures_ventilées

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 30 001
2 758300 70 002
3 638000 50
4 606100 200 001


Ici, seules les écritures contenant le code ADM ont été ventilées de la
manière suivante:
- 30 % dans 001
- 70 % dans 002

1 - Je souhaiterais que ma nouvelle table récupère les lignes "non
ventilées" et celles qui ont fait l'objet d'une ventilation.
2 - De plus, les lignes qui auront été ventilés devrons récupérer à chque
fois les infomations d'origines (le numéro de compte).

Je ne sais pas comment obtenir ce résultat.
Faut-il passer par une requête (mise à jour, d'ajout...)? Ou par une macro
?

Merci pour votre aide.

Stéphane

4 réponses

Avatar
Gafish
Bonjour,

Juste une petite question déja : qu'est ce qui va permettre de faire le
dispatch de la ventilation, dans ton exemple comment sait on qu'il faut
ventiler 30% dans 001 et 70% dans 002 ? C'est au coup par coup ? C'est fixe
? Tu as une table de correspondance ?
Une fois ceci précisé on pourra voir le mieux a faire.

Arnaud


"Stéphane" a écrit dans le message
de news:4156ce0e$0$24465$
Bonjour,

Une de mes tables contient toutes les écritures comptables.
Certaines écritures ont un code analityque (il existe une dizaine de codes
différents).
L'un de ces codes est particulier: ADM.
Après avoir importé mes écritures comptables dans ma table, je
souhaiterais

"ventiler" les écritures contenant ce code. Pour cela, il faut réussir à
"dupliquer" les lignes qui contiennent ce "code analytique".

Exemple:
---------

Table: Liste_Ecritures (avant ventilation)

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 100 ADM
2 638000 50
(certaines écritures n'ont pas de code)
3 606100 200
001




Résultat souhaité: (dans une autre table par exemple)
-----------------------------------------------------

Table: Ecritures_ventilées

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 30
001

2 758300 70
002

3 638000 50
4 606100 200 001


Ici, seules les écritures contenant le code ADM ont été ventilées de la
manière suivante:
- 30 % dans 001
- 70 % dans 002

1 - Je souhaiterais que ma nouvelle table récupère les lignes "non
ventilées" et celles qui ont fait l'objet d'une ventilation.
2 - De plus, les lignes qui auront été ventilés devrons récupérer à chque
fois les infomations d'origines (le numéro de compte).

Je ne sais pas comment obtenir ce résultat.
Faut-il passer par une requête (mise à jour, d'ajout...)? Ou par une
macro

?

Merci pour votre aide.

Stéphane




Avatar
Stéphane
Non, la répartition (30% & 70%) serait systématique (fixe) c'est-à-dire
quelle serait identique pour toute les lignes contenant le code ADM.
Si la solution doit passer par l'établissement d'une table de
correspondances, je suis prêt à la créer.

Table: Répartition

Ref_Code Code_Analytique Répartition
--------------------------------------------------------------------------
1 001 30%
2 002 70%



"Gafish" a écrit dans le message de news:
#
Bonjour,

Juste une petite question déja : qu'est ce qui va permettre de faire le
dispatch de la ventilation, dans ton exemple comment sait on qu'il faut
ventiler 30% dans 001 et 70% dans 002 ? C'est au coup par coup ? C'est
fixe

? Tu as une table de correspondance ?
Une fois ceci précisé on pourra voir le mieux a faire.

Arnaud


"Stéphane" a écrit dans le message
de news:4156ce0e$0$24465$
Bonjour,

Une de mes tables contient toutes les écritures comptables.
Certaines écritures ont un code analityque (il existe une dizaine de
codes


différents).
L'un de ces codes est particulier: ADM.
Après avoir importé mes écritures comptables dans ma table, je
souhaiterais

"ventiler" les écritures contenant ce code. Pour cela, il faut réussir à
"dupliquer" les lignes qui contiennent ce "code analytique".

Exemple:
---------

Table: Liste_Ecritures (avant ventilation)

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 100 ADM
2 638000 50
(certaines écritures n'ont pas de code)
3 606100 200
001




Résultat souhaité: (dans une autre table par exemple)
-----------------------------------------------------

Table: Ecritures_ventilées

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 30
001

2 758300 70
002

3 638000 50
4 606100 200
001




Ici, seules les écritures contenant le code ADM ont été ventilées de la
manière suivante:
- 30 % dans 001
- 70 % dans 002

1 - Je souhaiterais que ma nouvelle table récupère les lignes "non
ventilées" et celles qui ont fait l'objet d'une ventilation.
2 - De plus, les lignes qui auront été ventilés devrons récupérer à
chque


fois les infomations d'origines (le numéro de compte).

Je ne sais pas comment obtenir ce résultat.
Faut-il passer par une requête (mise à jour, d'ajout...)? Ou par une
macro

?

Merci pour votre aide.

Stéphane








Avatar
Jessy Sempere [MVP]
Bonjour

Une petite fonction avec des requêtes ajout devrait convenir...

Essais un truc dans ce genre :

**********************************************************
Function VentilCpt()
Dim strSql As String

strSql = "INSERT INTO Ecritures_ventilées (NumCpt, Montant, Code) " _
& "SELECT NumCpt, Montant*0.3, '001' " _
& "FROM Liste_Ecritures " _
& "WHERE Code = 'ADM';"

CurrentDb.execute strSql

strSql = "INSERT INTO Ecritures_ventilées (NumCpt, Montant, Code) " _
& "SELECT NumCpt, Montant*0.7, '002' " _
& "FROM Liste_Ecritures " _
& "WHERE Code = 'ADM';"

CurrentDb.execute strSql

strSql = "INSERT INTO Ecritures_ventilées (NumCpt, Montant, Code) " _
& "SELECT NumCpt, Montant, '002' " _
& "FROM Liste_Ecritures " _
& "WHERE Code <> 'ADM';"

CurrentDb.execute strSql

MsgBox "La ventilation des écritures est terminées..."

End Function
**********************************************************

@+
Jessy Sempere - Access MVP

------------------------------------
Site @ccess : http://access.jessy.free.fr/
Pour l'efficacité de tous :
http://users.skynet.be/mpfa/
------------------------------------
Avatar
Gafish
Essaye ceci :

Public Function tstvent()

Dim dbsCurrent As Database
Set dbsCurrent = opendatabase(CurrentDb.Name)
Dim rstVentil As Recordset
Set rstVentil = dbsCurrent.OpenRecordset("SELECT * FROM [tst];")
Dim SavMontant

With rstVentil
Do While Not .EOF
If .Fields("code") = "ADM" Then
SavMontant = .Fields("montant")
.AddNew
.Fields("code") = "001"
.Fields("montant") = (SavMontant * 30) / 100
.Update
.AddNew
.Fields("code") = "002"
.Fields("montant") = (SavMontant * 70) / 100
.Update
End If
.MoveNext
Loop
End With

dbsCurrent.Execute "DELETE * FROM [tst] WHERE [Code]='ADM';"

Set rstVentil = Nothing
Set dbsCurrent = Nothing

End Function

où tu remplaces tst par le nom de ta table et code et montant par le nom de
tes champs


"Stéphane" a écrit dans le message
de news:4157e479$0$2145$
Non, la répartition (30% & 70%) serait systématique (fixe) c'est-à-dire
quelle serait identique pour toute les lignes contenant le code ADM.
Si la solution doit passer par l'établissement d'une table de
correspondances, je suis prêt à la créer.

Table: Répartition

Ref_Code Code_Analytique Répartition
--------------------------------------------------------------------------
1 001 30%
2 002 70%



"Gafish" a écrit dans le message de news:
#
Bonjour,

Juste une petite question déja : qu'est ce qui va permettre de faire le
dispatch de la ventilation, dans ton exemple comment sait on qu'il faut
ventiler 30% dans 001 et 70% dans 002 ? C'est au coup par coup ? C'est
fixe

? Tu as une table de correspondance ?
Une fois ceci précisé on pourra voir le mieux a faire.

Arnaud


"Stéphane" a écrit dans le
message


de news:4156ce0e$0$24465$
Bonjour,

Une de mes tables contient toutes les écritures comptables.
Certaines écritures ont un code analityque (il existe une dizaine de
codes


différents).
L'un de ces codes est particulier: ADM.
Après avoir importé mes écritures comptables dans ma table, je
souhaiterais

"ventiler" les écritures contenant ce code. Pour cela, il faut réussir
à



"dupliquer" les lignes qui contiennent ce "code analytique".

Exemple:
---------

Table: Liste_Ecritures (avant ventilation)

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 100
ADM



2 638000 50
(certaines écritures n'ont pas de code)
3 606100 200
001




Résultat souhaité: (dans une autre table par exemple)
-----------------------------------------------------

Table: Ecritures_ventilées

Ref_Ligne (clé) N°_Cpt Montant Code
-----------------------------------------------------------
1 758300 30
001

2 758300 70
002

3 638000 50
4 606100 200
001




Ici, seules les écritures contenant le code ADM ont été ventilées de
la



manière suivante:
- 30 % dans 001
- 70 % dans 002

1 - Je souhaiterais que ma nouvelle table récupère les lignes "non
ventilées" et celles qui ont fait l'objet d'une ventilation.
2 - De plus, les lignes qui auront été ventilés devrons récupérer à
chque


fois les infomations d'origines (le numéro de compte).

Je ne sais pas comment obtenir ce résultat.
Faut-il passer par une requête (mise à jour, d'ajout...)? Ou par une
macro

?

Merci pour votre aide.

Stéphane