[vb6 - Excel] Vérifier si data dans une ligne

Résolu
forum_ma Messages postés 112 Date d'inscription samedi 16 octobre 2004 Statut Membre Dernière intervention 31 juillet 2006 - 17 avril 2006 à 19:11
conseildg Messages postés 86 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 mars 2007 - 17 avril 2006 à 23:58
Bonjour,
J'aimerais optimiser mon programme voici mon probleme :

Je fais un programme avec une automate, a chaque fois que l'automate "fait un tour" je vais chercher des datas.. Je mets c'est data dans un fichier excel, a chaque jour je crée un nouveau fichier excel(automatiquement). De la facon je procede, j'ai une variable Static qui garde en mémoire a quel ligne on est rendu a insérer les datas, jusque la tout fonctionne, sauf que si par exemple l'ordinateur ferme et je repart le programme (la meme journée) mon compteur se remet a 0 donc je vais perdre toutes les anciennes data puisque sa va écrire par dessus les mêmes ligne (jusque la si vous me suivez pas c'est pas grave, ce que j'ai vraiment de besoin commence ici...)

Pour résoudre ce problème, j'ai faite un fonction qui ouvre mon fichier excel, qui regarde quel est la première ligne qui ne contient pas de data, voici ma fonction :

Public Function findLineToWrite(ByVal strFileName As String) As Long
Dim cpt As Long 'Sert a savoir a quel ligne on est rendu
Dim find As Boolean
find = False
Set appexcel = New Excel.Application
Dim l_WorkBook As Workbook
Set l_WorkBook = appexcel.Workbooks.Open(strFileName)
appexcel.Visible = False
cpt = 1
Do While Not (find)
If "" = l_WorkBook.Worksheets(1).Cells(cpt, 1).Value Then 'S'il y a rien dans la cells, on est rendu ici...
findLineToWrite = cpt
find = True
Else
cpt = cpt + 1
End If
Loop

Call l_WorkBook.Close(True)
appexcel.Quit
End Function

Ma fonction fonctionne très bien, cependant ou j'ai un petit probleme, c'est que je peux avoir jusqu'a 10 000 Datas, donc si j'utilise ma fonction avec 10 000 datas, sa prend environ 10 à 15 secondes pour me retourner l'endroit ou je suis rendu, et l'Automate fait "un tour" a chaque 5 à 7 secondes, se qui fait que je perd +/- 2 datas... Ce n'est pas la fin du monde, mais je voulais juste savoir s'il y a une autre facon pour trouver quel est la derniere ligne avec quelque chose d'écris (quelque chose qui retourne la derniere ligne (un peu comme un pour savoir la longueur d'un tableau, pas besoin de parcourir toute le tableau pour y arriver...) Donc si vous savez comment faire sa serait tres tres apprécier!!

Merci beaucoups!!

1 réponse

conseildg Messages postés 86 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 18 mars 2007
17 avril 2006 à 23:58
Pour écrire les données dans la premiere cellule vide de la comonne A de la feuille de calcul en commençant à la ligne 2
Range("A65536").End(xlUp)(2).Value = "ce qu'il faut écrire"
3
Rejoignez-nous