[VBA/Excel] Erreur d'exécution

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

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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