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 :

import de la valeur des cellules d'un fichier excel vers les textbox d'un form [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut import de la valeur des cellules d'un fichier excel vers les textbox d'un form
    Bonjour,

    Malgré pas mal de recherches, beaucoup de tripatouillages stériles pour un résultat quasi nul, je me décide a solliciter votre aide
    tout est dans le titre ou presque:

    sur un fichier excel non protege a 3 cellules, j'aimerais pouvoir importer automatiquement la valeur de ces cellules dans 3 textbox respectives d'un form

    voici un petit shéma



    precision :
    le fichier excel aura toujours le même nombre de cellules
    les formats de cellules sont compatibles avec ceux des textbox du form
    le fichier aura toujours le meme nom
    Il sera toujours placé au même endroit sur le pc utilisateur.

    Je ne suis pas certain par contre que ce soit possible si ?

    merci bien

  2. #2
    Membre actif Avatar de Neiflheim
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2011
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2011
    Messages : 135
    Points : 269
    Points
    269
    Par défaut
    Sujet déjà abordé ici il me semble, il y a pas mal de pistes à exploiter

    http://www.developpez.net/forums/d94...-excel-vb-net/

  3. #3
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    bonjour Attila54
    Si voici le code c'est dans l'event shown du form c.à.d une fois que le form se "montre" on peut charger les valeurs dans les 3 textbox.
    A moins que j'ai mal compris le probleme pose...............
    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
     
    Imports System.Windows.Forms
    Imports OXL = Microsoft.Office.Interop.Excel
    Imports System.IO
    Public Class Form1
     
        Private AppExcel As OXL.Application
        Private xlWorkbook As OXL.Workbook
        Private xlWorkSheet As OXL.Worksheet
        Private appPath As String = Directory.GetCurrentDirectory
        Private Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'garde le form en avant plan
            Me.TopMost = True
        End Sub
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
            AppExcel = New OXL.Application
            xlWorkbook = AppExcel.Workbooks.Open(appPath & "\monClasseur.xls")
            xlWorkSheet = xlWorkbook.Worksheets(1)
            AppExcel.Visible = True
     
        End Sub
        Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            Dim rng As OXL.Range = Nothing
     
            rng = Me.xlWorkSheet.Cells(1, 1)
            Me.TextBox1.Text = CType(rng.Value, String)
     
            rng = Me.xlWorkSheet.Cells(1, 2)
            Me.TextBox2.Text = CType(rng.Value, String)
     
            rng = Me.xlWorkSheet.Cells(1, 3)
            Me.TextBox3.Text = CType(rng.Value, String)
            MessageBox.Show("cellules Excel charges dans le Form.......")
        End Sub
        Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            MessageBox.Show("le classeur va etre ferme...")
            If xlWorkSheet IsNot Nothing Then
                xlWorkSheet = Nothing
            End If
            If xlWorkbook IsNot Nothing Then
                xlWorkbook = Nothing
            End If
            AppExcel.Quit()
            AppExcel = Nothing
        End Sub
     
    End Class
    bon code.................

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    bonjour a vous deux
    Alors pour répondre

    neiflheim
    j'avais effectivement vu ce topic sauf que j'ai abandonné car si le sujet était le bon, le langage était du C# et déjà que je suis faiblard en vb .......

    Mabrouki
    Au cas ou je me serais mal exprimé, le problème est le suivant :
    -Je reçois par mail un fichier Excel non protégé, ayant toujours le même nom et toujours placé dans le même répertoire, disons "mes documents".
    -Ce fichier Excel contient 3 cellules remplies par l’émetteur du mail (deux nombres à 2 décimales et un nombre entier).
    -Je place ce fichier dans "mes documents"
    -Mon appli en vb.net est ouverte, le formulaire contient 3 textbox

    Mon but :
    importer les 3 valeurs des cellules du fichier excel dans les 3 textbox de mon form.

    Cela peut il se faire avec un button import ? ou d'une autre manière ..... ?? peu m'importe en fait

    Est ce cela que tu avais compris ?
    quand je lis ton code j'ai l'impression que
    - le onload du form ouvre automatiquement monclasseur.xls et le montre
    - le Shown importe le contenu des cellules excel dans les textbox
    - envoie un message quand l'import est termine
    - Ferme le .xls a la fermeture du form

    ce qui est super.
    Par contre parfois, je n'aurai pas a importer de valeurs a l'ouverture du form et ne serait ce pas mieux qu'un button "load data" exécute le code sur onclick ? ce qui me permettrait de ne l'utiliser qu'en cas de nécessite.

    Merci a vous 2

  5. #5
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 442
    Points
    4 442
    Par défaut
    rebonjour
    Tout depend du besoin.Tu peux mettre un bouton "LoadData" qui execute l'appli excel(code du sub new)+le code du Form_Shown ensemble...bien sur...
    Mais si on doit inspecter le contenu de la boite e-mail frequemment ,il convient de quitter excel puis de relancer à zero l'appli le tout dans le boiton data....
    en voici le code amenage dans ce cas de figure:

    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 System.Windows.Forms
    Imports OXL = Microsoft.Office.Interop.Excel
    Imports System.IO
    Public Class Form2
     
        Private AppExcel As OXL.Application
        Private xlWorkbook As OXL.Workbook
        Private xlWorkSheet As OXL.Worksheet
        Private appPath As String = Directory.GetCurrentDirectory
        Private Sub New()
     
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'garde le form en avant plan
            Me.TopMost = True
        End Sub
        Private Sub btnLoadData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadData.Click
            'ce code est utile si on consulte frequemment le classeur e-mail
            If AppExcel IsNot Nothing Then
                MessageBox.Show("le classeur sera ferme et l'application relance pour mise à jour patienter!...")
                If xlWorkSheet IsNot Nothing Then
                    xlWorkSheet = Nothing
                End If
                If xlWorkbook IsNot Nothing Then
                    xlWorkbook = Nothing
                End If
                AppExcel.Quit()
                AppExcel = Nothing
     
            End If
            'fin de ce code
     
            'ouvre l'appli
            AppExcel = New OXL.Application
            xlWorkbook = AppExcel.Workbooks.Open(appPath & "\monClasseur.xls")
            xlWorkSheet = xlWorkbook.Worksheets(1)
            AppExcel.Visible = True
     
            'clear textbox
            Me.TextBox1.Clear()
            Me.TextBox2.Clear()
            Me.TextBox3.Clear()
     
            'chargement des data  
            Dim rng As OXL.Range = Nothing
     
            rng = Me.xlWorkSheet.Cells(1, 1)
            Me.TextBox1.Text = CType(rng.Value, String)
     
            rng = Me.xlWorkSheet.Cells(1, 2)
            Me.TextBox2.Text = CType(rng.Value, String)
     
            rng = Me.xlWorkSheet.Cells(1, 3)
            Me.TextBox3.Text = CType(rng.Value, String)
            MessageBox.Show("cellules Excel charges dans le Form.......")
        End Sub
        'avertissement en cas de fermeture du form
        Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            MessageBox.Show("le classeur va etre ferme...")
            If xlWorkSheet IsNot Nothing Then
                xlWorkSheet = Nothing
            End If
            If xlWorkbook IsNot Nothing Then
                xlWorkbook = Nothing
            End If
            AppExcel.Quit()
            AppExcel = Nothing
        End Sub
    End Class
    bon code..............

  6. #6
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    Salut MABROUKI,

    Bah en fait, j'hésite sur la manière de proceder .......
    Pour etre tres clair, un fichier excel renferme des données libres concernant 1 patient.
    On traite nos propres patients (entree des données "a la mano") mais aussi ceux de confrères (c'est les fameux .xls)

    La boite mail concernée va recevoir, une fois 1 fichier excel, un autre jour 5, un autre jou 0 ..... et en tout etat de cause:
    - on ne peux traiter qu'un seul .xls a la fois
    -on les traite a une certaine heure de la journée (en general vers 18h00)

    je me demande donc quelle serait la solution la plus adequate.

  7. #7
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    Voila ce que ca donne chez moi, j'ai des erreurs sur les lignes en rouge :

    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
    73
    74
    75
    76
    
    Imports System.Windows.Forms
    Imports OXL = Microsoft.Office.Interop.Excel
    Imports System.IO
    
    Public Class Form1
        Private AppExcel As OXL.Application 'type OXL application non defini
        Private xlWorkbook As OXL.Workbook 'type OXL workbook non defini
        Private xlWorkSheet As OXL.Worksheet 'type OXL worksheet non defini
        Private appPath As String = Directory.GetCurrentDirectory
        Private Sub New()
    
            ' Cet appel est requis par le Concepteur Windows Form.
            InitializeComponent()
    
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            'garde le form en avant plan
            Me.TopMost = True
        End Sub
        Private Sub btnLoadData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLoadData.Click
            'ce code est utile si on consulte frequemment le classeur e-mail
            If AppExcel IsNot Nothing Then
                MessageBox.Show("le classeur sera ferme et l'application relance pour mise à jour patienter!...")
                If xlWorkSheet IsNot Nothing Then
                    xlWorkSheet = Nothing
                End If
                If xlWorkbook IsNot Nothing Then
                    xlWorkbook = Nothing
                End If
                AppExcel.Quit()
                AppExcel = Nothing
    
            End If
            'fin de ce code
    
            'ouvre l'appli
            AppExcel = New OXL.Application 'type OXL application non defini
            xlWorkbook = AppExcel.Workbooks.Open(appPath & "\monClasseur.xls")
            xlWorkSheet = xlWorkbook.Worksheets(1)
            AppExcel.Visible = True
    
            'clear textbox
            Me.TextBox1.Clear()
            Me.TextBox2.Clear()
            Me.TextBox3.Clear()
    
            'chargement des data  
            Dim rng As OXL.Range = Nothing 'type OXL range non defini
    
            rng = Me.xlWorkSheet.Cells(1, 1)
            Me.TextBox1.Text = CType(rng.Value, String)
    
            rng = Me.xlWorkSheet.Cells(1, 2)
            Me.TextBox2.Text = CType(rng.Value, String)
    
            rng = Me.xlWorkSheet.Cells(1, 3)
            Me.TextBox3.Text = CType(rng.Value, String)
            MessageBox.Show("cellules Excel charges dans le Form.......")
        End Sub
        'avertissement en cas de fermeture du form
        Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
            MessageBox.Show("le classeur va etre ferme...")
            If xlWorkSheet IsNot Nothing Then
                xlWorkSheet = Nothing
            End If
            If xlWorkbook IsNot Nothing Then
                xlWorkbook = Nothing
            End If
            AppExcel.Quit()
            AppExcel = Nothing
        End Sub
        Private Sub Buttonclose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Buttonclose.Click
            Me.Close()
        End Sub
    End Class
    ainsi que dans le designer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    <Global.System.Diagnostics.DebuggerStepThroughAttribute()>  _
            Protected Overrides Sub OnCreateMainForm()
                Me.MainForm = Global.WindowsApplication3.Form1 ' Erreur7	'Form1' est un type dans 'WindowsApplication3' et ne peut pas être utilisé en tant qu'expression.	
            End Sub
    je ne comprends pas ce que j'ai omi

    je precise que pour le test, mon classeur s'appelle bien monClasseur.xls et est place dans "mes documents" et mes textbox sont egalement nommées comme dans le code

    J'ai l'impression que tout vient de la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports OXL = Microsoft.Office.Interop.Excel
    pourtant cela ne devrait pas ou alors j'ai oublié quelque chose dans les references ?

  8. #8
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juin 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2005
    Messages : 608
    Points : 145
    Points
    145
    Par défaut
    bon c'est ok je viens de trouver
    J'avais oublie le composant microsoft excel 14 object library et je m'etais un peu fourvoye dans l'apppath

    Tout fontionne bien maintenant niveau importation juste un micro truc,
    on dirait que le topmost le fonctionne pas car la feuile excel passe au dessus de mon form et du coup je ne vois plus ni le form, ni le message indiquant que l'importation est ok mais ce n'est pas grave, je mets visible a false
    merci bien pour l'aide

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/03/2011, 22h42
  2. Copier des cellules de 2 fichiers excels
    Par peofofo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/06/2008, 12h28
  3. copier des cellules de 2 fichiers Excel identiques
    Par Fab2008 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/06/2008, 00h05
  4. Importer des données d'un fichier Excel vers Javascript
    Par rafiq25 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/01/2008, 16h30

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