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

[Résolu]
Signaler
Messages postés
112
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
31 juillet 2006
-
Messages postés
86
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 mars 2007
-
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

Messages postés
86
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
18 mars 2007

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci