Bonjour,

Je rencontre actuellement un soucis pour écrire des données dans une feuille excel :

à l'initialisation de mon application, je crée 2 classeurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'variable globale pour le fichier excel exporté depuis Kelio
    Private ExcelDepart As Excel.Application = New Excel.Application
    Private edWB As Excel.Workbook
    Private edSheet As Excel.Worksheet
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'variable globale pour le fichier excel créé dans l'appli
    Private ExcelGenere As Excel.Application
    Private egWB As Excel.Workbook
    Private egSheet As Excel.Worksheet
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Le premier correspond aux données que je veux traiter via vb.net, le deuxieme stockera le resultat.

Dans mon traitement je crée les feuille qui composeront mon fichier de résultat :

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
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'on crée tout les onglets nécessaires en fonction de l'association Secteur | Maitrise
        'Création avec association des secteurs aux maitrises auxquels ils sont liés
        'en utilisant le fichier 
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        For compteur = 0 To NbLigneSecteurMaitrise - 1
            secteur = collectionSecteurMaitrise(compteur, 0)
            maitrise = collectionSecteurMaitrise(compteur, 1)
            If FeuilleExiste(maitrise) Then
            Else
                Dim lastSheet As Object = egWB.Sheets(egWB.Sheets.Count)                                 '
                Dim Newsheet As Excel.Worksheet = CType(egWB.Sheets.Add(After:=lastSheet), Excel.Worksheet) '
                Newsheet.Name = maitrise
                creeEnTeteFctFeuille(maitrise)
            End If
            If FeuilleExiste(secteur) Then
            Else
                Dim lastSheet As Object = egWB.Sheets(egWB.Sheets.Count)                                 '
                Dim Newsheet As Excel.Worksheet = CType(egWB.Sheets.Add(After:=lastSheet), Excel.Worksheet) '
                Newsheet.Name = secteur
                 'creeEnTeteFctFeuille(secteur)
            End If
        Next
J'ai crée la fonction suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub creeEnTeteFctFeuille(ByVal nomFeuille As String)
 
        Dim selectEntete = edSheet.Rows("1:" & nbLigneEntete)
        Dim FeuilleCourante As Excel.Worksheet = egWB.Worksheets("nomFeuille")
 
        selectEntete.select()
        selectEntete.copy()
        FeuilleCourante.Paste()
 
        FeuilleCourante.Rows(2).hidden = True
        FeuilleCourante.Columns.AutoFit()
 
    End Sub
Elle me permet de stocké l'entête de mon fichier de donner pour le copier dans la feuille que j'identifie par "nomFeuille"

Cependant quand je compile j'obtient l'erreur suivante :
Index non valide. (Exception de HRESULT : 0x8002000B (DISP_E_BADINDEX))
Apperemment il ne semble pas "connaitre" la feuille que je crée juste au-dessus.

Si quelqu'un vois où est mon erreur?

est-ce que j'utilise la bonne méthode pour sélectionner mes feuilles excels créés pour ensuite écrire dedans?

Merci d'avance