[VB6 -> VB.NET]Trouver cellule vide.

Résolu
gaara91300 - 26 juin 2013 à 18:22
 trunk - 19 mars 2019 à 14:56
Bonjour bonjour à tous.

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

Merci d'avance pour votre aide !

2 réponses

Utilisateur anonyme
27 juin 2013 à 02:58
Bonjour,

Cette ligne est inutile:

appExcel = CreateObject("Excel.Application")



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:

Microsoft.Office.Interop
Microsoft.Office.Interop.Excel

et tu crées ton objet avec :

Dim appExcel As New Excel.Application


Cette méthode, t'offre en prime l'Intellisence.

Tu as une liaison tardive avec :

appExcel = CreateObject("Excel.Application")
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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.
-2
en claire dans le texte explique moi ce dont tu as besoins , je t'expliquerai comment t'en passer. !!!
0
Rejoignez-nous