Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/05/2011, 15h26   #1
Invité régulier
 
Homme Bernard AYRAL
CHARGE ETUDES STATISTIQUES
Inscription : août 2004
Messages : 30
Détails du profil
Informations personnelles :
Nom : Homme Bernard AYRAL
Âge : 52
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : CHARGE ETUDES STATISTIQUES
Secteur : Santé

Informations forums :
Inscription : août 2004
Messages : 30
Points : 6
Points : 6
Par défaut Creation multi tables

Bonjour,
A partir d'une table j'ai besoin d'éclater celle-ci en plusieurs tables en fonction d'un code région.
Y a t'il un moyen d'automatiser ce besoin ?
Merci par avance
BAYRAL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h21   #2
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonjour.

A mon avis, tu peux commencer par une requête "DISTINCT ROW" sur le champ code region de la table mère. Cela te donne la liste des codes de région.

Pour chaque code de cette liste, tu crées une nouvelle table (copie d'un modèle vide), tu ouvres une requête sur la table mère avec un filtre sur le code de région, tu ouvres une autre requête sur la table fille vide, et tu copies tous les enregistrement de la première requête dans la seconde.

Voilà dans le principe.

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 07h42   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Voici une routine que j'avais remis au goût du jour en début de semaine.

Cette routine va te permettre en passant en paramètre le nom de la table et le nom du champ où se trouve les critère d'éclatage.

Exemple d'appel :

Code :
Call EclatageTable("Table1", "Civ")
on éclate la table Table1 par rapport au champ Civ, cela va créer autant de tables qu'il y a de données Civ différentes.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Public Sub EclatageTable(strTable As String, strChamp As String)
    '---------------------------------------------------------------------------------------
    ' Procedure      : EclatageTable
    ' Auteur         : Philippe JOCHMANS - http://starec.developpez.com
    ' Date           : 02/05/2011
    ' Commentaires   : Routine d'éclatage de table
    ' Paramètres en entrée :
    '               strTable    : Nom de la table qui doit être éclatée
    '               strChamp    : Nom du champ de référence
    '
    '  Remarques      : Ne pas oublier de cocher la bibliothèque Microsoft DAO 3.6
    '---------------------------------------------------------------------------------------
 
    ' déclaration des variables
 
    Dim db As DAO.Database
    Dim rstChamp As DAO.Recordset           ' recordset pour récupérer les informations sur le champ qui sert de référence à l'éclatage
    Dim strSQL As String                    'stockage des chaines SQL
 
    ' affectation
 
    Set db = CurrentDb
 
    ' utilisation d'un recordset en fonction du champ de critère pour récupérer les différents critères d'éclatage
 
    strSQL = "SELECT " & strChamp & " FROM " & strTable & " GROUP BY " & strChamp
    Set rstChamp = db.OpenRecordset(strSQL)
    While Not rstChamp.EOF
        ' création des différentes tables
        db.Execute "SELECT * INTO " & strTable & "_" & rstChamp(strChamp) & " FROM " & strTable & " WHERE " & strChamp & "='" & rstChamp(strChamp) & "'"
        rstChamp.MoveNext
    Wend
 
    ' mise à jour de la fenêtre base de données
    Application.RefreshDatabaseWindow
 
    ' libération des  objets
    rstChamp.Close
    Set rstChamp = Nothing
 
    MsgBox "Fin de traitement"
 
End Sub
Edit : Il faudra adapter si le champ est de type numérique.
Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/05/2011, 09h42   #4
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 615
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 615
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
RE

Un complément ici : http://www.developpez.net/forums/d10...critere-champ/

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 20h52   #5
Expert Confirmé Sénior
 
Développeur informatique
Inscription : novembre 2006
Messages : 4 215
Détails du profil
Informations personnelles :
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : novembre 2006
Messages : 4 215
Points : 5 291
Points : 5 291
Citation:
Envoyé par pgz Voir le message
Pour chaque code de cette liste, tu crées une nouvelle table (copie d'un modèle vide), tu ouvres une requête sur la table mère avec un filtre sur le code de région, tu ouvres une autre requête sur la table fille vide, et tu copies tous les enregistrement de la première requête dans la seconde.

PGZ
un bête SELECT INTO comme le montre Philippe ça suffit

Sinon les recordsets ont une propriétés qui s'appellent "clone" il me semble.
__________________
Alea Jacta Est
Mat.M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 21h18   #6
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Hello!

Citation:
Envoyé par Mat.M Voir le message
un bête SELECT INTO comme le montre Philippe ça suffit
C'est vrai que c'est bête!

Merci!

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h12.


 
 
 
 
Partenaires

Hébergement Web