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 :

ecrire dans un fichier excel ouvert [Débutant]


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 49
    Points
    49
    Par défaut ecrire dans un fichier excel ouvert
    Bonjour a tous, j'ai un code pour ouvrir un fichier excel et écrire dedans , pas de problème ( dans une form1 ) , j'ai créer une form 2 et j'aimerai écrire dans le fichier excel ouvert dans la form 1 et problème impossible de trouver comment faire!!!
    Je ne veux pas ouvrir ou creer un nouveau fichier excel je veux simplement ecrire dans le fichier excel deja ouvert dan sla form 1 mais impossible
    au secours !!
    merci de votre aide
    Greg
    voici le code de la form 1

    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
     
    Imports Excel = Microsoft.Office.Interop.Excel
    Public Class Form1
        Dim APP As New Excel.Application
        Dim worksheet As Excel.Worksheet
        Dim workbook As Excel.Workbook
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            workbook = APP.Workbooks.Open("I:\x.xlsx")
            worksheet = workbook.Worksheets("Feuil1")
     
     
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            worksheet.Cells(1, 1).Value = TextBox1.Text
     
        End Sub [/I]

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    et si tu déclares worksheet As Excel.Worksheet comme public
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Public  worksheet As Excel.Worksheet
    et dans l'autre form
    Form1.worksheet.Cells(1, 1) = ce que tu veux

  3. #3
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    merci Shayw pour t'on aide,
    Ca ne fonctionne pas , j'ai toujours le même message d'erreur "La référence d'objet n'est pas définie à une instance d'un objet." , je dois faire une connerie mais ou????
    merci encore Greg

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En ajoutant la référence, soit à ExcelXX Object Library, (si ti n'as pas les Primary Interrop Assemblies d'office), soit à Microsoft.Office.Interop.Excel, si tu as les Primary Interop Assemblies, ceci "marche "full pin" chez-moi

    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
    Imports excel = Microsoft.Office.Interop.Excel
    Public Class Form2
        Dim APP As New excel.Application
        Dim worksheet As excel.Worksheet
        Dim workbook As excel.Workbook
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            APP.Visible = True
            workbook = APP.Workbooks.Open("vitefait.xlsx")
            worksheet = workbook.Worksheets("Feuil1")
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            worksheet.Cells(1, 1).Value = TextBox1.Text
     
        End Sub
    End Class
    Donc, la question qui tue : as-tu ajouté la référence (Excel ou PIA) ?

  5. #5
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    Bonjour,
    1-Oui j'ai activé la référence COM dans vb , puisque dans la FORM 1 j'arrive à ouvrir le fichier excel "I:\x.xlsx"et écrire dedans , ensuite je ferme la form 1 sans fermer le fichier excel "I:\x.xlsx" et j'ouvre une form 2 mais je n'arrive pas à écrire dans ce fichier excel a partir de la form 2!!!!
    2-Clement , je supose que le code que tu as mis est à coller dans la form1 , je ne comprend pas:
    "Public Class Form2" et" Private Sub Form1_Load"??
    Bonne journée
    GReg

  6. #6
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par gregm954 Voir le message
    Bonjour,
    1-Oui j'ai activé la référence COM dans vb , puisque dans la FORM 1 j'arrive à ouvrir le fichier excel "I:\x.xlsx"et écrire dedans , ensuite je ferme la form 1 sans fermer le fichier excel "I:\x.xlsx" et j'ouvre une form 2 mais je n'arrive pas à écrire dans ce fichier excel a partir de la form 2!!!!
    2-Clement , je supose que le code que tu as mis est à coller dans la form1 , je ne comprend pas:
    "Public Class Form2" et" Private Sub Form1_Load"??
    Bonne journée
    GReg
    Oups!!!!!!!!!!!

    Dans mon cas, c'est Form2, parce que le l'ai ajouté à un autre programme que j'utilise pour des tests. Tu peux l'utiliser dans Form1. Mais si tu réussis à ouvrir Excel et son fichier dans ta Form1, mon code ne changera pas grand chose. En lisant ta réponse, je réalise que je suis "mal parti".

    Donc l'idée de base, c'est que ton fichier est ouvert dans ta Form1 et il reste ouvert quand tu ouvres ta Form2 qui doit utiliser le fichier ouvert.

    Quand j'ai lu ta question initiale, j'avais compris que tu utilisais ta Form1 pour ouvrir ta Form2 et que c'était ta Form2 qui ouvrait Excel et le fichier. Il va falloir que j'y repense. Désolé pour l'erreur.

  7. #7
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Bon voilà, j'ai revu ma copie et j'ai deux Forms.

    Form1:

    1 Textbox
    1 Bouton pour copier le contenu du textbox dans la feuille Excel
    1 Bouton pour ouvrir Form2
    1 bouton pour terminer,

    Form2

    1 Textbox
    1 bouton pour copier le contenu de la cellule Excel dans le TextBox
    1 bouton pour fermer la form.

    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
    Imports excel = Microsoft.Office.Interop.Excel
     
    Public Class Form1
        Public APP As New excel.Application
        Public worksheet As excel.Worksheet
        Public workbook As excel.Workbook
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            APP.Visible = True
            workbook = APP.Workbooks.Open("vitefait.xlsx")
            worksheet = workbook.Worksheets("Feuil1")
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            worksheet.Cells(1, 1).Value = TextBox1.Text
     
        End Sub
     
        Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
            APP.Quit()
            Me.Dispose()
        End Sub
     
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Form2.Show()
        End Sub
    End Class
     
    Imports excel = Microsoft.Office.Interop.Excel
    Public Class Form2
        ' Dim APPExcel As excel.Application
        Dim worksheetExcel As excel.Worksheet = My.Forms.Form1.worksheet
        Dim workbookExcel As excel.Workbook = My.Forms.Form1.workbook
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
        End Sub
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            TextBox1.Text = worksheetExcel.Cells(1, 1).Value
     
        End Sub
     
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Me.Dispose()
        End Sub
    End Class
    Je ne sais pas si c'est dû à Option Explicit, à la version du Framework cible (dans ce cas-ci, chez-moi c'est le Framework 4.5) ou à autre chose; mais, des fois on obtient un message d'horreur pas vraiment évident avec des variables publiques. L'idée étant que l'on peut avoir une variable publique dans une classe, mais que l'on doive quand même la déclarer avant de l'utiliser dans une autre classe. C'est pour cela que dans Form2, il y a ces deux lignes "au long":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim worksheetExcel As excel.Worksheet = My.Forms.Form1.worksheet
    Dim workbookExcel As excel.Workbook = My.Forms.Form1.workbook
    Worksheet et Workbook sont publiques dans Form1, mais Form2 est pour ainsi dire imperméable aux variables publiques non explicitement déclarées. Au début, on trouve cela haïssable, mais, une fois que l'on s'est habitué, je trouve que c'est plutôt une bonne chose; ne serait-ce que pour "encadrer" ou "discipliner" l'utilisation des variables publiques.

    Je n'ai pas fait de tests approfondis, mais, je me demande si cela ne finit pas par limiter les dommages collatéraux des variables publiques qui prennent la "mauvaise valeur" au mauvais moment et qui font planter le programme à un endroit imprévu.

  8. #8
    Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Avril 2015
    Messages : 90
    Points : 49
    Points
    49
    Par défaut
    Bonjour a tous
    merci Clement çà fonctionne bien, merci encore!!

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

Discussions similaires

  1. [AC-2013] Ecrire dans un fichier Excel 2013 ouvert
    Par unlucky luke dans le forum VBA Access
    Réponses: 2
    Dernier message: 26/06/2014, 13h23
  2. [C#] Comment écrire dans un fichier Excel ?
    Par chorokari dans le forum C#
    Réponses: 8
    Dernier message: 09/02/2007, 09h17
  3. comment ecrire dans un fichier excel
    Par dietrich dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 15/01/2007, 12h46
  4. [C#] Comment écrire dans un fichier Excel ?
    Par FoxDeltaSierra dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/05/2006, 15h29
  5. [VB]Ecrire dans un fichier excell
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 07/02/2006, 12h55

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