[VBA/Excel] Erreur d'exécution
Gilou
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
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 :
Avez-vous rencontré cette erreur ?
Merci d'avance,
Gilou
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:
- [VBA/Excel] Erreur d'exécution
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel compter cellule couleur sans vba - Guide
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
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
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 :
ou éventuellement :
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