Créer une requétes export/import données

roidurif

XLDnaute Occasionnel
Bonjour,

Je recois tous les mois beaucoup de fichier tarifaire de different client.
Ces fichiers sont composée de 500 à 10000 produits selon le client.

Cela est dû que l'on a regulierement des mises à jour qui concerne :
- soit des augmentation ou des baisse de tarifs produit ou
- soit des nouveaux produits ou des supressions de produits.

1ere étape : Créer et Exporter données

Ce que je souhaite et que je n'arrive pas, c'est au fur et à mesure que je reçois des fichiers client au format excel, de l'envoyé via une macro dans une base de données (ex access, ou autres qui peuvents accepeter bcp de lignes environ 500 000).

Les elements du tableau que j'ai besoin d'envoyé dans la BDD sont :
- le N° client,
- la reference produit,
- le prix
- et inséré automatiquement une date de chargement lors de l'export.

2ème étape : Faire la requête pour importer les données.

J'ai fait un fichier "requête" qui permet de choisir notre reqête selon le criteres que l'on aura indiqué :

- le N° client,
- Date de chargement

3ème Etape : Résultats

En resultat, j'aimerais obtenir tous ce que j'ai charger aux diferentes dates selon les critéres demandés.

Voir fichier requete pour exemple.

Voilà, j'espere avoir été claire et je ne sais pas comment faire et je ne maitrise pas encore Access.

Si vous pouvie m'aider svp

Merci
 

Pièces jointes

  • Requêtes.zip
    22.2 KB · Affichages: 59
  • Requêtes.zip
    22.2 KB · Affichages: 57
  • Requêtes.zip
    22.2 KB · Affichages: 57

mromain

XLDnaute Barbatruc
Re : Créer une requétes export/import données

salut roidurif,


je te propose un truc un peut moins ambitieux à base de fichier excel (le 2007 a plus de 1 million de ligne tout de même).

pour cet exemple, je n'ai fait que le consultation de la BDD
dans le fichier Requetes, j'ai rajouté une feuille (Tmp) cachée dans laquelle j'ai la liste des no Clients.
cette liste se met à jour à l'ouverture du fichier.

il faudra que tu vérifies les critère de dates : je ne sais pas si j'ai vérifié la bonne colonne de ta BDD (j'ai pris comme critère : "col A = noClient" + "col BC > dateInf" + "col BC < dateSup")

si ça te conviens, on peut se pencher sur ton autre PB : la saisie de la BDD.


cordialement
a+
 

Pièces jointes

  • Requêtes.zip
    28.4 KB · Affichages: 73
  • Requêtes.zip
    28.4 KB · Affichages: 74
  • Requêtes.zip
    28.4 KB · Affichages: 75
Dernière édition:

roidurif

XLDnaute Occasionnel
Re : Créer une requétes export/import données

Bjr mromain,

J'ai vu ta proposition qui me semble interressante, ce que j'ai peur c'est d'arriver à plus de 1 millions de ligne voir plus, ce qui m'obligera d'avoir un autre fichier BDD et l'autre contrainte c'est d'arrivée avoir des lenteurs si le fichier devait etre plus lourd.
J'ai entendu parler des fichiers xml, ou txt, je ne sais pas si c'est mieux.


Une précision au niveau des dates de début et de fin, il s'agit de date de début et de fin d'application du tarif.
J'avais pensé à insérré dans lors de l'export du tableau une date automatique qui indiquer


Apres je ne sais pas comment enrichir la BDD automatiquement au fur et a mesure j'ai des tableau des clients.

merci
 

chris

XLDnaute Barbatruc
Re : Créer une requétes export/import données

Bonjour

Si les données doivent être stockées dans Acces il serait bien plus simple et logique d'importer les données Excel directement dans la base Access.

En général on importe ou lie le classeur excel à la base Access, puis par des requêtes Action (Ajout, mise à jour notamment) on bascule les données dans la base existante. La requête Action peut sans problème ajouter une date (fonction date() pour la date du jour).

De même pour l'exploitation il est plus simple de créer les requêtes dans Acces et de récupérer les résultats de la requête depuis Excel (Données, Données Externes)
Une date de début de tarif suffit pour retrouver la tarif applicable à une période.
 

chris

XLDnaute Barbatruc
Re : Créer une requétes export/import données

Bonjour

Commencer par là pour les concepts BD

