[VBA/Excel] Erreur d'exécution

Gilou -  
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je travaille sur un projet VBA, lors de l'exécution de ma macro, je rencontre un message d'erreur que je ne comprends pas :

Erreur d'exécution '-2147417848 (80010108)': La méthode Find de l'objet Range a échoué

et le débogage me conduit à ma ligne de code sensée compter le nombre de lignes utilisées dans ma feuille Excel :

NbLignes = Columns("K:K").Find("*", Range("K1"), , , xlByRows, xlPrevious).Row


Avez-vous rencontré cette erreur ?
Merci d'avance,
Gilou
A voir également:

2 réponses

Info
 
Bonjour,

Pourquoi ne pas utiliser :

-> Dernière ligne pleine
NbLignes = Range("K1:K65536").End(xlDown).Row

ou

-> Dernière ligne pleine
NbLignes = Range("K65536").End(xlup).Row

Info
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour Gilou,

La méthode Find est effectivement la meilleure méthode pour trouver la dernière cellule utilisée dans une colonne :
- elle fonctionne même si la dernière ligne de la feuille est utilisée (contrairement à DernièreCellule.end(xlUp) ou PremièreCellule.end(xlDown)
- elle fonctionne aussi bien avec Excel 2003 (65536 lignes par feuilles) qu'avec 2007 ou 2010 (1048576 lignes par feuille)

Elle présente l'inconvénient de renvoyer Nothing lorsqu'elle ne trouve aucune cellule répondant au critère de recherche (d'où l'erreur).
Pour éviter l'erreur, on peut écrire :

Dim NbLignes As Long
Dim rng As Range

  Set rng = Columns("K:K").Find("*", , , , , xlPrevious)
  If Not rng Is Nothing Then NbLignes = rng.Row


ou éventuellement :

Dim NbLignes As Long

  On Error Resume Next
  NbLignes = Columns("K:K").Find("*", , , , , xlPrevious).Row
  On Error GoTo 0
  


0