Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Addition de champs d'un même enregistrement

28 réponses
Avatar
Pascal
Bonjour,
toutes les semaine je récupère un fichier texte que j'importe dans Access.
Ce fichier contient un certain nombre de champs et parmi ceux ci des clamps
numériques. Pour chaque enregistrement je souhaite faire des totaux par
groupe en fonction du nom du champ. Le nombre de champs pouvant être
variable d'une semaine sur l'autre
Pour être plus clair je vous donne un exemple.
Voici par exemple les champs de la table ainsi constituée:
Nom
Prénom
Adresse
.....
AAAA1
AAAA2
....
AAAA3
BBB1
BBB2
...
BBB9
.....
Adresse mail

Je souhaite faire les additions de tout ce qui est AAAA*, BBB* (familles) de
l'enregistrement et écrire le résultat dans un champs d'une autre table (ou
de la même peu importe) dans un champ AAAAtotal, BBBtotal. Chaque famille
existe toujours d'une semaine sur l'autre mais le nombre de champs qui la
compose est variable, c'est pour cela que je cherche une procédure en VB qui
puisse me faire les additions.
Avez vous une idée de comment il faut faire car je débute en VBA.
Par avance merci
Pascal

10 réponses

1 2 3
Avatar
3stone
Salut,

"Pascal"
| toutes les semaine je récupère un fichier texte que j'importe dans Access.
| Ce fichier contient un certain nombre de champs et parmi ceux ci des clamps
| numériques. Pour chaque enregistrement je souhaite faire des totaux par
| groupe en fonction du nom du champ. Le nombre de champs pouvant être
| variable d'une semaine sur l'autre
| Pour être plus clair je vous donne un exemple.
| Voici par exemple les champs de la table ainsi constituée:
| Nom
| Prénom
| Adresse
| .....
| AAAA1
| AAAA2
| ....
| AAAA3
| BBB1
| BBB2
| ...
| BBB9
| .....
| Adresse mail
|
| Je souhaite faire les additions de tout ce qui est AAAA*, BBB* (familles) de
| l'enregistrement et écrire le résultat dans un champs d'une autre table (ou
| de la même peu importe) dans un champ AAAAtotal, BBBtotal. Chaque famille
| existe toujours d'une semaine sur l'autre mais le nombre de champs qui la
| compose est variable, c'est pour cela que je cherche une procédure en VB qui
| puisse me faire les additions.
| Avez vous une idée de comment il faut faire car je débute en VBA.


Ok, tu débute en VBA... mais en Access également, il me semble ;-)

Tu devrais commencer par te créer la table qui va bien.
Ensuite, tu importe le texte dans unetable "brute".
Une requête ajout transférera les données utiles et éventuellement
déjà partiellement traitées.

Ensuite, une simple requête peut te donner les sommes que tu souhaite.

Il n'est pas raisonnable de stocker ce résultat dans une table, a fortiori
si l'endroit peut être quelconque.
Ce "peu importe" montre à lui seul le non fondé de cette action !


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Pascal
"3stone" a écrit dans le message de news:

Salut,

"Pascal"
| toutes les semaine je récupère un fichier texte que j'importe dans Access.
| Ce fichier contient un certain nombre de champs et parmi ceux ci des
clamps
| numériques. Pour chaque enregistrement je souhaite faire des totaux par
| groupe en fonction du nom du champ. Le nombre de champs pouvant être
| variable d'une semaine sur l'autre
| Pour être plus clair je vous donne un exemple.
| Voici par exemple les champs de la table ainsi constituée:
| Nom
| Prénom
| Adresse
| .....
| AAAA1
| AAAA2
| ....
| AAAA3
| BBB1
| BBB2
| ...
| BBB9
| .....
| Adresse mail
|
| Je souhaite faire les additions de tout ce qui est AAAA*, BBB* (familles)
de
| l'enregistrement et écrire le résultat dans un champs d'une autre table
(ou
| de la même peu importe) dans un champ AAAAtotal, BBBtotal. Chaque famille
| existe toujours d'une semaine sur l'autre mais le nombre de champs qui la
| compose est variable, c'est pour cela que je cherche une procédure en VB
qui
| puisse me faire les additions.
| Avez vous une idée de comment il faut faire car je débute en VBA.


