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 textbox excel [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Par défaut Lire ecrire textbox excel
    Bonjour à tous,

    Étant débutant sur VB.net après 3 jours de combat intensif entre google qui et notre ami et developpez.com, j'ai réussi a attaché mon code afin que mon textbox redonne la valeur chiffre de ma cellule excel.

    Je me retrouve un peu dans l'impasse car il m'ouvre bien mon excel, redonne la valeur, mais lorsque j'écris une valeur dans celle ci et que je ferme il n'enregistre pas ma valeur et mon programme ne tue pas tout les excel que j'ouvre à chaque fois.

    donc voici mes deux question:

    1: mon code lit il bien et ecrit t'il bien sur la feuille excel.
    2: comment tué et nettoyé excel lancé en arrière plan.

    Merci d'avance.
    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
     
    Imports Excel = Microsoft.Office.Interop.Excel
     
     
    Public Class Form1
        Dim xlApp As New Excel.Application
        Dim xlWorkBook As Excel.Workbook
        Dim xlWorkSheet As Excel.Worksheet
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            xlWorkBook = xlApp.Workbooks.Open("D:\DG")
            TextBox1.Text = xlWorkBook.Sheets("exemple").Range("D2").Value()
        End Sub
     
     
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            xlWorkBook = xlApp.Workbooks.Open("D:\DG")
            TextBox1 = xlWorkSheet.Sheets("exemple").Range("D2").Value()
            xlApp.close()
        End Sub
     
     
        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
            xlWorkBook = xlApp.Workbooks.Open("D:\DG")
            TextBox1 = xlWorkSheet.Sheets("exemple").Range("D2").Value()
            Me.Close()
     
        End Sub
    End Class

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2006
    Messages : 5
    Par défaut Re
    Bonjour,

    En fait ton problème, vient du fait à mon sens que tu ouvres plusieurs classeurs Excel et qu'il y a un souci de variable xlWorkSheet au lieu d'utiliser xlWorkBook comme dans ton Form1_Load.

    Sinon, si cela ne résout pas ton problème, je te conseillerai bien d'ouvrir une seule fois ton classeur dans ton form1_load, de le refermer dans un form_closed et de declarer une variable privé pour ton xlWorkBook que tu utilise dans toutes tes méthodes.

    Voici le code que cela donnerai :

    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
    Imports Excel = Microsoft.Office.Interop.Excel
     
     
    Public Class Form1
        Dim xlApp As New Excel.Application
    ' tu declare une variable privé uniquement accessible à ton form1
        Private xlWorkBook As Excel.Workbook
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            ' tu ouvres ton classeur et tu le stocke dans ta variable xlWorkBook
            xlWorkBook = xlApp.Workbooks.Open("D:\DG")
            ton textbox 1 prend la valeur de ta cellule dans ta feuille excel 
            TextBox1.Text = xlWorkBook.Sheets("exemple").Range("D2").Value()
        End Sub
     
     
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
    ' ta cellule dans ta feuille excel classeur prend la valeur de ton textbox1
            xlWorkBook.Sheets("exemple").Range("D2").Value=TextBox1.Text
    'tu demandes à ton formulaire de se fermer
            Me.Close()
        End Sub
     
     
        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    ' ta cellule dans ta feuille excel prend la valeur de ton textbox2
            xlWorkBook.Sheets("exemple").Range("D2").Value=TextBox2.Text
    'tu demandes à ton formulaire de se fermer
            Me.Close()
     
        End Sub
     
    Private Sub Form1_Closed(ByVal sender As Object, _ByVal e As System.EventArgs) Handles MyBase.Closed
    xlApp.close()
    End Sub
     
    End Class
    Dis-moi si tu as toujours des problèmes car cela fait longtemps que je n'ai pas touché au .net, sinon n'hésites pas à aller sur ce site il est très bien fait :

    http://msdn.microsoft.com/fr-fr/library/w0x726c2.aspx

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Par défaut
    @unareil

    Merci je vais tester cela aujourd'hui . j’espère que ça ira.
    et te donnerais des nouvelles de l'avancement de celui!.

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Par défaut
    Bonjour bonjour!

    alors j'ai nettoyer un peu mon code car j'ai trouvé quelques erreurs dans ton code que je poste (donner pour recevoir ) pour ceux qui chercherai comment faire pour:

    - Fermer correctement le programme et
    - Imprimer une feuille Excel

    Je ne sais pas si c'est vraiment correctement écrit mais ça fonctionne

    mais le grand problème et l'actualisation du textbox2:

    En effet lorsque j'écris dans mon textbox1 les feuilles qui sont dans mon classeur et qui doivent faire des calculs assez compliquer qui me donnent la valeur en "H51" cependant le textbox2 ne me redonne pas la valeur après calcule. (je ne veux pas mettre de bouton qui actualise le textbox2 car j'ai déjà assez de boutons dans mon logiciel.). sauf si je rentre une valeur dans le textbox2 il va me l'actualiser.

    Donc ma question serait :

    comment faire pour Actualiser automatiquement mon textbox2 après écriture du textbox1.

    Merci encore pour la réponse de la semaine dernière ça m'a beaucoup avancé et appris.

    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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    Imports Excel = Microsoft.Office.Interop.Excel
     
     
     
    Public Class Form1
        Dim xlApp As New Excel.Application
        Private xlWorkBook As Excel.Workbook
        'Si je rajoute xlworksheet permet'il de faire quelque chose ou je peut l'effacer?
        Dim xlWorkSheet As Excel.Worksheet
     
     
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            ' tu ouvres ton classeur et tu le stocke dans ta variable xlWorkBook
            xlWorkBook = xlApp.Workbooks.Open("D:\DG")
            'ton textbox 1 prend la valeur de ta cellule dans ta feuille excel 
     
            TextBox1.Text = xlWorkBook.Sheets("exemple").Range("D2").Value()
            TextBox2.Text = xlWorkBook.Sheets("Feuil1").Range("H51").Value()
     
        End Sub
     
     
        Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
            ' ta cellule dans ta feuille excel classeur prend la valeur de ton textbox1
            xlWorkBook.Sheets("exemple").Range("D2").Value() = TextBox1.Text
     
     
        End Sub
     
     
        Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
     
            TextBox2.Text = xlWorkBook.Sheets("Feuil1").Range("H51").Value
     
     
        End Sub
        ' private sub releaseobject et code du bouton a copier coller pour effacer la mémoire occuper et pour arreter le processus EXCEL.EXE 
        Private Sub releaseObject(ByVal obj As Object)
            xlApp.Quit()
            Try
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
                obj = Nothing
            Catch ex As Exception
                obj = Nothing
            Finally
                GC.Collect()
            End Try
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            'ferme la feuille
            xlWorkBook.Close()
            ' Quitter l'Excel Application
            xlApp.Quit()
            ' nettoyer
            releaseObject(xlWorkBook)
            releaseObject(xlApp)
            Me.Close()
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ' donne la valeur de la feuille a imprimer
            xlWorkSheet = xlWorkBook.Sheets("Feuil1")
            ' affiche Excel
            xlApp.Visible = True
            'imprime la feuille
            xlWorkSheet.PrintOut(From:=1, To:=1, Copies:=1, Collate:=True)
        End Sub
     
    End Class
    en attendant vos réponses:

    Bonne début de semaine à tous!

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

Discussions similaires

  1. lire/ ecrire dans un fichier excel
    Par simpatico dans le forum C#
    Réponses: 5
    Dernier message: 01/04/2009, 14h47
  2. lire ecrire sur un fichier Excel
    Par mrkinfo dans le forum C#
    Réponses: 3
    Dernier message: 17/09/2008, 12h01
  3. [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, 17h08
  4. Lire/Ecrire dans un fichier excel
    Par toutounesan dans le forum C++
    Réponses: 5
    Dernier message: 14/09/2007, 22h07
  5. [CSV] Ecrire et Lire un fichier Excel depuis PHP
    Par cocaetjusdorange dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2006, 11h10

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