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

Windows Forms Discussion :

VB.NET 2008 Requete venant d'une BD Access envoyé dans une feuille EXCEL


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut VB.NET 2008 Requete venant d'une BD Access envoyé dans une feuille EXCEL
    Bonjour à tous.

    J'aimerais savoir s'il est possible de prendre le contenu d'une requête SQL venant d'un BD Access et l'envoyer dans une feuille EXCEL ????

    Merci

    AngelEvil!

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Oui, c'est possible.
    Quel est ton point de blocage ? Quel est ton niveau de connaissance sur les accès base de données ?

  3. #3
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Je sais programmer en mode connecté (lecture et action dans les enregistrement) et non connecté (lecture seulement) en .NET.

    J'ai aussi programmé dans le passé en DAO et ADO avec VB 6.0.

    C'est la première fois que je vais travailler avec du EXCEL dans un programme.

    Je cherche un bout de code pour me montrer comment créer en mémoire un classeur excel et l'insertion des données venant d'une requête faite sur des tables dans une BD Access.

    Voilà la raison de ma question.

    Merci.

    AngelEvil!

  4. #4
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Points : 2 927
    Points
    2 927
    Par défaut
    Une FAQ répond à ta question : Comment importer les données d'une table Access vers un nouveau classeur Excel ?
    C'est du VBA, mais tu devrais pouvoir le transcrire en VB.

  5. #5
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Merci

    je vais lire cela avec attention!

    AngelEvil!

  6. #6
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Bonjour!

    Je sais que ça fait quelques jours que j'ai posté ici.... mais j'ai essayé de transférer le contenu d'une requête dans un fichier Excel....

    J'ai codé ceci et ca bloque quelque part....

    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
     
            Dim requete As String = vbEmpty
            Dim nom_fichier As String = vbEmpty
     
            If Radio_Btn_Date.Checked = True Then
                requete = "select * [Excel 8.0;" & _
                "Database=" & Chemin_XLS & "\" & nom_fichier & "].[" & "Resultat requete" & "] from Boites where date_boite between #" & Me.DTP_Date_Depart_Rapport.Value.Date & "# and #" & Me.DTP_Date_Fin_Rapport.Value.Date & "# order by date_boite"
                nom_fichier = "Liste_Entitees_Date_Debut_Fin_" & System.DateTime.Now & ".xls"
            ElseIf Radio_Btn_Tout.Checked = True Then
                requete = "select * [Excel 8.0;" & _
                "Database=" & Chemin_XLS & "\" & nom_fichier & "].[" & "Resultat requete" & "]from Boites order by date_boite"
                nom_fichier = "Liste_Complete_Entitees_" & System.DateTime.Now & ".xls"
            ElseIf Radio_Btn_Erreurs.Checked = True Then
                requete = "select * [Excel 8.0;" & _
                "Database=" & Chemin_XLS & "\" & nom_fichier & "].[" & "Resultat requete" & "] from Boites order by date_boite where probleme = " & True & ""
                nom_fichier = "Liste_Entitees_En_Probleme_" & System.DateTime.Now & ".xls"
            End If
     
            ' Mode non connecté
     
            Dim strCon$ = CStr("provider=microsoft.jet.oledb.4.0;" & "data source= " & chemin & BD & ";")
            Dim CnRapp As New OleDb.OleDbConnection
            Dim CmdR As OleDb.OleDbCommand
            Dim DtAdapteurRapp As New OleDb.OleDbDataAdapter
            Dim DtsetRapp As New DataSet()
     
            CnRapp.ConnectionString = strCon
            CnRapp.Open()
            CmdR = CnRapp.CreateCommand() 'Creation de commande
            'Transfert les données d'Access vers Excel
            CmdR.CommandText = requete
     
            Try
                DtsetRapp = New DataSet
                DtAdapteurRapp = New OleDb.OleDbDataAdapter
                DtAdapteurRapp.SelectCommand = CmdR
                DtAdapteurRapp.Fill(DtsetRapp, "Boites")
                CmdR = Nothing
                CnRapp = Nothing
                DtsetRapp = Nothing
                DtAdapteurRapp = Nothing
     
            Catch
                CmdR = Nothing
                CnRapp = Nothing
                DtsetRapp = Nothing
                DtAdapteurRapp = Nothing
     
            End Try
    Le code bloque dans try avec cette ligne de code : DtAdapteurRapp.Fill(DtsetRapp, "Boites") Ca me renvoie dans le catch....

    Avez-vous une idée ou serait le problème ?

    Merci!

    AngelEvil

  7. #7
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    Citation Envoyé par angelevil Voir le message
    Avez-vous une idée ou serait le problème ?
    Si deja, tu ne faisais pas ton try/catch comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Catch
          CmdR = Nothing
    tu pourrais au moins recuperer l'exception exacte...le premier problème, c'est donc d'arrèter l'exception swallowing, et de faire quelque chose comme (pas beaucoup mieux, mais pour faire avancer le shmilblik):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Catch ex As Exception
          MessageBox.Show("message : " & ex.Message & vbcrlf & "stack: " & ex.StackTrace)
          CmdR = Nothing
    Une fois que tu connais l'exception remontée, on peut essayer de voir d'ou ca vient, sans l'erreur, c'est pas du debuggage, c'est de la voyance

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  8. #8
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Voici le message d'erreur que j'ai pu avoir en rajoutant le code que vous m'avez donné.... C'est l'image que j'ai ajouté....

    La ligne ou ca "bug" c'est ceci : DtAdapteurRapp.Fill(DtsetRapp, "Boites")

    Merci de m'aider

    AngelEvil!
    Images attachées Images attachées  

  9. #9
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    ok, j'avais pas vu...


    mais en fait, ta requête sql n'est pas bonne...

    tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "select * [Excel 8.0;" &  "Database=" & Chemin_XLS & _
     "\" & nom_fichier & "].[" & "Resultat requete" & "] from Boites where date_boite between #" & _
    Me.DTP_Date_Depart_Rapport.Value.Date & "# and #" & Me.DTP_Date_Fin_Rapport.Value.Date & "# order by date_boite"
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "select * INTO [Excel 8.0;" &  "Database=" & Chemin_XLS & _
     "\" & nom_fichier & "].[" & "Resultat requete" & "] from Boites where date_boite between #" & _
    Me.DTP_Date_Depart_Rapport.Value.Date & "# and #" & Me.DTP_Date_Fin_Rapport.Value.Date & "# order by date_boite"

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  10. #10
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    Bonjour,

    Merci pour le INTO ! Ça réglé le problème

    Mais j'ai une interrogation.... Est-ce que c'est possible lors de la requête de mettre du code pour mettre les champs du fichier Excel à la largeur maximale des champs affichés ? genre autosize si possible....

    Merci

  11. #11
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    comme ca, non, mais tu peux ouvrir ton fichier excel par automation et faire un autosize...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  12. #12
    Membre habitué
    Homme Profil pro
    Technicien en numérisation
    Inscrit en
    Juillet 2002
    Messages
    338
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien en numérisation

    Informations forums :
    Inscription : Juillet 2002
    Messages : 338
    Points : 155
    Points
    155
    Par défaut
    J'ai créé ce code lors d'une msgbox yes/no

    la question du msgbox est simple : voulez-vous voir le contenu du fichier excel?"

    si c'est oui le code suivant est demandé

    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
     
         Private Sub ouvrir_Excel(ByVal chemin_Excel)
            Dim appExcel As Object 'Application Excel
            Dim wbExcel As Object 'Classeur Excel
            Dim wsExcel As Object 'Feuille Excel
            ' déclaration d'une variable objet de type classeur Excel
     
            appExcel = CreateObject("Excel.Application")
            'Ouverture d'un fichier Excel
            wbExcel = appExcel.Workbooks.Open(chemin_Excel)
            'wsExcel correspond à la première feuille du fichier
            wsExcel = wbExcel.Worksheets(1)
            wsExcel.visible = True
            appExcel.Visible = True
        End Sub
    J'ai essayé du code comme : wsexcel.autosize = true et ça ne fonctionne pas.

    Quelle propriété je dois mettre dans le code pour faire le autosize ?

    Merci

    AngelEvil!

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/10/2013, 22h37
  2. inserer une date en ASP dans une base ACCESS
    Par link39001 dans le forum ASP
    Réponses: 7
    Dernier message: 17/05/2006, 13h13
  3. Réponses: 2
    Dernier message: 25/02/2006, 11h04
  4. Réponses: 2
    Dernier message: 04/11/2005, 11h35

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