Determiner la première cellule non vide d'une feuille excel vb.n [Résolu]

pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 7 mars 2015 à 21:39 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 10 mars 2015 à 14:50
salut
j'utilise vb.net avec excel
je veux parcourir les colonnes de la feuille excel jusqu'à arriver à une cellule non vide
voici mon code
 With xlWorkSheet
            y = .Cells(.Rows.Count, 1).End(Excel.XlDirection.xlDown).Row
            x = .Cells(1, .Columns.Count).End(Excel.XlDirection.xlToRight).Column
        End With


EDIT: Ajout de la coloration syntaxique.
Afficher la suite 

Votre réponse

18 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 8/03/2015 à 21:24
1
Merci
Ce n'est pas tout cela que je te demandais !
J'ignore (je ne connais pas VB.Net) si ta détermination de xlWorkSheet est orthodoxe.
Tes réponses assez "à côté de la question" ou "superflues" ne m'intéressent pas.
Je vais donc partir de l'hypothèse selon laquelle xlApp, xlWorkBook et xlWorkSheet sont les bons objets ===>>


xlWorkSheet.Select
MsgBox xlApp.cells.specialcells(2).row & vbCrLf & xlApp.cells.specialcells(2).Column


Pourquoi ai-je mis 2 et pas xlCellTypeConstants, selon toi ?
Réfléchis-y donc (ce sera un premier pas intelligent).

