[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
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
A voir également:
- [VBA/Excel] Erreur d'exécution
- Erreur 0x80070643 - Accueil - Windows
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - 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
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
21 févr. 2011 à 19:15
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 :
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