définir au mieux une plage

  • Initiateur de la discussion Initiateur de la discussion barbara
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

barbara

Guest
bonsoir le forum,

pour définir une plage, j'ai pris l'habitude du range a65536.end(xlup).row
mais je me pose des questions sur le fait de 'remonter' à chaque fois autant de lignes
(ce qui est rarement nécessaire),
est-ce neutre au niveau du temps d'exécution d'une macro?

(et en plus comment il faudra faire avec Excel 2007 et son million de lignes)

bonne soirée

barbara
 
Bonsoir le forum; barbara

Si tu es sur de ne pas depasser un certain nombre de lignes, rien ne t'empeches de mettre la derniere ligne occupée pour faire tes tests, j'ai un prog ou j'ai limité une boucle sur 195 lignes alors que j'en ai 192 d'occupées, pas de soucis.

@micalement
 
Bonsoir Barbara, Gex1403

Non, théoriquement la Function Intégrée d'Excel 'End(Direction)' se fiche éperdument du nombre de lignes vides.

C'est idem que lorque l'on utilise les raccourcis claviers (CTRL + Flèche), la distance parcourue est immédiate.

Là où on peut quand Même optimiser un peu c'est surtout sur la Variable qui va servir de Compteur.

Exemple :


Sub MonBeauTableau()
Dim i As Long, L As Long

L = Range('A65536').End(xlUp).Row

For i = 1 To L
    Cells(i, 1) = 'Bonne Fête Robert'
Next

End Sub

Ici on est sur un Gros morceau (surtout avec Robert LOL)

Autre Exemple :


Sub MonBeauTableau()
Dim i As Integer, L As Integer

L = Range('A32767').End(xlUp).Row

For i = 1 To L
    Cells(i, 1) = 'Bon Anniversaire Dugenou'
Next

End Sub


Ici c'est un tableau de moyenne taille.


Et enfin dernier exemple ;


Sub MonBeauTableau()
Dim i As Byte, L As Byte

L = Range('A255').End(xlUp).Row

For i = 1 To L
    Cells(i, 1) = 'Bon Fête Lapinou'
Next

End Sub

Là donc on est sûr de ne pas dépasser 255 Lignes.

L'économie est sur la taille des deux variables, c'est assez peu substanciel, mais disons que c'est surtout dans les règles de l'art.

L'erreur classique est de déclarer As Integer avec un XlUp depuis 65536 ou de Décaler les deux Variables :


Sub MonBeauTableau()
Dim i As Byte, L As Integer

L = Range('A65536').End(xlUp).Row

For i = 1 To L
    Cells(i, 1) = 'Bon Anniversaire Tibo'
Next

End Sub


Bonne Soirée
[ol]@+Thierry[/ol]
 
Ave,

''..pour définir une plage, j'ai pris l'habitude du range a65536.end(xlup).row....(et en plus comment il faudra faire avec Excel 2007 et son million de lignes)..''

Pour toutes les versions à venir :
derL = Sheets('feuil1').Range('A' & Cells.Rows.Count).End(xlUp).Row
ou bien :
derL = [A:A].Find('*', , xlFormulas, , xlByRows, xlPrevious).Row
Avec XL 2007 ça fera :
derL = Sheets('feuil1').[B1048576].End(xlUp).Row

AV [aaa]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

N
Réponses
17
Affichages
3 K
ninajams
N
Z
Réponses
2
Affichages
802
zoidberg
Z
L
Réponses
5
Affichages
2 K
lumiexcel
L
N
  • Question Question
Réponses
5
Affichages
3 K
H
Réponses
2
Affichages
1 K
H
Retour