EDIT : j'attends également de toi que tu me dises ce que tu as exactement compris de la nécessité d'ajouter xlApp devant ma ligne de code. Il est très important de le comprendre. Comme il est (et c'est un indice) très important de bien comprendre ce qu'est un objet, ce qu'est une propriété, ce qu'est une routine, ce qu'est une fonction et ce qu'est une méthode. La remarque que je t'ai faite par mon message du 8 mars 2015 à 13:43 n'était pas (loin de là) une remarque anodine.

Merci ucfoutu 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 8 mars 2015 à 21:41
il me donne un nombre
qu'est ce que ce nombre ?
merci de me expliqué
ce que je veux c'est me donnée la cellule qui contient une valeur
Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 9 mars 2015 à 09:54
1
Merci
Allez va ===>>
.....
.....
Set feuille = xlApp.worksheets("Feuil1")
feuille.Select
Dim toto As Object
Set toto = xlApp.cells.specialcells(2) '===>> la totalité de la plage des constantes
Set toto = toto(1, 1) ' ===>> la 1ère cellule de cette plage
MsgBox toto.address '===>> pour te le prouver !ù

Merci ucfoutu 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 8 mars 2015 à 10:05
0
Merci
Bonjour,
Sans autre précisions, je supposes que tu n'as pas de formules et uniquement des saisies ===>>
 MsgBox Cells.SpecialCells(xlCellTypeConstants).Row & vbCrLf & Cells.SpecialCells(xlCellTypeConstants).Column
Commenter la réponse de ucfoutu
pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 8 mars 2015 à 11:36
0
Merci
bonjour
j'ai un erreur de cet objet , il n'est pas declaré
xlCellTypeConstants
Commenter la réponse de pamelatheo
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 8 mars 2015 à 13:43
0
Merci
Ah ? Oui ?
C'est d'autant plus désolant que specialcells n'est pas un objet, mais une méthode !
Montre donc le code que tu as écrit !!!!

PS : pour ton info : ce code, testé chez moi, fonctionne sans faille.
pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 8 mars 2015 à 17:44
salut
voici mon code
Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click
xlWorkSheet = CType(xlWorkBook.Sheets(ComboBox1.Text), Excel.Worksheet)
xlWorkSheet.Activate()
xlApp.Visible = True

With xlWorkSheet
MsgBox(.Cells.SpecialCells(xlCellTypeConstants).Row & vbCrLf & .Cells.SpecialCells(xlCellTypeConstants).Column)
End With
End Sub
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 8/03/2015 à 18:30
0
Merci
Ce que tu montres n'est pas du code VBA !
Si tu pilotes VBA depuis VB.Net, il te faut :
- déclarer (dans une variable) l'application Excel
- déclarer (dans une variable) un objet classeur
- déclarer (dans une variable) un objet Feuille
appliquer mon code à cet objet feuille.
Le code que je t'ai montré est le code VBA à appliquer à un objet feuille Excel, qu'il faut donc avoir initialisé/créé au préalable.
La partie VB.Net, qui consiste à déclarer les objets à piloter, relève d'un autre aspect, qu'il s'agisse de faire ceci, cela ou autre chose dans l'objet Excel créé.

________________________
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'interviend
pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 8 mars 2015 à 18:40
ui je utilise vb.net no vba
j'ai fais la declaration des appilacation , classeur et feuille
mais ceci " xlCellTypeConstants" n'est pas declarer
comment puisse-je le declarer
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 8 mars 2015 à 19:05
0
Merci
Comment as-tu déclaré (code) :
- l'objet applicfation Excel
- l'objet classeur utilisé
- l'objet feuille à traiter
pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 8 mars 2015 à 19:10
j'ai fait un bouton browse
son code est :

OpenFileDialog1.ShowDialog()

TextBox1.Text = OpenFileDialog1.FileName

ch = OpenFileDialog1.FileName

Process.Start("Excel", TextBox1.Text)
ListBox1.Items.Clear()
ComboBox1.Items.Clear()


puis j'ai fait un bonton 'get the name of the sheet'
code:

Dim x1 As String

xlApp.Visible = False
xlWorkBook = xlApp.Workbooks.Open(ch)
xlWorkSheet = xlWorkBook.Sheets(1)

' x1 = xlWorkSheet.Name
If ComboBox1.Items.Count = Nothing Then
With xlWorkSheet


For Each Me.xlWorkSheet In xlWorkBook.Worksheets
x1 = xlWorkSheet.Name
' ExcelSheetName += xlWorkSheet.Name & vbNewLine
ComboBox1.Items.Add(x1)

Next xlWorkSheet

End With
Else
MsgBox("Déja Pleine!", MessageBoxIcon.Error)


End If
puis j'ouvre la feuille qui est dans le combobox
code:

With xlWorkSheet

xlWorkSheet = CType(xlWorkBook.Sheets(ComboBox1.Text), Excel.Worksheet)
xlWorkSheet.Activate()
xlApp.Visible = True

End With
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 9 mars 2015 à 09:47
0
Merci
"il" ne te donne pas un nombre. "il" t'en donne deux.
Le premier est le rang de la cellule et le second sa colonne.
Si tu ne t'en sors toujours pas avec cela, c'est que tu ne connais pas Excel non plus (que tu veux pourtant piloter). !
Et si tu veux directement la cellule elle-même (donc un objet range) plutôt que son rang et sa colonne, tu as vraiment tout en main (en réfléchissant un peu, car la chose est on ne peut plus simple).
Je ne t' "expliquerai" et n'irai plus loin que lorsque tu auras répondu à ma question et à mon "edit". Car aucune "explication" ne serait comprise (sauf à faire tout un cours de débutant VBA/Excel) sans que tu n'aies d'abord "cerné" ces points primordiaux.
Commenter la réponse de ucfoutu
pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 9 mars 2015 à 10:06
0
Merci
bonjour
Cette discussion m'a bien aidé
Merci pour vos explications.
Commenter la réponse de pamelatheo
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 9/03/2015 à 11:28
0
Merci
Si ta difficulté est résolue : discussion à libérer par un clic sur le tag RESOLU au niveau de ton premier message.

Je regrette (c'est bien dommage) par ailleurs que tu aies éludé mes deux questions.

Bon...
D'autres passeront par là et seront peut-être intéressés ===>>
- pourquoi 2 et pas xlCellTypeConstants ===>> tout simplement pour éviter d'aller en plus fouiller dans les constantes de VBA. On donne directement la valeur de cette constante.
- pourquoi avoir ajouté "xlApp" devant le code ===>>> tout simplement parce que specialcells est une méthode de l'application et non la méthode (ni un des objets, ni l'une des propriétés) de l'un des autres objets que nous avons créés (le classeur, la feuille ...). Nous devons donc dire à l'application qui "pilote" où aller chercher cette méthode (dans l'application Excel elle-même).

________________________
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'interviend
Commenter la réponse de ucfoutu
pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 9 mars 2015 à 11:33
0
Merci
salut::
j'ai un autre problème
je veux calculer la somme de mon tableau excel
voici mon code :
Dim lastrow As Integer
Dim lastcol As Integer, thiscol As Integer = CInt(j)
xlWorkSheet =CType(xlWorkBook.Sheets(ComboBox1.Text),Excel.Worksheet)
xlWorkSheet.Activate()
xlApp.Visible = True


With xlWorkSheet
xlWorkSheet.Select()
j = (xlApp.Cells.SpecialCells(2).Row + 1 & vbCrLf & xlApp.Cells.SpecialCells(2).Column)
lastrow = .Cells(.Rows.Count, 1).End(Excel.XlDirection.xlUp).Row
lastcol = .Cells(1, .Columns.Count).End(Excel.XlDirection.xlToLeft).Column
For thiscol = j To lastcol
.Cells(lastrow + 1, thiscol).Value = _
xlApp.Sum(.Range(.Cells(1, thiscol), .Cells(lastrow, thiscol)))
Next
End With
je veux utiliser le variable 'j' as integer non string pour que je peux calculer la somme
Commenter la réponse de pamelatheo
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 9 mars 2015 à 12:47
0
Merci
Autre question ===>> autre discussion.
C'est ici une règle.
Merci de t'y conformer et de libérer la présente discussion.

pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 10 mars 2015 à 13:52
ok merci
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention > pamelatheo 31 Messages postés samedi 7 mars 2015Date d'inscription 11 mars 2015 Dernière intervention - 10 mars 2015 à 14:50
Tu vas, oui ou non , libérer comme il se doit ? par un clic sur le tag RESOLU au niveau de ton premier message ?
Il faut que l'on te fasse aussi un dessin pour ce geste ?
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.