Ouvrir la feuille 2 ou 3 dans Excel [Résolu]

Signaler
Messages postés
32
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
21 mai 2021
-
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
-
Bonjour le forum,

Je cherche le moyen d'ouvrir la feuille 2 ou 3 dans Excel, j'arrive à ouvrir le classeur "feuille 1" avec le code ci dessous:
 Dim p As New Process
p.StartInfo.FileName = "C:\monFichier.xlsx"
            p.Start()


Merci pour votre aide.

5 réponses

Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
124
Bonjour,

2 façons de procéder:

tu fais tout en vb.net en pilotant Excel:

https://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net

Sinon tu peux préparer ton classeur pour qu'il s'ouvre sur la feuille désirée. Cela se fait en vba;

a mettre dans ThisWorkbook:

Option Explicit
Private Sub Workbook_Open()
 Sheets("Feuil2").Activate
End Sub


c'est le plus simple!

Messages postés
32
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
21 mai 2021

Bonsoir,
Merci pour le lien et le bout de code vba pour Excel.

Mais je souhaite que l'utilisateur final puisse ouvrir dans le classeur Excel la feuille désirée par une sélection sur un formulaire fait avec Visual Studio en VB.net.
Dans la classeur Excel il y a 8 feuilles, avec la méthode en vba il faudrait 8 copies du classeur.

Le code du bouton ci dessous du lien https://codes-sources.commentcamarche.net/source/100410-piloter-office-en-vb-net
se rapproche plus, cependant, je ne trouve pas dans ce bouton le code qui permet d'ouvrir le classeur Excel à la feuille désirée.
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'Créer une instance de Excel
Dim ApExcel As New Excel.Application
Dim wbExcel As New Excel.Worksheet
'Créer un nouveau classeur
ApExcel.Workbooks.Add()
'Ouvrir un classeur
'ApExcel.Workbooks.Open("chemin classeur.xls")
'rendre le classeur visible
ApExcel.Visible = True
ApExcel.Range("A1").Formula = "Bonjour" 'Ajouter du texte à une cellule
ApExcel.Workbooks.Close() 'on ferme le classeur
ApExcel.Visible = False
ApExcel.Quit() 'on ferme Excel
End Sub


Encore merci pour votre aide.
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
124
Il faut faire précéder le code vba par :
ApExcel.


ApExcel.wbExcel("Feuil2").Activate


@+
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
124 >
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021

Voici un exemple de ce que l'on peut faire:

Un Form et un Bouton:

'Aller dans My Project- Références et ajouter dans COM:
'Microsoft Excel Object 12.0 Library
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel
Public Class Form1
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        'Déclaration des variables
        Dim appExcel As New Excel.Application
        Dim wbExcel As Excel.Workbook
        Dim chemin As String
        Dim mafeuille As String

        mafeuille = InputBox("Saisissez la feuille à ouvrir", "Sélection feuille", "Feuil2")

        Dim openFD As New OpenFileDialog
        With openFD
            .Filter = "Excel Files (*.xlsx)|*.xlsx"
            .Title = "Sélectionnez le classeur que vous souhaitez ouvrir."
            If .ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                chemin = .FileName
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture fichier", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With
        'Ouverture d'Excel
        appExcel.Visible = True
        'Ouverture de mon fichier Excel
        wbExcel = appExcel.Workbooks.Open(chemin)

        'Affichage de la feuille voulue
        wbExcel.Worksheets(mafeuille).Activate()
        
        ' appExcel.Visible = False
        ' appExcel.Quit()

    End Sub
End Class


ne pas oublier d''aller dans My Project- Références et ajouter dans COM:
Microsoft Excel Object 12.0 Library


@+ Le Pivert
Messages postés
32
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
21 mai 2021

Bonjour,
Merci pour ce bouton, mais j'ai une erreur sur Application.StartupPatch lorsque je saisie ces deux imports.
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel


            ' créer un nouveau fichier
            Dim path As String = (Application.StartupPath & "\SETUPTL.txt")
            If IO.File.Exists(path) Then
                Exit Sub
            Else
                IO.File.Create(Application.StartupPath & "\SETUPTL.txt")
            End If


Pour info, j'ai ajouter la référence Microsoft Excel Object 16.0 Library .

Encore merci.
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
124
essaie ceci:

 ' créer un nouveau fichier
        Dim path As String = My.Application.Info.DirectoryPath & "\SETUPTL.txt"
        If IO.File.Exists(path) Then
            Exit Sub
        Else
            IO.File.Create(My.Application.Info.DirectoryPath & "\SETUPTL.txt")
        End If


@+ Le Pivert
Messages postés
32
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
21 mai 2021

Ok, votre code a résolu l'erreur, maintenant j'ai adapté le code de votre bouton, mais je ne suis pas sur de ma saisi pour l'InputBox et une petite erreur est apparu pour l'afichage de la feuille voulue
 Dim appExcel As New Excel.Application
        Dim wbExcel As Excel.Workbook
        Dim chemin As String
        Dim mafeuille As String

        mafeuille = InputBox("C:\Essai.xlsx", "2", "Feuil2")

        Dim openFD As New OpenFileDialog
        With openFD
            .Filter = "Excel Files (*.xlsx)|*.xlsx"
            .Title = "Sélectionnez le classeur que vous souhaitez ouvrir."
            If .ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                chemin = .FileName
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture fichier", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With
        'Ouverture d'Excel
        appExcel.Visible = True
        'Ouverture de mon fichier Excel

        wbExcel = appExcel.Workbooks.Open("C:\Essai.xlsx")

        'Affichage de la feuille voulue
        wbExcel.Worksheets(mafeuille).Activate()



Il ne manque pas grand chose pour que cela fonctionne je pense.
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
124
mettre ceci tout en haut

Option Strict Off
'Aller dans My Project- Références et ajouter dans COM:
'Microsoft Excel Object 12.0 Library
Imports Microsoft.Office.Interop
Imports Microsoft.Office.Interop.Excel


Je t'ai donné un code fonctionnel, pourquoi avoir tout changé?
OpenFileDialog te permet de sélectionner n'importe quel fichier et évite les chemins en dur.

Les données de l'InputBox ne ressemblent à rien
1ère saisie le message , 2ème saisie le titre et 3ème saisie la saisie par défaut qui va s'afficher,

Voilà
Messages postés
32
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
21 mai 2021

Ok, je viens de comprendre de mon côté je cherche à avoir un chemin en dur, en gros un bouton qui permet d'accéder à la feuille 2,3 ou 4 par exemple, donc il n'y a rien à toucher dans l'InputBox.
Si je retire cette partie
Dim openFD As New OpenFileDialog
        With openFD
            .Filter = "Excel Files (*.xlsx)|*.xlsx"
            .Title = "Sélectionnez le classeur que vous souhaitez ouvrir."
            If .ShowDialog(Me) = System.Windows.Forms.DialogResult.OK Then
                chemin = .FileName
            Else
                MessageBox.Show("Opération annulée par l'utilisateur!", "Ouverture fichier", MessageBoxButtons.OK, MessageBoxIcon.Information)
                Exit Sub
            End If
            .Dispose()
        End With

le classeur Excel devrait s'ouvrir directement sur la feuille demandée.
Messages postés
7415
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2021
124
C'est tout à fait cela. Si la saisie est correcte!