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 :
Le premier correspond aux données que je veux traiter via vb.net, le deuxieme stockera le resultat.
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 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dans mon traitement je crée les feuille qui composeront mon fichier de résultat :
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
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
Elle me permet de stocké l'entête de mon fichier de donner pour le copier dans la feuille que j'identifie par "nomFeuille"
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
Cependant quand je compile j'obtient l'erreur suivante :
Apperemment il ne semble pas "connaitre" la feuille que je crée juste au-dessus.Index non valide. (Exception de HRESULT : 0x8002000B (DISP_E_BADINDEX))
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
Partager