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 :

utiliser la feuille active dans Excel


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut utiliser la feuille active dans Excel
    Bonjour,

    Est il possible de ne pas spécifier la feuille d'un document Excel pour que VB.net modifie les cases sur la feuille active dans Excel

    j'ai essayé de remplacer sheet(1) par ActiveSheet mais mon code n'a pas fonctionné

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    Imports System.Runtime.InteropServices
    Module Module1
        Sub Main()
            Dim XlApp As Object = Nothing, xls As Object = Nothing, ActiveSheet As Object = Nothing
            XlApp = GetObject("Excel.Application")
            XlApp.visible = True
            xls = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Fichier.xlsm")
            ActiveSheet = xls.ActiveSheet
            xls.Close(False)
            XlApp.Quit()
            Dispose(ActiveSheet)
            Dispose(xls)
            Dispose(XlApp)
        End Sub
        Public Sub Dispose(ByRef Obj As Object)
            Marshal.FinalReleaseComObject(Obj)
            GC.SuppressFinalize(Obj)
            GC.ReRegisterForFinalize(Obj)
            GC.Collect()
            Obj = Nothing
        End Sub
        Friend Function GetObject(ByVal App As String) As Object
            Try
                Dim Apli As Object = Marshal.GetActiveObject(App)
                Return Apli
            Catch ex As Exception
                Return CreateObject(App)
            Finally
            End Try
        End Function
        Friend Function CreateObject(ByVal app As String) As Object
            Try
                Dim AppType As Object = Type.GetTypeFromProgID(app)
                Dim ApplInst As Object = Activator.CreateInstance(AppType)
                Return ApplInst
            Catch ex As Exception
                Return Nothing
                Return False
            Finally
            End Try
        End Function
    End Module

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    J'ai modifié mon code initial et voila mon code (qui m'annonce des erreurs)

    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
       Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            With GetObject("Excel.Application")
                '.visible = True'
                With .Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\test macro.exe")
                    ActiveSheet = xls.ActiveSheet
                    ActiveSheet.Cells(5, 2).Value = TextBox1.Text
                    TextBox2.Text = .Sheets(1).Cells(1, 1).Value
                    .application.Run("test")
                    .application.DisplayAlerts = False
                    .Save()
                    .application.DisplayAlerts = True
                    .Close()
     
                End With
                .Quit()
            End With
        End Sub
    l'erreur annoncer est celle ci :
    Nom : aide.PNG
Affichages : 170
Taille : 25,9 Ko

  4. #4
    Invité
    Invité(e)
    Par défaut
    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
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim XlApp As Object = Nothing, Workbook As Object = Nothing, ActiveSheet As Object = Nothing
            XlApp = GetObject("Excel.Application")
            XlApp.visible = True
            Workbook = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.xlsm")
            ActiveSheet = Workbook.ActiveSheet
            ActiveSheet.Cells(5, 2).Value = TextBox1.Text
            TextBox2.Text = ActiveSheet.Cells(1, 1).Value
            ActiveSheet.application.Run("test")
            XlApp.DisplayAlerts = False
            Workbook.Save()
            Workbook.Close(False)
            XlApp.DisplayAlerts = True
            XlApp.Quit()
            Dispose(ActiveSheet)
            Dispose(Workbook)
            Dispose(XlApp)
        End Sub
        Private Sub Dispose(ByRef Obj As Object)
            Marshal.FinalReleaseComObject(Obj)
            GC.SuppressFinalize(Obj)
            GC.ReRegisterForFinalize(Obj)
            GC.Collect()
            Obj = Nothing
        End Sub
     
        Friend Function GetObject(ByVal App As String) As Object
            Try
                ' log.Debug("Begin...")
                Return Marshal.GetActiveObject(App)
            Catch ex As Exception
                Return CreateObject(App)
                'Log.Error("", exRD)
            Finally
                ' log.Debug("End...")
            End Try
        End Function
        Friend Function CreateObject(ByVal app As String) As Object
            Try
                ' log.Debug("Begin...")
                Dim AppType As Object = Type.GetTypeFromProgID(app)
                Dim ApplInst As Object = Activator.CreateInstance(AppType)
                Return ApplInst
            Catch ex As Exception
                Return Nothing
                'Log.Error("", exRD)
            Finally
                ' log.Debug("End...")
            End Try
        End Function
     
     
    End Class

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Tu peux sélectionner une feuille donnée comme ci-dessous et puis tu peux accéder à ses données :

    XLAPP.Sheets("Feuil1").Select()

  6. #6
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    J’essayerais ça demain merci

  7. #7
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Par défaut
    Bonjour,

    Excuse moi dysorthographie mais à quoi servent les "dispose" ? Car le programme marche seulement quand je les enlève.

  8. #8
    Invité
    Invité(e)
    Par défaut
    bonjour,
    si tu regarde dans le gestionnaire de tache tu verras qu'Excel ne disparait pas quand tu fais quitter!

    dispose permet de libérer les objet!


    renomme Dispose en Dspose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Dspose(ByRef Obj As Object)
            Marshal.FinalReleaseComObject(Obj)
            GC.SuppressFinalize(Obj)
            GC.ReRegisterForFinalize(Obj)
            GC.Collect()
            Obj = Nothing
        End Sub

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/01/2023, 12h12
  2. Cellule active dans Excel
    Par chyriu84 dans le forum C++Builder
    Réponses: 8
    Dernier message: 06/06/2008, 13h10
  3. Feuille X dans Excel en VB.NET
    Par TCW78 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 18/02/2008, 17h25
  4. Utiliser les MS agents dans Excel
    Par SilkyRoad dans le forum Contribuez
    Réponses: 0
    Dernier message: 02/09/2007, 21h49
  5. Nombre de feuilles maximum dans Excel ?
    Par Le Djé dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/10/2005, 21h30

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