Ok, tu débute en VBA... mais en Access également, il me semble ;-)

Tu devrais commencer par te créer la table qui va bien.
Ensuite, tu importe le texte dans unetable "brute".
Une requête ajout transférera les données utiles et éventuellement
déjà partiellement traitées.

Ensuite, une simple requête peut te donner les sommes que tu souhaite.

Il n'est pas raisonnable de stocker ce résultat dans une table, a fortiori
si l'endroit peut être quelconque.
Ce "peu importe" montre à lui seul le non fondé de cette action !


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/


Bonjour Pierre, merci pour intérêt que tu a porté à mon pb.
Mon pb est justement qu'access ne fait des addition dans une requête qu'à
partir du moment ou il connais tous les nom des champs (il me semble). Or
dans mon cas le nom des champs est variable d'une fois sur l'autre, seule
une partie que j'appelerai racine est fixe.
C'est pour cela que j'ai pensé qu'il fallait utiliser VBA.
Les données d'origine peuvent ou non être conservées, c'est pour cela que
j'ai écrit dans la même table ou une autre.
Si tu as ou quelqu'un d'autre à des idées....
Par avance merci
Pascal
Avatar
3stone
Salut,

"Pascal"
| Mon pb est justement qu'access ne fait des addition dans une requête qu'à
| partir du moment ou il connais tous les nom des champs (il me semble). Or
| dans mon cas le nom des champs est variable d'une fois sur l'autre, seule
| une partie que j'appelerai racine est fixe.
| C'est pour cela que j'ai pensé qu'il fallait utiliser VBA.
| Les données d'origine peuvent ou non être conservées, c'est pour cela que
| j'ai écrit dans la même table ou une autre.


Peu importe le nom des champs...
c'est pour cela que je disais d'importer dans une table en "brut"

Et effectivement, avec du VBA on peut ne pas s'occuper des noms de champs
lorsque l'on s'adresse aux "numéro" du champ (par Field(x) )

L'important est que les données soit organisées verticalement et non
horizontalement (a plat) comme on les retrouvent souvent dans Excel.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Pascal
"3stone" a écrit dans le message de news:

Salut,

"Pascal"
| Mon pb est justement qu'access ne fait des addition dans une requête qu'à
| partir du moment ou il connais tous les nom des champs (il me semble). Or
| dans mon cas le nom des champs est variable d'une fois sur l'autre, seule
| une partie que j'appelerai racine est fixe.
| C'est pour cela que j'ai pensé qu'il fallait utiliser VBA.
| Les données d'origine peuvent ou non être conservées, c'est pour cela que
| j'ai écrit dans la même table ou une autre.


Peu importe le nom des champs...
c'est pour cela que je disais d'importer dans une table en "brut"

Et effectivement, avec du VBA on peut ne pas s'occuper des noms de champs
lorsque l'on s'adresse aux "numéro" du champ (par Field(x) )

L'important est que les données soit organisées verticalement et non
horizontalement (a plat) comme on les retrouvent souvent dans Excel.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/

Et c'est bien la qu'est mon pb, les données sont présentées à plat.
Est'il possible d'imaginer du code qui lise la table et qu'elle fasse la
somme groupe par goupe ?
J'ai vu qqch comme cela dans les états qui présentent le résultat d'une
requete analyse croisée. Mais je ne sais pas le faire pour des tables et qui
plus est avec plusieurs groupes.
Pascal
Avatar
3stone
re,

"Pascal"
| Et c'est bien la qu'est mon pb, les données sont présentées à plat.
| Est'il possible d'imaginer du code qui lise la table et qu'elle fasse la
| somme groupe par goupe ?
| J'ai vu qqch comme cela dans les états qui présentent le résultat d'une
| requete analyse croisée. Mais je ne sais pas le faire pour des tables et qui
| plus est avec plusieurs groupes.



