Je créer un programme permettant de piloter excel:
Imports Microsoft.Office.Interop
Imports System.IO
Imports Microsoft.Office
Imports Microsoft.Office.Interop.Excel
Private Sub createButton_Click() Handles createButton.Click
'Déclaration des variables
Dim appExcel As New Excel.Application
Dim wbExcel As Excel.Workbook
If TextBox7.Text Nothing Or TextBox6.Text Nothing Or TextBox5.Text = Nothing Or TextBox8.Text = Nothing Or TextBox4.Text = Nothing Or TextBox3.Text = Nothing Or TextBox2.Text = Nothing Then
MsgBox("Un ou plusieurs champs sont vides.Veuillez les remplir.", vbCritical, "Erreur !")
End If
'Ouverture d'Excel
appExcel = CreateObject("Excel.Application")
'Ouverture de mon fichier Excel
wbExcel = appExcel.Workbooks.Open("C:\Users\Patricia\Desktop\Rapports.xls")
'Affichage de la feuille voulue
If ComboBox1.SelectedItem = "Rapports" Then wbExcel.Worksheets("Rapports 2013").Select()
If ComboBox1.SelectedItem = "Notes d'atelier" Then wbExcel.Worksheets("Notes d'Atelier 2013").Select()
If ComboBox1.SelectedItem = "Mémos" Then wbExcel.Worksheets("Mémos 2013").Select()
If ComboBox1.SelectedItem = "Comptes rendus" Then wbExcel.Worksheets("Comptes rendus 2013").Select()
If ComboBox1.SelectedItem = "Notes environnement" Then wbExcel.Worksheets("Notes environnement").Select()
If ComboBox1.SelectedItem = "Notes sécurité" Then wbExcel.Worksheets("Notes sécurité").Select()
If ComboBox1.SelectedItem = "Notes d'infos" Then wbExcel.Worksheets("Notes d'Info 2013").Select()
If ComboBox1.SelectedItem = "Notes d'équipes" Then wbExcel.Worksheets("Notes d'équipes 2013").Select()
appExcel.Visible = True
'appExcel.Visible = False
''appExcel.Quit()
End Sub
Et je désirerai que le contenu de mes textbox se mettent dans la bonne colonne à la prochaine ligne vierge. Mon soucis est que j'ai du mal à trouver une méthode me permettant de trouver la prochaine cellule vide d'une colonne. J'ai essayé ceci :
'Selectionne la première cellule du tableau
Range("A1").Select()
'Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select()
Loop
Mais j'ai pas mal d'erreurs :/. Range est un type et ne peut être utilisé en tant qu'expression
Et après NlLigne , ActiveCell , IsEmpty , Selection ne sont pas déclarés.
Je ne m'en sort plus depuis un moment même en traînant sur le net
Parce que tu as déjà créé ton objet Excel avec cette ligne:
Dim appExcel As New Excel.Application
En fait, il y a deux façons de créer un com en VB.net. La liaison précoce (Early Binding) et la liaison tardive (Late Binding). Je vais t'épargner le débat sur laquelle est la meilleure. Actuellement, c'est l'Early Binding qui semble être en tête.
Tu as une une liaison précoce quand tu ajoutes ton objet à tes références. (Soit l'objet lui-même, soit les Primary Interop Assemblies:
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 26 juin 2013 à 20:33
Bonjour,
1) Range est dans cette affaire un objet de VBA/Excel et non de VB.Net. En conséquence : VB.Net ne saurait ce qu'est Range("A1").Select()?. Il en va de même en ce qui concerne ActiveCell, Selection.Offset ...
En "pilotage" (puisque tu pilotes depuis VB.Net) tu ne peux te référer à un membre d'une appli acceptant l'automation (ce qui est le cas de Excel), qu'en tant que membre d'un objet créé (et dont un objet Feuille d'un objet classeur).
Les exemples de "pilotage" ne manquent pas sur ce forum, pour que tu en comprennes le principe général
2)On ne peut valablement "piloter" que ce que l'on maîtrise (VBA/Excel, en ce qui te concerne).
Ta recherche
'Selectionne la première cellule du tableau
Range("A1").Select()
'Boucle tant que pas vide
Do While Not (IsEmpty(ActiveCell))
NbLigne = NbLigne + 1
Selection.Offset(1, 0).Select()
Loop
est assez étonnante, tant en ce qui concerne ce qu'elle dit vouloir faire, que la méthode utilisée !
Mais la réponse relève de la connaissance de VBA/Excel et non de VB.Net, et je ne la donnerai qu'en réponse à une question (ouverte dans la rubrique Langages dérivés > VBA) relative à cette carence en connaissance VBA/Excel. (J'y tiens).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.