[vb.net Excel] comment selectionner une feuille par son nom et y écrire des données?
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:
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:
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:
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 :
Citation:
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