Tout est possible... mais là cela devient nettement plus difficile.

Si la "place" des champs reste identique - pas de problème
si par contre le nombre et la place change... :-(


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Pascal
"3stone" a écrit dans le message de news:

re,

"Pascal"
| Et c'est bien la qu'est mon pb, les données sont présentées à plat.
| Est'il possible d'imaginer du code qui lise la table et qu'elle fasse la
| somme groupe par goupe ?
| J'ai vu qqch comme cela dans les états qui présentent le résultat d'une
| requete analyse croisée. Mais je ne sais pas le faire pour des tables et
qui
| plus est avec plusieurs groupes.



Tout est possible... mais là cela devient nettement plus difficile.

Si la "place" des champs reste identique - pas de problème
si par contre le nombre et la place change... :-(


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/

malheureusement leur nombre change, donc leur place aussi.
J'imagine bien le principe :
Répertorier la liste des champs de la table,
Alimenter ensuite une variable par groupe de champs en fonction de la
lecture des enregistrements
Ecrire le résultat dans un champs de la table courante.
mais, gros pb, comment le réaliser (dur dur)....
Pascal
Avatar
3stone
Salut,

"Pascal"
| malheureusement leur nombre change, donc leur place aussi.


on aurait pu ajouter à la fin... ;-)


| J'imagine bien le principe :
| Répertorier la liste des champs de la table,
| Alimenter ensuite une variable par groupe de champs en fonction de la
| lecture des enregistrements
| Ecrire le résultat dans un champs de la table courante.
| mais, gros pb, comment le réaliser (dur dur)....


Tu peux donner quelques lignes d'exemples pour voir ce que cela donne ?

Il faut bien se rendre compte que sans aucune structure, sans "nom de champ"
que l'on va retrouver de fichier en fichier ce sera coton !

Une structure répétitive serait le minimum... du style :
champ-textX... champ-textN, puis 3 champs numérique, puis 2 numérique, champX...
et s'il peut y avoir des champs Null cela deviens quasiment impossible !

Quoi qu'il en soit, la structure, c'est en amont qu'il faut essayer de l'imposer.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
Avatar
Pascal
"3stone" a écrit dans le message de news:

Salut,

"Pascal"
| malheureusement leur nombre change, donc leur place aussi.


on aurait pu ajouter à la fin... ;-)


| J'imagine bien le principe :
| Répertorier la liste des champs de la table,
| Alimenter ensuite une variable par groupe de champs en fonction de la
| lecture des enregistrements
| Ecrire le résultat dans un champs de la table courante.
| mais, gros pb, comment le réaliser (dur dur)....


Tu peux donner quelques lignes d'exemples pour voir ce que cela donne ?

Il faut bien se rendre compte que sans aucune structure, sans "nom de champ"
que l'on va retrouver de fichier en fichier ce sera coton !

Une structure répétitive serait le minimum... du style :
champ-textX... champ-textN, puis 3 champs numérique, puis 2 numérique,
champX...
et s'il peut y avoir des champs Null cela deviens quasiment impossible !

Quoi qu'il en soit, la structure, c'est en amont qu'il faut essayer de
l'imposer.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/

Bonjour Pierre,
encore merci pour le temps que tu consacre à mon pb.
Pour ce qui est de la structure du fichier, je ne peux malheureusement pas
le changer. En voici un petit échantillon pour illustrer le propos..

Materiel Option1 Option2 Reseau1 Reseau2 Reseau3
Carrte HD 1 25 6 5 2
Carte BD 150 279 10 75 200

........



Ce que je souhaite obtenir en résultat dans une table :
Materiel Optionx Reseaux
Carrte HD 26 13
Carte BD 429 285
…….


