Importer du Excel sur acces

Kami91

XLDnaute Junior
Bonjour à tous,

J'ai un petit travail à réaliser qui consiste à :

Importer une gande feuille excel sur acces...

Qui contiendra divers champs : Noms, Prénoms, etc (adresse, CP,...)

Avec une clé primaire sur acces qui sera "Numéro Collaborateur"

C'est un identifiant...

exemple: xbi0bub

le travail que je ne sais pas comment réaliser, c'est: Importer une autre feuille excel, qui elle sera juste une mise à jour qui va regarder que ses "Numéro Collaborateur" Correspondent dans la feuille principale et si oui, mettre a jour les données correspondant à la personne.. sinon ne rien faire. Je crosi que ca devrait être une requête mise a jour ... sauf erreur

Si quelqu'un peut m'aiguiller, je lui serrais très reconnaissant

Merci d'avance.
 
Dernière édition:

Kami91

XLDnaute Junior
Re : Importer du Excel sur acces

Je crois avoir un minimum réussi les modifications... j'ai lu un livre de 1400 pages mdrrr... aie aie aie,

Mais j'ai un problème si je veux faire une requete ajout, j'aimerais ajouter mtn un nouveau collaborateur si le champ "Numéro Collaborateur" n'existe pas...

Mais comment faire pour qu'il ajoute tous les champs correspondants ? c'est a dire Nom, prénom ... qui est dans ma deuxieme table...

J'ai mis qu'il entre si le numéro de collaborateur est différent de la table 1
 

chris

XLDnaute Barbatruc
Re : Importer du Excel sur acces

Bonjour

Il faut faire une requête ajout basée sur une requête de non correspondance entre la liste EXCEL et la table ACCESS.

Le mieux est lier ou importer la liste EXCEL puis de faire la requête de non correspondance sur l'ID (utiliser l'assistant), ajouter tous les champs à remplir puis transformer la requête en requête AJOUT.
 

Kami91

XLDnaute Junior
Re : Importer du Excel sur acces

Je comprends pas très bien...

