cs_Titux91
Messages postés7Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention 4 août 2006
-
22 mars 2006 à 15:59
cs_Titux91
Messages postés7Date d'inscriptionmercredi 22 mars 2006StatutMembreDernière intervention 4 août 2006
-
26 mars 2006 à 23:18
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:
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?
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 22 mars 2006 à 18:35
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!...