IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème import dbf [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut Problème import dbf
    Bonjour,
    j'ai un soucis d'import d'une base de données dbf codée en utf-8 vers excel.
    J'ai trouvé un macro sur le net qui me permet d'importer les données de ma base vers le classeur Excel sans ouvrir le dbf:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    Sub importer_champDBF()
    'necessite d'activer la reference Microsoft ActiveX Data Objects x.x Library (dans VBE outils-référence)
    Dim source As ADODB.Connection
    Dim Requete As ADODB.Recordset
    Dim Chemin As String, fichier As String, texte_SQL As String
     
    Chemin = "C:\........."
    'Chemin = ThisWorkbook.Path si ta base est dans le m^répertoire
    fichier = "xxx.dbf """
     
    Set source = New ADODB.Connection
    source.Open _
    "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
    Chemin & ";"
     
     
    texte_SQL = "SELECT * FROM " & fichier & ";" 'si tu importe tout met * au lieu de tonchamp
     
    Set Requete = New Recordset
    Requete.Open texte_SQL, source, adOpenKeyset, adLockOptimistic
     
    If Requete.EOF Then
    MsgBox "Table vide..."
    Exit Sub
    End If
     
    Application.ScreenUpdating = False
    Range("A2").CopyFromRecordset Requete
     
    Requete.Close
    source.Close
     
    End Sub

    Cela fonctionne très bien sauf que les accents ne passent pas. Par exemple, au lieu d'avoir "Propriétaire" j'ai "Propri+®taire".
    Y aurait t'il un moyen d'indiquer dans la macro que la base est en utf-8 et de demander à excel de convertir ?

    Merci.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    avec l'objet ADODB.Stream et sa propriété Charset il y aurait une possibilité (voir sur MSDN)
    sinon il faut intégrer une fonction de conversion (rechercher sur ce forum) …

    Normalement un caractère accentué est codé sur 2 caractères dont le premier est "Å" ou "Ã" …

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    Je suis vraiment un débutant dans les macro et je ne sait pas comment fonctionne et sa propriété .

    Et pour ce qui est de la fonction de conversion je n'ai rien trouvé sur le forum. Les seuls cas ou il en est question c'est pour des CSV et non des DBF.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Dans ce cas, comment sais-tu qu'il est question d'UTF-8 ? Par défaut le dbf c'est plutôt du PC-8 DOS …

    Pour le vérifier, ouvrir directement le fichier via Excel (menu Fichier, Ouvrir);
    s'il n'y a pas de souci avec les caractères accentués, ce n'est pas de l'UTF-8 !

    Quant aux fonctions de conversion présentes sur le forum, que ce soit du texte importé de .csv ou de .dbf, c'est pareil !

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    Je sait sur c'est du UTF-8 car la base de donnée vient d'une couche de SIG.
    Lorsque la couche est créée, la base de donnée liée est codée en UTF-8.
    Il est possible de choisir le codage mais j'ai quasiment tout essayé et lorsque j'importe dans Excel les accents ne passent jamais.
    J'ai essayé le codage ISO 8859-1, 8859-15, le windows 1252 et l'utf-8 notamment.

    Ce que je ne comprend pas c'est que normalement excel fonctionne avec le codage windows 1252, alors pourquoi même quand mon dbf est codé comme excel les accents ne passent pas ?

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    Je remonte mon topic car je n'ai toujours pas résolu mon problème et cela devient urgent de trouver une solution.
    Je suis obligé d'ouvrir mon dbf avec libreoffice pour pouvoir choisir le codage du fichier. Mais j'aimerai mettre mes données dans un xls pour y associer un publipostage.
    Actuellement je suis obligé d'ouvrir mon dbf avec libreoffice, en parallele ouvrir mon xls et de faire un copier-coller à la main car même une simple macro copier-coller avec les deux fichiers ouverts ne fonctionne pas.

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    Normalement un caractère accentué est codé sur 2 caractères dont le premier est "Å" ou "Ã" …
    Comme indiqué dès mon premier message, ce n'est pas codé en UTF-8 ‼

    D'après mes souvenirs, Excel - en tout cas une version ancienne - n'avait pas de souci
    pour afficher les accents d'un fichier .dbf codé au format DOS …

    Donc soit tu continues sur ta voie d'une table de conversion soit en t'inspirant des fonctions de conversion de ce forum
    en analysant les codes de caractères pour trouver un algorithme …

  8. #8
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Je viens de percuter comme ce n'est pas de l'UTF-8 mais bien codé en DOS
    il y a une solution trop simple fonctionnant de mon côté sous Excel 2003 - tiens une version identique à la tienne ! - :
    • Enregistrer sous… au format CSV (DOS).


    • Fermer le classeur puis depuis l'Explorateur Windows effectuer un double clic sur le fichier, c'est tout !


    Et en utilisant l'Enregistreur de macros, le code est livré sur un plateau !

    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …

    __________________________________________________________________________________________
    Il n'y a pas que les aigles qui atteignent les sommets, les escargots aussi mais ils en bavent !

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    La conversion fonctionne nikel.
    Et maintenant si je veut importer les données du fichier csv dans mon fichier xls existant avec mon vba de départ, à la place de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set source = New ADODB.Connection
    source.Open _
    "Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=" & _
    Chemin & ";"
    Faut que je mette quoi ?

  10. #10
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    Non, finalement c'est bon j'ai trouvé.
    Merci à tous et surtout à toi Marc-L de m'avoir sorti de mon impasse

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème importation .DBF vers Access
    Par Tetem dans le forum Access
    Réponses: 4
    Dernier message: 06/08/2010, 11h33
  2. Problème import Export...(syntaxe)
    Par friiitz dans le forum Access
    Réponses: 1
    Dernier message: 02/05/2006, 14h14
  3. Problème import Export...(syntaxe)
    Par friiitz dans le forum Access
    Réponses: 3
    Dernier message: 02/05/2006, 14h13
  4. Problème import de feuilles excel
    Par elkhy dans le forum Access
    Réponses: 9
    Dernier message: 25/04/2006, 09h54
  5. problème importation excel
    Par choupa25 dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 06h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo