Tri: Importation Excel --> Access

Résolu
Signaler
Messages postés
7
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
4 août 2006
-
Messages postés
7
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
4 août 2006
-
Bonjour,



Je souhaite importer un tableau excel contenant les données bruts dont j'ai besoin dans une application access.


Le hic est que les données sur le tableau excels sont rangés par ligne
et non par colonne (ie: chaque ligne concerne un attribut et chaque
colonne un objet différent. ca ressemble donc a cela:)




Colonne1
Colonne2

Colonne 3:
Colonne 4:

Ligne 1: Nom
NomBidon1

NomBidon2
NB3

Ligne 2 : Prénom
PrénomBidon1
PrénomBidon2
PB3

Ligne 3 : Age

AgeBidon1

ageBidon2
AB3

Ligne 4 : Date de naissance Date De Naissance
Bidon1 DDNB2
DDNB3



Or quand j'utilise l'importation automatique de access, ou si j'utilise une fonction du style:

DoCmd.TransferSpreadsheet acImport, , "TableImportation", FileLocation, False, "C1:P40"

Je récupère les informations mais dans le sens inverse:


Nom:

Prénom:
Age: Date de
naissance:

NomBidon1

NomBidon2 NB3

PrénomBidon1
PrénomBidon2
PB3

AgeBidon1

ageBidon2
AB3

Date De NaissanceBidon1 DDNB2 DDNB3




Hors après si je veux faire un traitement SQL par la suite pour tester
notamment si des données sont en doubles ou autre, je ne suis pas dans
la ******.



Il y a il une facon rapide et efficace de lui dire d'importer dans l'autre sens?

Ou bien un script rapide permettant d'intervertir ligne/colonne de la table d'importation?



Merci de me répondre au plus vite!!



Titux

2 réponses

Messages postés
268
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
19 janvier 2017
2
Tout le problème vient de la mauvaise orientation des données.
Voici une macro Excel qui pourrait être écrite de façon à écrire les données dans le bon sens.
Dans la zone de déclarations
Option Explicit
Public Type Personne
Nom As String
Prenom As String
Age As Byte
DateNaissance As Date
End type
Sub CreTableauDroit(wbXL As Workbook)
Dim n as Long, arPersonnes() As Personne
wbXL.WorkSheets(1).Activate
WorkSheets(1).Cells(1,2).Select
n=2
Do
WorkSheets(1).Cells(1,n).Select
n=n+1
Loop Until ActiveCell.FormulaR1C1<>""
Redim arPersonnes(n-3)
For n=0 To UBound(arPersonnes)
WorkSheets(1).Cells(1,n+3).Select
arPersonnes(n).Nom=ActiveCell.Value
WorkSheets(1).Cells(2,n+3).Select
arPersonnes(n).Prenom=ActiveCell.Value
WorkSheets(1).Cells(3,n+3).Select
arPersonnes(n).Age=ActiveCell.Value
WorkSheets(1).Cells(4,n+3).Select
arPersonnes(n).DateNaissance=ActiveCell.Value
Next n
wbXL.Worksheets(2).Activate
WorkSheets(2).Cells(1,1).Select
ActiveCell.Value="Nom"
WorkSheets(2).Cells(1,2).Select
ActiveCell.Value="Prénom"
WorkSheets(2).Cells(1,3).Select
ActiveCell.Value="Age"
WorkSheets(2).Cells(1,4).Select
ActiveCell.Value="Date de naissance"
For n=0 to UBound(arPersonnes)
WorkSheets(2).Cells(n+2,1).Select
ActiveCell.Value=arPersonnes(n).Nom
WorkSheets(2).Cells(n+2,2).Select
ActiveCell.Value=arPersonnes(n).Prenom
WorkSheets(2).Cells(n+2,3).Select
ActiveCell.Value=arPersonnes(n).Age
WorkSheets(2).Cells(n+2,4).Select
ActiveCell.Value=arPersonnes(n).DateNaissance
Next
wbXL.Save
End Sub
Une fois le tableau redressé, il est très facile de l'importer ou de l'attacher à une base Access.
Bon courage!...
3
Messages postés
7
Date d'inscription
mercredi 22 mars 2006
Statut
Membre
Dernière intervention
4 août 2006

Merci bien pour ce petit script qui répond bien à mon problème (après adaptation)

Bon codage :)
0