je mets mon exercice... ma requete mise a jour marche, je sais pas comment j'ai fais mais elle marche... par contre, ma requete ajout ne marche pas... :'(

Et si comme critère je mets ca : [Exe2].[No U]<>[Exe].[No U]

Il me met une erreur, j'aimerai qu'il ajoute, seulement si le No U n'est pas retrouvé dans Exe
 

Pièces jointes

  • Exercice.zip
    25.9 KB · Affichages: 80
  • Exercice.zip
    25.9 KB · Affichages: 85
  • Exercice.zip
    25.9 KB · Affichages: 76

chris

XLDnaute Barbatruc
Re : Importer du Excel sur acces

ReBonjour

Il ne faut pas sélectionner étoile mais bien sélectionner tous les champs (une colonne par champ à ajouter)

Il faut orienter la relation de la table source vers la table cible et mettre
est null
comme critère dans le champ ID de la table cible
C'est ce qu'on appelle une requête de non correspondance.

Dans la requête MAJ le critère [Exe2].[No U] Et [Exe2].[No U] ne sert à rien.

Il ne faut pas créer de relation entre ces 2 tables dans le schéma de relations.
Seulement dans les requêtes.
 
Dernière édition:

Kami91

XLDnaute Junior
Re : Importer du Excel sur acces

Bonjour,

Merci de ton aide Chris, effectivement, ca me servait a rien le bout de critère que j'avais mis =S décu... MDR

Ensuite, j'ai essayer de faire comme t'as dis, mais toujours une erreur...
J'ai enlever la relation que j'avais mise...

Sur l'image tu peux voir comme j'ai fais, il y a juste un passage que tu as écris dont je ne suis pas sûr d'avoir compris...

"Il faut orienter la relation de la table source vers la table cible et mettre
est null
comme critère dans le champ ID de la table cible
C'est ce qu'on appelle une requête de non correspondance."

J'ai mis un print screen de ma modifications...

Je te remercie Chris pour ton aide préciseuse...

Je suis pas bon du tout en access xD

Bonne journée:D
 

Pièces jointes

  • ExerciceAcces.jpg
    ExerciceAcces.jpg
    43.2 KB · Affichages: 142
Dernière édition:

Rapheux

XLDnaute Junior
Re : Importer du Excel sur acces

Bonjour,

J'ai réalisé dernièrement un travail similaire. Je te partage mon expérience.

Prenons par exemple un fichiers client : client.xls

avec :

Numclient, Nom, prenom, cp, ville

et un fichier acces : client.mdb

dans ta base acces tu faits une table, appellons la TClient, avec Numclient, Nom, Prenom, CP et ville en champs.

Voici la macro que j'utilise (adapté à notre exemple).

Code:
Public sub import()

Dim DB As Database, rest As Recordset
Set DB = CurrentDb
Set enregistrement = DB.OpenRecordset("Data")
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheets As Excel.Worksheet

Dim ligne as double

Dim numclient as double
Dim nom as string
Dim prenom as string
Dim cp as long
Dim ville as string

ligne = range("A65536").end(xlup).row
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("C:\client.xls")
Set xlSheets = xlBook.Worksheets(1)

for i = 2 to ligne 'je part de deux car je met la première ligne du tableau excel comme noms des colonnes

xlSheets.cells(i,1).value = Numclient
xlSheets.cells(i,2).value = Nom
xlSheets.cells(i,3).value = prenom
xlSheets.cells(i,4).value = CP
xlSheets.cells(i,5).value = ville


With enregistrement
.AddNew
![Numclient] = Numclient
![Nom] = Nom
![Prenom] = Prenom
![CP] = CP
![Ville] = Ville
.Update
End With
Next

DB.Close
'Fermeture d'Excel
xlBook.Close False
xlApp.Quit
'Désallocation mémoire
Set xlSheets = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

End sub

Et cette macro tu la fait à partir d'Access. Ce qui permet d'importer ton tableau excel dans Access sans même ouvrir Excel.

J'espere avoir put t'aidé ...

Cordialement
 

Kami91

XLDnaute Junior
Re : Importer du Excel sur acces

Reuh,

Merci de ta réponse Raph... (je m'apelle pareil :D)

hmmm:eek:

Heu je suis vraiment pas un pro... Et le vba devant mes yeux... aie !

Beau travail, mais la moitier je comprends pas....

Yaurai-t-il pas un moyen de le faire via acces en faisant juste une requete ?

Que j'importe manuellement mon fichiers Excel sur acces je le nomme comme table et après faire une requete via ces 2 tables ?!

Qui ajoutes le client si son No U n'est pas retrouvé sur la table principale ?

MErci beaucoup ^^
 

Rapheux

XLDnaute Junior
Re : Importer du Excel sur acces

J'ai longtemps cherché moi aussi, mais la seul solution que j'ai trouvé, c'est celle là !

L'idée en gros c'est ouvrire Excel virtuellement à partir d'access.

1) Comme tu as plusieurs ligne, tu vas devoir bouclé l'exportation de donnée.
2) L'idée est que pour chaque ligne, tu as attribué la valeur de ta cellule à des variables
3) Tu utilises une requetes en te servant de tes variables pour les valeurs
4) Tu fermes proprement le Exel virtuel et tu ferme ta connection à la base de donnée.
 

chris

XLDnaute Barbatruc
Re : Importer du Excel sur acces

Bonjour

J'ai modifié la requête dans la base initiale sur la base d'un ajout de exe2 vers exe.
Pour orienter une relation il faut double cliquer sur le fil entre les tables et choisir le sens.
Sinon l'assistant requête de non correspondance fait une bonne pertie du boulot puisque l'idée est d'ajouter seulement les identifiants qui n'existent pas déjà (utile seulement si la table 2 et la table une ont des enregistrements communs).

Sauf cas particulier comme l'était celui de Rapheux (pas de liste de données mais une fiche avec des données dispersés), dans 95% des cas l'import de données ne nécessite aucune programmation : une liaison avec le classeur source et des requêtes action.
L'import n'est utile qu'en cas de mauvais typage des données et dans ce cas on passe par un fichier txt intermédiaire.
Des tables "parking" peuvent aussi être utiles pour ventiler les données qui ont une organisation différente dans une BD que dans le tableur.
 

Pièces jointes

  • Exercice.zip
    8.8 KB · Affichages: 87
  • Exercice.zip
    8.8 KB · Affichages: 91
  • Exercice.zip
    8.8 KB · Affichages: 91

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 399
Membres
103 537
dernier inscrit
alisafred974