Date: prev next · Thread: first prev next last
2019 Archives by date, by thread · List index


Bonsoir,

D'une façon ou d'une autre il y a un maximum : le nombre de lignes (1 048 576) et de colonnes (1 024) d'une feuille

le principe de Decaler avec Nbval permet de prévoir toute une ligne (avec ses 1 024 colonnes) ou toute une colonne Nbval déterminant au fur et à mesure l'étendue occupée.

La formule serait, dans ce cas

RECHERCHEH(C$20;DECALER($voies.$A$1;0;0;6;NBVAL($voies.$1:$1));2;0)
Le passage $1:$1 dans le Nbval signifiant que l'on compte sur l'ensemble de la ligne 1 (de la 
colonne A à la colonne AMJ)

à travail égal, une formule bien construite sera toujours plus rapide à donner un résultat (et à 
taper) qu'une macro.
Sans avoir exploré la totalité du classeur, il me semble que l'ensemble des calculs et mises à 
jours devrait pouvoir se faire sans macro.

Au passage la formule
RECHERCHEH(C$20;$voies.$A$1:$ZZ$6;2;0)
ne fait pas la même chose que
RECHERCHEH(C$20;DECALER($voies.$A$1;0;0;6;NBVAL($voies.$A$1:$ZZ$1));2;0)

La 1ere fait ses recherches toujours jusqu'à la colonne ZZ, même si les colonnes sont vides
la seconde fait ses recherches en fonction de la zone occupée (Nbval détermine le nombre de 
colonnes occupées). c'est pour ça que l'on peut se permettre de mettre des choses comme 1:1, ce 
n'est pas l'étendue du tableau de recherche, c'est juste le comptage des colonnes occupées

En espérant avoir été utile

Christian F

Le 13/04/2019 à 20:17, Bernard Siaud alias Troumad a écrit :
Le 11/04/2019 à 22:44, C Fourcroy a écrit :
Bonsoir,

Fondamentalement, un traitement par une fonction du tableur va
toujours beaucoup plus vite qu'un traitement par une macro en Basic
car elles sont programmées dans un langage beaucoup plus efficace et
proche du langage machine. Mettre à jour une trentaine de zones
nommées ne dépassera pas une fraction de seconde. Comparé à la macro
de mise à jour de la liste que j'avais proposé il y a quelque temps il
y a un facteur 100 à 1000 en faveur de l'utilisation de la fonction.
Ceci étant, créer/modifier des zones nommées peut être long et
fastidieux surtout quand on n'en a pas l'habitude. Il faut voir si
l'investissement en temps en vaut la peine.

Christian F
Voici un exemple pour remplacer une zone :
DECALER($voies.$A$1;0;0;6;NBVAL($voies.$A$1:$ZZ$1))

Mais, c'est dans cette expression :
RECHERCHEH(C$20;DECALER($voies.$A$1;0;0;6;NBVAL($voies.$A$1:$ZZ$1));2;0)

Ne serait-il alors pas plus efficace d'écrire :
RECHERCHEH(C$20;$voies.$A$1:$ZZ$6;2;0)

Et dans ce cas, si par hasard, on passe plus loin que ZZ... Le programme
ne marchera plus ! Il faudrait que je mette quoi alors ? C'est vraiment
pour ça que je me demande si une macro qui ne prend en compte aucun
maximum possible n'est pas une bonne idée finalement !



--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.