[VBA/Excel] Erreur d'exécution

Gilou -  
Patrice33740 Messages postés 8400 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

2 réponses

  1. 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
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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