Le nb d'options d'une fois sur l'autre change ainsi que le nb de réseaux
(cela peut aller à une dizaine), mais existent dans toujours. Ma table
source ne se limite bien sur pas à 2 familles mais à une dizaine.
J'espère être assez clair.
Par avance merci
Pascal
Avatar
Pascal
"Pascal" a écrit dans le message de news:


"3stone" a écrit dans le message de news:

Salut,

"Pascal"
| malheureusement leur nombre change, donc leur place aussi.


on aurait pu ajouter à la fin... ;-)


| J'imagine bien le principe :
| Répertorier la liste des champs de la table,
| Alimenter ensuite une variable par groupe de champs en fonction de la
| lecture des enregistrements
| Ecrire le résultat dans un champs de la table courante.
| mais, gros pb, comment le réaliser (dur dur)....


Tu peux donner quelques lignes d'exemples pour voir ce que cela donne ?

Il faut bien se rendre compte que sans aucune structure, sans "nom de champ"
que l'on va retrouver de fichier en fichier ce sera coton !

Une structure répétitive serait le minimum... du style :
champ-textX... champ-textN, puis 3 champs numérique, puis 2 numérique,
champX...
et s'il peut y avoir des champs Null cela deviens quasiment impossible !

Quoi qu'il en soit, la structure, c'est en amont qu'il faut essayer de
l'imposer.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/

Bonjour Pierre,
encore merci pour le temps que tu consacre à mon pb.
Pour ce qui est de la structure du fichier, je ne peux malheureusement pas
le changer. En voici un petit échantillon pour illustrer le propos..

Materiel Option1 Option2 Reseau1 Reseau2 Reseau3
Carrte HD 1 25 6 5 2
Carte BD 150 279 10 75 200

........



Ce que je souhaite obtenir en résultat dans une table :
Materiel Optionx Reseaux
Carrte HD 26 13
Carte BD 429 285
...


Le nb d'options d'une fois sur l'autre change ainsi que le nb de réseaux
(cela peut aller à une dizaine), mais existent dans toujours. Ma table
source ne se limite bien sur pas à 2 familles mais à une dizaine.
J'espère être assez clair.
Par avance merci
Pascal


En travaillant sur le pb, ne peut on imaginer un code VB qui écrive une
requête pour écrire dans une table et qui adapte les noms des champs sources
(ceux qui varient) ?
Pascal
Avatar
3stone
re,

"Pascal"
[...]
| Pour ce qui est de la structure du fichier, je ne peux malheureusement pas
| le changer. En voici un petit échantillon pour illustrer le propos..
|
| Materiel Option1 Option2 Reseau1 Reseau2 Reseau3
| Carrte HD 1 25 6 5 2
| Carte BD 150 279 10 75 200
|
| ........
|
|
|
| Ce que je souhaite obtenir en résultat dans une table :
| Materiel Optionx Reseaux
| Carrte HD 26 13
| Carte BD 429 285
| ...
|
|
| Le nb d'options d'une fois sur l'autre change ainsi que le nb de réseaux
| (cela peut aller à une dizaine), mais existent dans toujours. Ma table
| source ne se limite bien sur pas à 2 familles mais à une dizaine.
| J'espère être assez clair.
| Par avance merci
| Pascal
|
|
| En travaillant sur le pb, ne peut on imaginer un code VB qui écrive une
| requête pour écrire dans une table et qui adapte les noms des champs sources
| (ceux qui varient) ?


Encore quelques questions et précisions... ;-)

- Ton fichier texte possède des "en-têtes" de champ ?
- Ces en-têtes ont toujours le format nnnnnX où les 'n' représente le nom et le 'X' le chiffre ?
- et... pour les variations, ce sont le nombre des options et reseaux qui
change d'une fois à l'autre ou bien également les colonnes "matériel" ?

Et tu souhaite ajouter cela dans une table (toujours la même) ou bien
créer un nouvelle table à chaque fois ?

Si tu répond oui aux 3 premières, il y à de l'espoir ;-)


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
Conseils MPFA: http://www.mpfa.info/
1 2 3