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

VB.NET Discussion :

Lire / Ecrire dans un classeur excel en VBnet


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut Lire / Ecrire dans un classeur excel en VBnet
    Bonjour,
    Je decouvre VBnet et je cherche à transposer un petit programme que j'ai fais sous VBA6 sous excel.
    Pouvez vous me dire si c'est possible et comment s'il vous plait merci.

    VBnet semble plus adapté pour ce que je souhaite faire.

    Voici la base du code que j'utilise :

    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
        Dim Cn As ADODB.Connection
        Dim Fichier As String
        Dim NomFeuille As String, texte_SQL As String
        Dim Rst As ADODB.Recordset
     
         Fichier = "C:\Base de données.xls"
         NomFeuille = "Data"
     
        Set Cn = New ADODB.Connection
     
        '--- Connexion ---
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
            .Open
        End With
        '-----------------
     
        texte_SQL = "SELECT *  FROM [" & NomFeuille & "$]"
     
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
     
    i = 0
    UserForm2.MSFlexGrid1.Clear
    UserForm2.MSFlexGrid1.Rows = 1
     
    txtcol = "ID|"
    For nbcol = 0 To Rst.Fields.Count - 1
        txtcol = txtcol & Rst.Fields(nbcol).Name & "|"
    Next nbcol
    txtcol = Left(txtcol, Len(txtcol) - 1)
     
    UserForm2.MSFlexGrid1.FormatString = txtcol
     
    i = 0
    While Not Rst.EOF
        i = i + 1
        MSFlexGrid1.Rows = i + 1
        MSFlexGrid1.ColWidth(0) = 400
        MSFlexGrid1.TextMatrix(i, 0) = i
     
        For Col = 1 To UserForm2.MSFlexGrid1.Cols - 1
            MSFlexGrid1.ColWidth(Col) = 2000
            MSFlexGrid1.TextMatrix(i, Col) = Rst.Fields(Rst.Fields(Col - 1).Name)
        Next Col
        Rst.MoveNext
    Wend
     
     
        '--- Fermeture connexion ---
        Cn.Close
        Set Cn = Nothing
    VBnet semble ne pas aimer la ligne

  2. #2
    Invité
    Invité(e)
    Par défaut
    Tu as les fonctions d'interoperabilité d'excel.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    adodb n'existe pas en .net

    il faut le remplacer par system.data.oledb.oledbconnection
    oledbcommand pour la requete et oledbdatareader pour le curseur de lecture

    sinon le code doit ressembler à ca (le msflexgrid n'existe plus non plus, voir datagridview)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut
    Oulah oulah oulah.

    Je suis débutant sur VBnet, j'ai decouvert VBnet il y a peu...

    Bon déja changer mes variables. Cela donne si je me trompe pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim Cn As OleDb.OleDbConnection
            Dim Fichier As String
            Dim NomFeuille As String, texte_SQL As String
            Dim Rst As OleDb.OleDbDataReader
            Fichier = "C:\Base de données.xls"
            NomFeuille = "Data"
            Cn = New OleDb.OleDbConnection
    Mais ensuite que devient ma connection, il a pas l'ai d'aimer l'initialisation de la connection surtout avec le provider. Sans parler de l'oleDbcommad.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
            With Cn
                .Provider = "Microsoft.Jet.OLEDB.4.0"
                .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                    & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
                .Open()
            End With
            '-----------------
     
            texte_SQL = "SELECT *  FROM [" & NomFeuille & "$]"
     
     
            Rst = Cn.OleDbCommand(texte_SQL)

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    .provider tu supprimes la ligne

    les recordset n'existent pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    dim cmd = cn.createcommand
    cmd.commandtext = "select ..."
    dim reader = cmd.executereader
     
    while reader.Read 'positionne le curseur sur la ligne suivante
         ' reader.item(num ou nom de la colonne) contient la valeur
    end while
    après si tu veux apprendre le vb.net, il faut le faire avant de coder ou d'adapter du code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Comment mentionné par Pol63, contrairement à VB6, VB.Net est langage objet. Ca ressemble à du VB6, on peut essayer de le bidouiller comme du VB6 mais c'est vite courrir à la catastrophe. Il est préfèrable d'apprendre et de comprendre les subtilités de la programmation orientée objet avant de tenter une experience périlleuse

  7. #7
    Membre averti
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Par défaut
    Un grand merci J'ai beaucoup avancé grace à vous.
    Voici mon petit du code, juste une dernière question est il possible de maintenant utiliser des requetes update ou insert avec createcommand,merci.

    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
            Dim Cn As OleDb.OleDbConnection
            Dim Fichier As String
            Dim NomFeuille As String
            Dim i As Integer
            Fichier = "C:\Base.xls"
            NomFeuille = "Feuil1"
            Cn = New OleDb.OleDbConnection
     
            With Cn
                .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
                    & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
                .Open()
            End With
     
     
            i = 0
            Dim cmd = cn.createcommand
            cmd.commandtext = "SELECT *  FROM [" & NomFeuille & "$]"
            Dim reader = cmd.executereader
            Me.DataGridView1.ColumnCount = reader.FieldCount
            Me.DataGridView1.RowCount = 1
     
     
            While reader.Read
                i = i + 1
            End While
            Me.DataGridView1.RowCount = i + 1
            reader.Close()
            i = 0
     
     
            reader = cmd.ExecuteReader
            While reader.Read 'positionne le curseur sur la ligne suivante
                For nbcol = 0 To reader.FieldCount - 1
                    Me.DataGridView1.Item(nbcol, i).Value = reader.Item(nbcol).ToString
                Next
                i = i + 1
            End While

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

Discussions similaires

  1. Ecrire dans un classeur excel fermé
    Par schmitx dans le forum Excel
    Réponses: 0
    Dernier message: 02/02/2014, 19h28
  2. [XL-2003] Lire et écrire dans les classeurs Excel fermés
    Par skan_one dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/07/2009, 15h34
  3. lire/ ecrire dans un fichier excel
    Par simpatico dans le forum C#
    Réponses: 5
    Dernier message: 01/04/2009, 15h47
  4. [ADO VBA] Lire Ecrire dans classeur Excel fermé - Demande de précisions.
    Par botakelymg dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/11/2007, 18h08
  5. Lire/Ecrire dans un fichier excel
    Par toutounesan dans le forum C++
    Réponses: 5
    Dernier message: 14/09/2007, 23h07

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