Problème d'importation de données excel

Fermé
Benjamin1803 Messages postés 11 Date d'inscription jeudi 21 avril 2011 Statut Membre Dernière intervention 28 avril 2011 - 26 avril 2011 à 16:09
 castours - 1 mai 2011 à 19:57
Bonjour,
Je souhaite importer des données excel dans access. Je souhaite faire cela en liant les tables, de sorte que si le fichier excel est modifié, cela se répercute dans les données access. Le problème est que lorsque j'importe le fichier excel en liant les tables, les cases comportants des chiffres + lettres ne sont pas affichées, il y a ceci qui est écrit à la place: #Nombre ! . J'ai fait la même chose sans lier les tables, et dans ce cas là les données s'affichent correctement. Quequ'un saurait-il résoudre ce problème ? Merci d'avance

A voir également:

1 réponse

Bonjour

Importer plusieurs classeurs Excel dans une table Access en VBA
Par Hervé Inisan le mardi 13 juillet 2010, 20:28 - Liaisons Office - Lien permanent
· access 2000

· access 2002

· access 2003

· access 2007

· fichier

· table

· vba
Cet article fait suite à celui-ci : Importer plusieurs feuilles Excel dans une table Access en VBA.

Sur le même principe, on va voir ici comment importer les données de plusieurs classeurs Excel. Et pour garder la logique de l'article précédent, j'ai gardé la possibilité d'importer plusieurs feuilles de chaque classeur.
Le scénario
Je dispose de plusieurs classeurs Excel, dont les données doivent être importées dans Access. Pour que ça marche, les tableaux respectent un certain nombre de contraintes :

· Les feuilles ont toutes la même structure (sinon, on ne va pas s'en sortir !).
· Les feuilles peuvent avoir ou non des titres sur leur 1ère ligne (dans mon exemple, toutes les feuilles ont des titres).
· La structure des feuilles correspond à la structure de ma table Access : les champs sont dans le même ordre, et les types de données sont compatibles.
· Dans mon scénario, la 1ère colonne (Numéro Acteur) est clef primaire dans la table Access. Ça veut dire qu'il faut que les valeurs de Numéro Acteur, dans Excel, soient toutes différentes. Sinon, il y a aura des erreurs - normales - à l'importation.
· Les classeurs sont tous placés dans le même dossier Windows.
· Chaque classeur doit avoir le même nombre de feuilles à importer, et ces feuilles portent le même nom. Par exemple, si je veux importer les feuilles Acteurs1 et Acteurs2, tous les classeurs doivent avoir des feuilles portant ces noms.
· Un classeur peut comporter d'autres feuilles (en nombre quelconque) qui ne seront pas concernées par l'importation.
Comme dans l'article précédent, la table Access a cette structure :



Le code
Voici une procédure VBA à recopier intégralement dans un module standard de votre base de données.

' ---
' IMPORTATION DE PLUSIEURS FEUILLES EXCEL,
' A PARTIR DE PLUSIEURS CLASSEURS
' ---
Sub ImportExcelMulti( _
ByVal strChemin As String, _
ByVal varFeuilles As Variant, _
ByVal blnNoms As Boolean, _
ByVal strTable As String _
)

' Déclaration des variables
Dim strClasseur As String
Dim varFeuille As Variant

' Est-ce que le dossier existe ?
strChemin = AddBackslash(strChemin)
If Dir(strChemin, vbDirectory) = "" Then
MsgBox "Le dossier ['" & strChemin & "] est introuvable.", vbExclamation
Exit Sub
End If

' Vidage de la table si nécessaire
On Error GoTo ImportExcelErr
If MsgBox("Souhaitez-vous vider la table [" & strTable & "] avant l'importation ?", _
vbQuestion + vbYesNo) = vbYes Then
CurrentDb.Execute "DELETE * FROM [" & strTable & "];"
End If

' Parcourir tous les classeurs du dossier
strClasseur = Dir(strChemin & "*.xls", vbNormal)
While strClasseur <> ""
' Procédure d'importation
For Each varFeuille In varFeuilles
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, _
strTable, strChemin & strClasseur, blnNoms, varFeuille & "!"
Next

' Classeur suivant
strClasseur = Dir
Wend

' Un p'tit message pour terminer :-)
MsgBox "Opération terminée !", vbInformation
Exit Sub

ImportExcelErr:
MsgBox "Erreur d'importation : " & Err.Description, vbExclamation
Exit Sub
End Sub
important
La fonction AddBackslash() doit aussi être présente dans un module de votre base de données.
La procédure ci-dessus doit recevoir 4 paramètres pour fonctionner :

1. Le chemin du dossier qui contient les classeurs Excel à importer.
Tous les classeurs sont supposés d'extension XLS, mais vous pouvez adapter en XLSX sur Excel 2007/2010.
2. La liste des feuilles à importer (au cas où certaines feuilles devraient être ignorées).
3. Le nom de la table Access de destination.
4. Une valeur booléenne (True / False) qui indique si les feuilles Excel ont des titres en première ligne.
Tester le code
Cette autre procédure (à recopier par exemple dans le même module) permet de tester l'import :

Sub TestImportExcelMulti()
Dim varFeuilles As Variant

' Liste des feuilles Excel à importer
varFeuilles = Array("Acteurs1", "Acteurs2")

' Importation proprement dite
ImportExcelMulti "C:\Users\Hervé\Documents\Classeurs Excel", _
varFeuilles, True, "tbl Acteurs - Import"
End Sub
Bien sûr, vous adaptez les valeurs en fonction de votre configuration.
Exécutez ce deuxième bloc de code. Il vous sera demandé si vous souhaitez vider la table Access avant d'importer toutes les données.
Et hop !
0