OVH Cloud OVH Cloud

Boucle non complète

3 réponses
Avatar
FdeCourt
Bonjour,

Je souhaiterai cr=E9er une boucle dont le dernier =E9l=E9ment ne pourrait
=EAtre complet :

lgn =3D Feuil2.Cells(65536, 1).End(xlUp).Row
col =3D Feuil2.Cells(1, 255).End(xlToLeft).Column
For jh =3D 2 To lgn Step Int(lgn / 10)
Set table =3D Nothing
table =3D Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Dans l'exemple ci dessus, lgn peut aller jusqu'a 65535 (mais c'est
compl=E8tement variable)
Col n'a pas d'importance

Ma macro boucle toutes les 6553 lignes, et met ces ligne en m=E9moire.

Le probl=E8me est que pour la derni=E8re boucle, ca d=E9passe les 65536
ligne max d'Excel, et donc ca me renvoit une erreur :
jh va prendre les valeur suivante :
6555
13108
19661
26214
32767
39320
45873
52426
58979
65532
72085 <<<<ERREUR

Comment faire pour que ma boucle, ne prenne en compte =E0 la fin que
65532 =E0 65535 qui est la limite sup=E9rieu de ma boucle.

Merci pour votre aide.

3 réponses

Avatar
Daniel
Bonjour.
Si j'ai bien compris :

For jh = 2 To lgn Step Int(lgn / 10)
If jh > 65535 then exit sub
Set table = Nothing
table = Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Cordielement.
Daniel

"FdeCourt" a écrit dans le message de news:

Bonjour,

Je souhaiterai créer une boucle dont le dernier élément ne pourrait
être complet :

lgn = Feuil2.Cells(65536, 1).End(xlUp).Row
col = Feuil2.Cells(1, 255).End(xlToLeft).Column
For jh = 2 To lgn Step Int(lgn / 10)
Set table = Nothing
table = Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Dans l'exemple ci dessus, lgn peut aller jusqu'a 65535 (mais c'est
complètement variable)
Col n'a pas d'importance

Ma macro boucle toutes les 6553 lignes, et met ces ligne en mémoire.

Le problème est que pour la dernière boucle, ca dépasse les 65536
ligne max d'Excel, et donc ca me renvoit une erreur :
jh va prendre les valeur suivante :
6555
13108
19661
26214
32767
39320
45873
52426
58979
65532
72085 <<<<ERREUR

Comment faire pour que ma boucle, ne prenne en compte à la fin que
65532 à 65535 qui est la limite supérieu de ma boucle.

Merci pour votre aide.
Avatar
FdeCourt
Bonjour Daniel,

En fait je voudrais pas mettre prendre les infos jusqu'a 65535, qui est
dans la tranche 65532:72085
Or comme cette tranche dépasse les 65536 lignes d'Excel, ca me renvoi
une erreur.

Si-je obligé d'utiliser un If si je veux pouvoir m'arreter exactement
au lgn, même si ce dernier est inférieur à la limite de mon step ?


Bonjour.
Si j'ai bien compris :

For jh = 2 To lgn Step Int(lgn / 10)
If jh > 65535 then exit sub
Set table = Nothing
table = Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Cordielement.
Daniel

"FdeCourt" a écrit dans le message de news:

Bonjour,

Je souhaiterai créer une boucle dont le dernier élément ne pourrait
être complet :

lgn = Feuil2.Cells(65536, 1).End(xlUp).Row
col = Feuil2.Cells(1, 255).End(xlToLeft).Column
For jh = 2 To lgn Step Int(lgn / 10)
Set table = Nothing
table = Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Dans l'exemple ci dessus, lgn peut aller jusqu'a 65535 (mais c'est
complètement variable)
Col n'a pas d'importance

Ma macro boucle toutes les 6553 lignes, et met ces ligne en mémoire.

Le problème est que pour la dernière boucle, ca dépasse les 65536
ligne max d'Excel, et donc ca me renvoit une erreur :
jh va prendre les valeur suivante :
6555
13108
19661
26214
32767
39320
45873
52426
58979
65532
72085 <<<<ERREUR

Comment faire pour que ma boucle, ne prenne en compte à la fin que
65532 à 65535 qui est la limite supérieu de ma boucle.

Merci pour votre aide.


Avatar
Daniel
Utilise :
Min(65535, jh+int(lgn / 10)) au lieu de jh+int(lgn / 10)
Daniel
"FdeCourt" a écrit dans le message de news:

Bonjour Daniel,

En fait je voudrais pas mettre prendre les infos jusqu'a 65535, qui est
dans la tranche 65532:72085
Or comme cette tranche dépasse les 65536 lignes d'Excel, ca me renvoi
une erreur.

Si-je obligé d'utiliser un If si je veux pouvoir m'arreter exactement
au lgn, même si ce dernier est inférieur à la limite de mon step ?


Bonjour.
Si j'ai bien compris :

For jh = 2 To lgn Step Int(lgn / 10)
If jh > 65535 then exit sub
Set table = Nothing
table = Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Cordielement.
Daniel

"FdeCourt" a écrit dans le message de news:

Bonjour,

Je souhaiterai créer une boucle dont le dernier élément ne pourrait
être complet :

lgn = Feuil2.Cells(65536, 1).End(xlUp).Row
col = Feuil2.Cells(1, 255).End(xlToLeft).Column
For jh = 2 To lgn Step Int(lgn / 10)
Set table = Nothing
table = Feuil2.Range(Feuil2.Cells(jh, 1), Feuil2.Cells(jh + Int(lgn /
10), col))
Next

Dans l'exemple ci dessus, lgn peut aller jusqu'a 65535 (mais c'est
complètement variable)
Col n'a pas d'importance

Ma macro boucle toutes les 6553 lignes, et met ces ligne en mémoire.

Le problème est que pour la dernière boucle, ca dépasse les 65536
ligne max d'Excel, et donc ca me renvoit une erreur :
jh va prendre les valeur suivante :
6555
13108
19661
26214
32767
39320
45873
52426
58979
65532
72085 <<<<ERREUR

Comment faire pour que ma boucle, ne prenne en compte à la fin que
65532 à 65535 qui est la limite supérieu de ma boucle.

Merci pour votre aide.