Access - Les Bases - Club d'entraide des développeurs francophones

Pour les requêtes ce document me semble assez bien

Ce lien n'existe plus

manque cependant l'aspect champs calculés : un exemple là
Access: Champ calculé


C'est par la méthode des champs calculés qu'on peut ajouter ou valoriser un champ dans une requête action :
mettre

Date_début_validité : date()

sur la première ligne de la colonne à valoriser
 

roidurif

XLDnaute Occasionnel
Re : Créer une requétes export/import données

Bonjour,

Je pense envisager de l'export/import de donnée par xml, je ne sais pas si c'est le plus simple et meilleur façon de faire des requête via excel, j'espere que je me trompe pas!!

En tout cas, j'ai reussi à créer une "Table XSD", une "BDD XML", un fichier "mapping Donnée".

Mes questions sont :

- Comment dois-je faire pour prendre certaine colonne de mon fichier "Donnée.xls" pour les ajouter dans le fichier "Mapping Donnée.xls" :

* Colonne A : Numéro client
* Colonne Réf produit
* Colonne Prix
* Date de MAJ

- Comment dois-je faire pour exporter les données du fichier "Mapping Donnée.xls" dans le fichier "BDD XML" sans écraser les autres données du fichier xml ?


- Comment dois-je faire pour créer une requête en exportant certaine donnée du fichier "BDD XML" ?
exemple : Pour le Num client A, je veux connaitre les réfs misent à jour entre la Date "01/01/2009" et "07/05/2009", avec leurs differents prix pour calculer la variation prix en %

Je vous joins mes fichiers pour m'aider.

Merci d'avance
 

Pièces jointes

  • Dossier.zip
    19.5 KB · Affichages: 45
  • Dossier.zip
    19.5 KB · Affichages: 47
  • Dossier.zip
    19.5 KB · Affichages: 49

roidurif

XLDnaute Occasionnel
Re : Créer une requétes export/import données

Re-bonjour,

Apres plusieurs test et recherche, je n'ai toujours pas reussi à exporter mes donnée excel dans une base de donnée. Si quelqu'un peux me donnée une lumiere svp

Merci
 

mromain

XLDnaute Barbatruc
Re : Créer une requétes export/import données

bonjour roidurif,

je t'ai préparé un exemple à un de tes PB : ajouter des données au fichier xml.

le fichier excel "importExportXml.xls" contient :
> une feuille BDD (les données à ajouter au fichier "BDD.xml"),
> un module "Module_XML" qui contient
- les fonctions utiles pour traiter le fichier XML
- un type de données perso "ItemXML"
> un module "Module_Test" qui contient le Sub de test (ajouter les données de BDD au fichier XML)

PS: avec le path du fichier XML à modifier
Code:
Const xmlFilePath As String = "[B][COLOR=Red]E:\aMiki\XLS\test\Dossier_roidurif\BDD.xml[/COLOR][/B]"


Sub Test()

' définir un tableau d'"ItemXML"
'''' ItemXML: type de donnée perso (défini dans le module "Module_XML")
'''' qui contient l'ensemble des informations d'un "élément XML"
Dim compteurElement As Long, tabData() As ItemXML

' récupérer les données à ajouter au fichier XML dans la feuille "BDD"
With ThisWorkbook.Sheets("BDD")
    
    ' boucler sur l'ensemble des éléments de la feuille
    For compteurElement = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
        
        ' redimensionner le tableau d'"ItemXML"
        ReDim Preserve tabData(1 To compteurElement - 1)
        
        ' renseigner l'"ItemXML" actuel avec les infos du tableau
        ' NumClient: colonne "A"
        tabData(UBound(tabData)).NumClient = .Range("A" & compteurElement).Text
        ' RefProduit: colonne "C"
        tabData(UBound(tabData)).RefProduit = .Range("C" & compteurElement).Text
        ' Prix: colonne "AH"
        tabData(UBound(tabData)).Prix = .Range("AH" & compteurElement).Text
        ' DateMaj: colonne "BB"
        tabData(UBound(tabData)).DateMaj = .Range("BB" & compteurElement).Text
        
    Next compteurElement
End With

' ajouter le tableau d'"ItemXML" au fichier ttt.xml
Module_XML.AddItemsToXmlFile tabData, xmlFilePath

