[VBA/Excel] Erreur d'exécution

Fermé
Gilou - 21 févr. 2011 à 15:20
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 21 févr. 2011 à 19:15
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

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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
21 févr. 2011 à 19:15
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