Trop de ligne à compter ?

Résolu
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   -  
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

je fais actuellement du traitement de données, de beaucoup de donnée et la première étape de macro est le comptage des lignes. Elles sont 54320 dans mon premier fichier, je voulais utiliser la fonction countA pour enregistrer ce nombre dans une variable.

donc un code basique :
dim M_nb_colonne as integer
dim M_nb_ligne as long 

M_nb_colonne = appl.countA(dec.wkcol.range("4:4"))
M_nb_ligne = appl.countA(dec.wkcol.Range("B:B"))


dec.wkcol est une worksheet et appl l'application dans laquelle je travaille (acompagnée d'un appl.visible = false et tout le toin toin pour qu'elle travail en fond)

la première instruction fonctionne très bien
la deuxième me renvoit : run-time error 1004 ( application-defined or object-defined error )

D'ou ma question est-il possible d'utiliser countA pour un long
1/ si non : y'a-t-il un autre moyen de connaitre le nombre de ligne ?
2/ si oui : pour quoi ça marche pas ? (snif)
A voir également:

3 réponses

Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
ceci fonctionne :
Dim appl As Application
Dim wkcol As Worksheet
Set appl = Application
Set wkcol = ActiveSheet

Dim M_nb_colonne As Integer
Dim M_nb_ligne As Long

M_nb_colonne = appl.CountA(wkcol.Range("4:4"))
M_nb_ligne = appl.CountA(wkcol.Range("B:B"))

0
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
ça c'est presque ce que j'ai déjà, la seule différence c'est que je fais :

dim appl as new excel.application 


ce qui me chiffonne c'est que le premier marche (M_nb_colonne) très bien et pas le second ( j'ai aussi vérifié, je ne suis as en numérotation R1C1)
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
il y a une autre différence : wkcol au lieu de dec.wkcol
0
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
dec est un module ou j'ai déclaré toutes mes variables publiques (wkcol en fait partie) j'ai fait un set dec.wkcol dans le module qui ouvre le classeur et qui fait l'importation des données.
si le problème avait été au niveau de la déclaration de dec.wkcol, le nb de colonne n'aurait pas marché.

Comme j'étais bloqué j'ai fais un contage de bourrin manuel :

dim I as long
I  = 1
do while dec.wkcol.cells( I ,  1 ) <> ""
    I = I + 1 
loop
M _nb_ligne = I


en attendant de trouver mieux
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
C'est bizarre, avec 2002, ton code fonctionne bien.

As-tu essayé sans le new ?
Set appl = Excel.Application

C'est plus rapide sans qu'avec
0
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
Dans ma version (2010 je crois) j'ai une erreur quand je ne met pas le new
0
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
J'ai finalement trouver le problême, j'ai oublier de te dire que
dim appl as new excel.application 


est dans un autre module donc forcement l'objet n'est pas déclaré dans le module renseignement d'où l'erreur.
Bilan il fallait déclarer hors de toute sub :
public appl as new excel.application 


et tout fonctionne

Merci Patrice 33740 de t'être interessé à mon problème !
0