définir au mieux une plage

  • Initiateur de la discussion barbara
  • Date de début
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
 

gex1403

XLDnaute Occasionnel
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
 

_Thierry

XLDnaute Barbatruc
Repose en paix
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]
 
A

AV

Guest
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]
 

Discussions similaires

Statistiques des forums

Discussions
312 224
Messages
2 086 409
Membres
103 201
dernier inscrit
centrale vet