End Sub
en t'inspirant de ce travail, il serait assez simple de faire des ""requêtes"" sur un fichier XML :
> avec la fonction "Module_XML.LoadXmlFile", tu récupères un tableau d'"ItemXML",
> tu boucles sur ce tableau,
> pour chaque élément, tu vérifies les critères (date, prix, ...)
> et tu traites les éléments qui répondent aux critères (copie dans Excel, modification...)

en espérant que ça t'aidera

a+
 

Pièces jointes

  • Dossier_roidurif.zip
    22.9 KB · Affichages: 56

roidurif

XLDnaute Occasionnel
Re : Créer une requéte export/import données

Bonjour,

J'ai opter le transfert dans une Base access, mais je ne sais pas comment faire pour transférer 5 colonnnes sur 90 de mon tableau excel sans biensur ecraser les donnée de la table "Articles_2009" Access.

Il s'agit des cinq colonnes suivantes à transférer :

- Numéro client (en Colonne A) => vers champ "Numéro client"
- Références produits (en Colonne B) => Vers champ "Références"
- Déscriptions (en Colonne D) => vers champ "Déscriptions"
- Barême (en Colonne AB) => vers champ "Barême"
- Prix (en Colonne AH) => Vers champ "Prix HT"
- Date début (en Colonne BB) => vers champ "Date début"

Les articles à exporter sont environs de 10 000 lignes par fichier excel, j'espere que ce rapide lors du transfert.
J'ai ce code, mais il faut que les champs de ta table access porte les meme noms que tes champs excel et que le fichier d'access soit ouvert

Code:
Sub Export_Donnée()

'permet de controler la ligne où le fichier s'arrete
Range("A1").Select
Selection.End(xlDown).Select
Ligne = Selection.Row

'Défini ma base access et mon fichier excel
Dim MaBase As Object
Dim Fichier As String
Set MaBase = GetObject("Chemin complet de ta base access")
Fichier = ActiveWorkbook.FullName

On Error GoTo Error_Export:
MaBase.DoCmd.TransferSpreadsheet acImport, 8, "Nom de la Table Access", Fichier, True, "A1:X" & Ligne & ""'dans mon cas j'exporte de la cellule A1 à la Cellule X_Ligne

MsgBox "Exportation des données est effectuée correctement.", vbInformation, "Exportation": Exit Sub

'MaBase = Nothing

Error_Export:
MsgBox "Attention, un problème est survenu pendant l'exportation, merci de vérifier les données.", vbExclamation, "ERREUR Exportation": Exit Sub

End Sub

Je vous joins mes fichiers pour votre aide SVP.

Merci
 

Pièces jointes

  • Requete Access-Excel.zip
    22.5 KB · Affichages: 48
  • Requete Access-Excel.zip
    22.5 KB · Affichages: 50
  • Requete Access-Excel.zip
    22.5 KB · Affichages: 52
Dernière édition:

MuscatMimi

XLDnaute Accro
Re : Créer une requéte export/import données

Bonsoir ,roidurif, mromain, et le forum

Voici un fichier, avec lequel tu peut Lire et Ecrire dans Base Accées, depuis Excel a toi de l'adatpter
Il te faudra , changer le nom du chemin de la base access, dans le fichier Excel
Ici

Private Sub Choix_Change()
ChDir ActiveWorkbook.Path
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
''''''''''
ch = "F:\Mes Documents Cat\Formation logiciels\Excel\Excel Vers Access\Excel-Access DAO Lire Ecrire Valider via Usf Imp"
cnn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & ch & "/" & "Access2000.mdb"
Sql = "SELECT * FROM Client WHERE nom_client='" & Me.Choix & "'"
Bonne soirée
 

Pièces jointes

  • Nouveau Dossier compressé.zip
    56.8 KB · Affichages: 71
  • Nouveau Dossier compressé.zip
    56.8 KB · Affichages: 72
  • Nouveau Dossier compressé.zip
    56.8 KB · Affichages: 75
Dernière édition:

roidurif

XLDnaute Occasionnel
Re : Créer une requéte export/import données

Bonsoir, merci de votre aide, mais J'ai fait exactement ce ke vous m'avez dit mais la macro se bloc sur Me.Choix.

Comment faire sans utiliser de USERFORM. Vous m'aider adapter avec le fichier joint dansmon précédent post svp

merci d avance
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 659
Messages
2 111 623
Membres
111 236
dernier inscrit
vinthi