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 :

Import BASE DE DONNEE [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut Import BASE DE DONNEE
    Bonjour tous le monde,


    J'ai suivie le tuto de SkylRoad (ici) pour l'import de donnée d'un fichier excel fermé.

    Cependant, l'import fonctionne bien, mais les colonnes de ma base de donnée qui ne comporte que des valeurs numériques n'ont pas d'entêtes
    quand je les importe dans ma feuille active.
    Lorsque j'écris dans cette base dans les colonnes concernées (Valeur uniquement numérique) et que je réimporte dans mon classeur actif, les valeurs ne s'affichent pas et mes entêtes non plus.

    Je vous montre ci après les colonnes génantes (Entêtes remplie en vert) :

    BASE DE DONNEE
    Nom : Sans titre.jpg
Affichages : 500
Taille : 163,8 Ko
    CLASSEUR ACTIF APRES IMPORT
    Nom : Sans titre2.jpg
Affichages : 459
Taille : 93,8 Ko

    Rien y fait, j'ai essayé de changer le format des colonnes en Texte, Standard, Nombre mais sur mon classeur actif mes entêtes ne s'affichent pas et les nouvelles informations que je rentre dans ma base non plus.

    Auriez vous une idée ?

    Je vous remercie par avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour,

    J'ai déjà eu ce même problème.
    Je pense que c'est dû au fait que ta connexion dans un classeur fermé se comporte comme un accès à une base de donnée.
    C'est à dire qu'il considère ton classeur comme une base, et ton onglet comme une Table.

    Or, dans une table SQL, le type des champs est définit à la création de la table. C'est à dire que si tu as une colonne "Prenom", tous les champs seront des VARCHAR (ie String), si tu as le champs "Age", ça sera un numérique.

    Or là, dans ton classeur Excel c'est fort probable que pour une même colonne tu ai plusieurs type différents. Tu peux avoir un nombre, puis un texte, etc... De ce fait, ton RecordSet lancé dans ta macro ne se comporte pas comme tu le souhaite.

    Il reconnait le type supposé de la colonne, mais si à une certaine ligne tu as une cellule qui diffère, là ton RecordSet bug. C'est pour ça qu'il ne te renvoie rien pour certaines cellules.

    La solution: Faire un bon vieux couper/coller ?

    Slooby

  3. #3
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    Bonjour Slooby,


    Merci pour ta réponse. Du coup j'ai réussi à bidouiller en bouclant sur toutes les cellules de ma base de données. J'ai mis la valeur dans un String
    puis j'ai changé le format de la cellule en texte et j'ai recopié ma variable dans la cellule. J'ai l'indice vert en haut à gauche d'erreur de formule qui s'affiche mais
    j'ai plus de problèmes pour l'import de ma base de données dans mon classeur.

    Je m'attends maintenant à d'autre surprises, les bases de données c'est nouveau pour moi .

    Bien à toi,

    Jokarie.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Avec ça plus de problème!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Cn
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = "Data Source=" & Fichier & ";Extended Properties=""Excel 12.0 Xml;IMEX=1;"""
            .Open
        End With

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Slooby Voir le message
    Bonjour,

    J'ai déjà eu ce même problème.
    Je pense que c'est dû au fait que ta connexion dans un classeur fermé se comporte comme un accès à une base de donnée.
    C'est à dire qu'il considère ton classeur comme une base, et ton onglet comme une Table.

    Or, dans une table SQL, le type des champs est définit à la création de la table. C'est à dire que si tu as une colonne "Prenom", tous les champs seront des VARCHAR (ie String), si tu as le champs "Age", ça sera un numérique.

    Or là, dans ton classeur Excel c'est fort probable que pour une même colonne tu ai plusieurs type différents. Tu peux avoir un nombre, puis un texte, etc... De ce fait, ton RecordSet lancé dans ta macro ne se comporte pas comme tu le souhaite.

    Il reconnait le type supposé de la colonne, mais si à une certaine ligne tu as une cellule qui diffère, là ton RecordSet bug. C'est pour ça qu'il ne te renvoie rien pour certaines cellules.

    La solution: Faire un bon vieux couper/coller ?

    Slooby
    Bonjour,
    Pour information, une connexion Ado considère toujours un classeur fermé comme un base de données. Si la feuille n'a pas d'entête de colonnes, ado lui en affectera une par défaut! (F1, F2, F3, etc...). En ce qui concerne le type de valeur, Ado procède par échantillonnage, il évalue les 5 premières valeurs et déclare qu'elles son texte numérique et autre, en fonction de cela, les valeurs texte passe à la trappe si la colonne est considérées comme numérique.

    Pour éviter ça il faut lui dire que tu te fous !

    ( IMEX=1; )

  6. #6
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 128
    Par défaut
    Bonjour rdurupt,

    En pratique j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & ExternalWB_FullName & "';Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;Readonly=Yes';"
     
    // avec ExternalWB_FullName un String qui contient le chemin complet de mon classeur a ouvrir
    La propriété IMEX est bien égale à 1, mais j'ai quand même le soucis de "recordSet vide" pour chaque ligne qui n'a pas le type attendue.

    Tu n'as jamais eu de soucis toi ?

    Slooby

  7. #7
    Invité
    Invité(e)
    Par défaut
    Je t'avouerais que non, et vu que te fais les choses comme il faut, je suis perplexe!

  8. #8
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 3
    Par défaut
    Bonjour rdurupt,

    Excellent, ça fonctionne correctement pour moi, j'ai remplacé le format de mes colonnes numérique au format standard pour essayer et l'import fonctionne très bien.

    Je vous remercie pour vos réponses.

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

Discussions similaires

  1. IMPORTANT : Récupérer des données sur une base de donnee externe
    Par _cece dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 17/10/2008, 16h57
  2. importation de fichier excel vers base de donnee oracle
    Par opensource dans le forum Outils
    Réponses: 1
    Dernier message: 27/12/2007, 18h49
  3. Macro Import de donnees de plusieurs fichier excel ds une base de donnees
    Par usualpierrot dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 21/08/2007, 17h31
  4. importer une base de données
    Par mafilek dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/12/2006, 10h23
  5. Réponses: 1
    Dernier message: 28/04/2006, 16h17

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