Recherche chaine dans Excel

jfbriend Messages postés 1 Date d'inscription samedi 24 janvier 2009 Statut Membre Dernière intervention 7 février 2009 - 7 févr. 2009 à 14:00
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009 - 8 févr. 2009 à 09:44
Bonjour,

Avec l'aide du Net, j'ai écrit ces quelques lignes qui devraient me permettre de trouver une chaine ou une cellule vide dans un tableau Excel, pour une certaine colonne (ici 4).
J'utilise Visual Basic 2005/2008.

Ici dans l'exemple ci-dessous je cherche une cellule contenant le nombre 30, mais ceci ne tourne pas (erreur à la ligne Loop until ....
J'ai déjà essayé beaucoup de variantes , mais sans succès, aussi je me tourne vers vous
Merci !

Private

Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Dim excelApp
As
Object

Dim ExcelCla
As
ObjectexcelApp = CreateObject(
"excel.application")excelApp.visible TrueExcelCla excelApp.Workbooks.open(

"c:\testexcel")

With excelApp.Worksheets(

"feuil1").select()

Dim I
As
Integer

DoI = I + 1

Loop
Until .cells(I, 4) = 30MessageBox.Show(I)

End
With

End
Sub

13 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 févr. 2009 à 14:08
salut,
tu es certain de ton nom de fichier?



"c:\testexcel"





çà ressemble plus à un dossier, ou il manque l'extension peut-être ?
0
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009
7 févr. 2009 à 14:40
A mon avis, ce n'est pas le problème car je peux lire et écrire dans la feuille..
Ce qui ne fonctionne pas c'est le Do... Loop until...!
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
7 févr. 2009 à 15:59
bonjour
plutot que :
With excelApp.Worksheets(

"feuil1").select()

Dim I
AsIntegerDoI = I + 1

LoopUntil .cells(I, 4) = 30

 il faudrait faire:
dim i as integer
do
i=i+1
LoopUntil excelApp.worksheets("feuil1").cells(i,4) = 30

puisque tu es dans du VBnet tu n'es pas dans le VBA de excel donc tu dois mettre le chemin complet de la cellule
le .select ne servant strictement à rien dans ton contexte

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009
7 févr. 2009 à 16:17
Merci pour cette réponse; j'ai fait cette modi mais j'obtiens toujours un message d'erreur sur le "Loop" à savoir :
L'opérateur '<>' n'est pas défini pour type 'Range' et type 'Integer'.

 que faire ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 févr. 2009 à 16:22
à essayer :

dim i as int32 = 0
do
i+=1
loop until .cells(i,4).value = 30


<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
7 févr. 2009 à 16:24
difficile de t'aider là  puisque dans le code que tu nous a présenté il n'y a pas d'opérateur '<>'

[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 févr. 2009 à 16:24
euh... le message d'erreur concerne <> ? ... qui n'apparaît pas dans le code que tu nous a indiqué 
0
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009
7 févr. 2009 à 16:29
C'est pas encore ça..!

quand je lance le programme le premier message est le suivant :

A first chance exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll
0
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009
7 févr. 2009 à 16:39
En fait il y a généralement deux sortes de message d'erreur :
Celui que je vois lorque je lance le programme
Suite aux dernières modif c'est le message suivant que je vois :
A first chance exception of type 'System.InvalidCastException' occurred in Microsoft.VisualBasic.dll

Le deuxième message que je vois , c'est quand malgè le premier message je continue et je lance Excel en appuyant sur "button1"...
Est-ce plus clair ??
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 févr. 2009 à 16:43
c'est clair qu'on règle les problème dans l'ordre surtout
inutile de nous parler d'un "<>" qui, ici, ne correspond à rien si tu as un message d'erreur avant qui aurait nécessité une modification

le seul CAST qui pourrait coller, dans ton exemple, serait :


MessageBox.Show(I.tostring)
0
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009
7 févr. 2009 à 17:00
Après avoir esayé les différents codes proposés, j'ai tout repris à zéro  avec ces codes ci dessous
Lorsque je lance le button 1 j'ai le message suivant :

La conversion de la chaîne "e" en type 'Double' n'est pas valide.






Dim excelApp
As
Object
Dim ExcelCla
As
Object
Dim Excelfeuille
As
Object



excelApp = CreateObject(


"excel.application"

)



excelApp.visible = True



ExcelCla = excelApp.Workbooks.open(





"c:\testexcel"

)Excelfeuille = ExcelCla.sheets(



"feuil1"

)



Dim

i


As





Integer

= 0



Do


i = i + 1








Loop





Until

excelApp.worksheets(


"feuil1"

).cells(i, 4).value = 30MessageBox.Show(i)
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
7 févr. 2009 à 17:51
c'est que ta colonne excel ne contient pas que des numériques...


Loop





Until


convert.tostring(excelApp.worksheets(


"feuil1"

).cells(i, 4).value


)


=


"


30"
0
cs_briendjf Messages postés 7 Date d'inscription samedi 4 novembre 2006 Statut Membre Dernière intervention 8 février 2009
8 févr. 2009 à 09:44
J'ai compris l'erreur que je faisais.
Avec un copier/coller dans le programme, je n'utilisais pas le "button1" de la forme mais celui du copier/coller... grave erreur de débutant !!
En résumé le programme tourne maintennat,grace à votre aide,-Merci.
Il me permet de dététecter dans un tableau Excel une ligne vide sur la colonne 4 ( dans mon exemple)
Puis de mettre sur la ligne vide , colonne 1, la date
Puis de mettre sur la ligne 2 une valeur.

Ci dessous les lignes de code :

Public

Class Form1

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

End
Sub

Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click

Dim excelApp
As
Object

Dim ExcelCla
As
Object

Dim excelfeuille
As
ObjectexcelApp = CreateObject(
"excel.Application")excelApp.visible TrueExcelCla excelApp.Workbooks.open(

"c:\testexcel")excelfeuille = ExcelCla.sheets(

"feuil1")

Dim i
As
Integer

Doi = i + 1

Loop
Until excelfeuille.cells(i, 4).value <> 1excelfeuille.cells(i, 1).value = Now

excelfeuille.cells(i, 2).value = 10

excelfeuille.cells(i, 4).value = 1

End
SubEnd

Class
0