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

Excel Discussion :

Exportation données ET mise en forme via ADO


Sujet :

Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Points : 47
    Points
    47
    Par défaut Exportation données ET mise en forme via ADO
    Bonjour à tous,

    J'ai besoin d'exporter des données à partir d'un classeur fermé. J'ai donc utilisé ADO et cela fonctionne bien.
    J'ai cependant deux questions: comment exporter la mise en forme en même temps que les données?
    Et pourquoi la première ligne n'est pas exportée?

    Edit: Apres étude plus minutieuse de mes résultats, ce n'est pas forcément la première ligne qui manque.
    Pour certains fichiers elle est bien présente mais il manque d'autres cellules, pour d'autres elle manque et tout le reste est là et pour d'autres encore elle manque et d'autres cellules également!
    Une explication?

    Voici mon code:

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub Exporterdonnees_Click() 
     
    'Déclaration des variables
    Dim Box As CheckBox
    Dim Cn As ADODB.Connection
    Dim Fichier As String
    Dim NomFeuille As String
    Dim NomFich As String
    Dim Chemin As String
    Dim texte_SQL As String
    Dim Rst As ADODB.Recordset
    Dim i As Double
     
    i = 1 'On initialise i à 1
     
    'On efface complètement l'onglet Données exportées pour pouvoir ensuite écrire les données exportées
    Worksheets("Données exportées").Range("A1:BZ4000").Clear
     
    For Each Box In Worksheets("Liste des projets").CheckBoxes 'On parcourt les cases à cocher de la page Liste des projets
     
        If Box.Value = 1 Then 'Si la case est cochée on lance l'exportation
     
     
            'Définit le classeur fermé servant de base de données
            NomFich = Box.Caption
            Chemin = "d:\personal\gt\desktop\Projets annexes\"
            Fichier = Chemin & NomFich
     
            'Nom de l'onglet à exporter dans le classeur fermé
            NomFeuille = "CotationA$" 
     
            Set Cn = New ADODB.Connection
     
            ' Connection
            With Cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=" & Fichier & _
                     ";Extended Properties=""Excel 8.0;HDR=NO"""
                .Open
            End With
     
            'Définit la requête.
            texte_SQL = "SELECT * FROM [" & NomFeuille & "]"
     
            Set Rst = New ADODB.Recordset
            Set Rst = Cn.Execute(texte_SQL)
     
            'Ecrit le résultat de la requête toute les 40 lignes
            Worksheets("Données exportées").Cells(i, 1).CopyFromRecordset Rst
            i = i + 40
     
            'Déconnexion
            Cn.Close
            Set Cn = Nothing
     
        End If
     
    Next
    End Sub
    Merci d'avance à ceux qui prendront le temps de me donner un coup de main.

    gbbtt

  2. #2
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 155
    Points
    1 155
    Billets dans le blog
    2
    Par défaut
    comment exporter la mise en forme en même temps que les données?
    Tu ne pourras pas le faire via ADO qui est une interface pour les bases de données.

    Et pourquoi la première ligne n'est pas exportée?
    Essaie de mettre ton code HDR = Yes et non à No

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            With Cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Data Source=" & Fichier & _
                     ";Extended Properties=""Excel 8.0;HDR=Yes"""
                .Open
            End With
    Si j'ai bien compris la doc en anglais, l'option No a pour effet de donner à ta colonne le nom de la premier ligne.

    Cordialement.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Points : 47
    Points
    47
    Par défaut
    Bonjour dev-ggy

    Merci de ta réponse, c'est bien dommage pour la mise en forme! Je vais chercher une autre solution.

    Sinon le passage de Yes à No n'a absolument rien changé!

  4. #4
    Membre éprouvé

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Points : 1 116
    Points
    1 116
    Par défaut
    Bonjour

    Ta feuille à importer doit ^tre une liste de données: est ce le cas?

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    Qu'est-ce que tu appelles une liste de données?
    Étant donné que je ne sais pas ce que c'est il y a peu de chance que ça en soit une...

    C'est une feuille assez classique avec un tableau, des chiffres, des commentaires...

  6. #6
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 925
    Points
    55 925
    Billets dans le blog
    131
    Par défaut
    Salut.

    Ce ne doit pas forcément être une liste de données (menu Données > Liste > Créer une liste) mais si cela n'en est pas une, cela doit être une plage rectangulaire qui pourra être considérée par le moteur de données comme une table de données.

    Elle doit donc respecter les points suivants :
    • posséder une ligne d'entête ;
    • ne pas avoir de cellules vides dans la ligne d'entête ;
    • ne pas comporter de lignes entièrement vide dans le corps des données ;
    • la cellule du coin supérieur gauche doit être en A1;
    • les colonnes doivent contenir des données de même type.


    A ces conditions, tu pourras récupérer un recordset ADO valide sans perte de données. Note que si la plage de récupération ne contient pas d'entête, tu pourras récupérer les noms des champs par une boucle sur la collection des champs du recordset et l'extraction des noms desdits champs.

    Si tes données sont éparses sur la feuille et ne respectent donc pas le schéma ci-dessus, ... bonne chance... Tu trouveras dans les tutos de SilkyRoad des exemples d'extraction de données de classeurs fermés. La FAQ te renseignera également sur le sujet.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 46
    Points : 47
    Points
    47
    Par défaut
    Salut

    Merci pour cette réponse détaillée.

    Effectivement ma feuille de données ne correspond pas à ses critères et je ne peux hélas pas modifier ces classeurs.

    Je vais donc me pencher sur les tutos pour essayer de m'en sortir.

    gbbtt

Discussions similaires

  1. Backgrid.js : vos données tabulaires mises en forme simplement !
    Par FirePrawn dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/12/2012, 10h06
  2. [WD-2003] Exporter style de mise en forme dans autre document
    Par mikael2235 dans le forum Word
    Réponses: 2
    Dernier message: 28/10/2011, 12h40
  3. BO 5.1.n Export Excel avec mise en forme
    Par Ptchat33 dans le forum Launchpad (ex-Infoview)
    Réponses: 4
    Dernier message: 28/03/2011, 09h05
  4. Ouvrir Excel apres mise en forme via VBA
    Par Anaxagore dans le forum VBA Access
    Réponses: 2
    Dernier message: 12/11/2010, 10h37

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