Ouvrir la feuille 2 ou 3 dans Excel

Résolu
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 - 20 mai 2021 à 15:04
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 21 mai 2021 à 16:50
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
20 mai 2021 à 17:42
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!

0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
Modifié le 20 mai 2021 à 20:05
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
20 mai 2021 à 20:45
Il faut faire précéder le code vba par :
ApExcel.


ApExcel.wbExcel("Feuil2").Activate


@+
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137 > cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024
21 mai 2021 à 12:04
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
0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
Modifié le 21 mai 2021 à 13:28
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 mai 2021 à 14:21
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
0
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
21 mai 2021 à 15:01
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 mai 2021 à 16:22
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à
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Tempus01 Messages postés 81 Date d'inscription mercredi 6 janvier 2021 Statut Membre Dernière intervention 27 septembre 2022 2
21 mai 2021 à 16:29
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.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
21 mai 2021 à 16:50
C'est tout à fait cela. Si la saisie est correcte!
0
Rejoignez-nous