OVH Cloud OVH Cloud

optimisation d'insertion de cadres de tailles différentes.

17 réponses
Avatar
Driss HANIB
Bonjour à tous

je cherche à trouver l'ordre optimal d'insertion de cadres de hauteurs
différentes dans une page.

En détail

sur feuille (ici de format A4, verticale) j'ai défini des marge d'entête et
de pied de page entre lesquelles je peux insérer ce que je veux :
ceci définit donc une hauteur disponible dans laquelle je peux insérer des
cadres

mon problème est le suivant
pour une situation donnée, j'obtiens un nombre N de tableaux à créer dont la
hauteur est variable et dépend de la situation : chaque tableau a une
hauteur propre définie par le nombre de lignes de ce tableau, toutes les
lignes étant de hauteur constante.

Exemple :

Tableau 1 : 6 lignes
Tableau 2 : 5 lignes
tableau 3 : 10 lignes
tableau 4 : 5 lignes
tableau 5 : 7 lignes

ce que je cherche est : si la somme des hauteurs des tableaux est supérieure
à la hauteur disponible (définie plus haut), comment trouver l'ordre mais
surtout les indices des tableaux à imprimer pour que le maximum d'espace
soit utilisé ?
les autres tableaux seont mis (de la même) façon sur la page suivante.
Il est bien entendu que l'espace entre les tableaux est une constante ;
considérer donc que je peux définir les hauteurs occpées par chaque
tableaux.
D'autre part, l'ordre d'écriture des tableaux n'a aucune importance.

j'espère avoir été clair. si question n'hésitez pas..

Merci pour vos pistes
NB : naturellement le commencerais par le tableau le plus haut... mais est
ce bien cela ..
Faut il tester toutes les possibilités ?

Driss

7 réponses

1 2
Avatar
Driss HANIB
merci,

je vais essayer de supprimer ces caractères accentués..

quant à ta fainéantise, je ne la vois pas , je vois plutot le fait que tu
m'aies (plus que ) montré la voie ;o))

Driss


"Jean-marc" a écrit dans le message
de news:453e4df0$0$31475$
>"Driss HANIB" a écrit dans le message de news:
>

<réponse inline>

> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
> comprendre bien sur)

C'est la bonne démarche :-)

> Et c'est bon sur tous les points. ;o))

Content que ça fonctionne pour toi :-)

> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
> taille que les tableaux que tu crées et que je mets à jour à chaque
> utilisation d'un indice.

C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise :o)
La méthode que tu emploies est la meilleure et la plus accadémique.

> Je me suis permis de renommer tes variables pour pouvoir bien comprendre
> ton
> cheminement.
> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant

super, merci par avance!

>
> je me permets de te remettre ma version..
>

<snip le (très bon) code>

Juste une minuscule remarque si tu veux bien: on préfère en
général éviter d'utiliser des caractères accentués dans les
noms de variables ( TabUtilisés() ), entre autre par ce que
ce n'est pas très lisible mais surtout par ce qu'il n'y a
pas d'accents sur les claviers qwerty.

En dehors de ce détail, l'adaptation m'à l'air parfaite :-)

--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/








Avatar
Driss HANIB
Merci Ptrice

tu as raison, mais c'est vrai j'hésite toujours..
mais si c'est mieux j'adopte et comme pour les caractères accentués je vais
faire 'l'effort' de faire comme cela
question : gagne t on du temps ? en faisant ta méthode ?
Driss


"Patrice Henrio" a écrit dans le message de
news:
je me permets une remarque de puriste sur les booléens (cheval de bataille
depuis 20 ans)

If TabUtilisés(Cur) = False Then

devrait s'écrire

If not(TabUtilisés(Cur)) Then

A plus ....

"Jean-marc" a écrit dans le


message
de news: 453e4df0$0$31475$
> >"Driss HANIB" a écrit dans le message de


news:
> >
>
> <réponse inline>
>
>> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
>> comprendre bien sur)
>
> C'est la bonne démarche :-)
>
>> Et c'est bon sur tous les points. ;o))
>
> Content que ça fonctionne pour toi :-)
>
>> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
>> taille que les tableaux que tu crées et que je mets à jour à chaque
>> utilisation d'un indice.
>
> C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise


:o)
> La méthode que tu emploies est la meilleure et la plus accadémique.
>
>> Je me suis permis de renommer tes variables pour pouvoir bien


comprendre
>> ton
>> cheminement.
>> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant
>
> super, merci par avance!
>
>>
>> je me permets de te remettre ma version..
>>
>
> <snip le (très bon) code>
>
> Juste une minuscule remarque si tu veux bien: on préfère en
> général éviter d'utiliser des caractères accentués dans les
> noms de variables ( TabUtilisés() ), entre autre par ce que
> ce n'est pas très lisible mais surtout par ce qu'il n'y a
> pas d'accents sur les claviers qwerty.
>
> En dehors de ce détail, l'adaptation m'à l'air parfaite :-)
>
> --
> Jean-marc Noury (jean_marc_n2)
> MVP Visual Basic
> mailto: remove '_no_spam_' ;
> FAQ VB: http://faq.vb.free.fr/
>
>
>
>
>
>




Avatar
Driss HANIB
Patrice

quant à tes "remarques" comme tu le dis .

elles sont toujours les bienvenues, car toutes constructives pour un
auto-didacte que je suis..
Optimiser est ma volonté..

alors je puise toujours dans les remarques

Driss

"Patrice Henrio" a écrit dans le message de
news:
je me permets une remarque de puriste sur les booléens (cheval de bataille
depuis 20 ans)

If TabUtilisés(Cur) = False Then

devrait s'écrire

If not(TabUtilisés(Cur)) Then

A plus ....

"Jean-marc" a écrit dans le


message
de news: 453e4df0$0$31475$
> >"Driss HANIB" a écrit dans le message de


news:
> >
>
> <réponse inline>
>
>> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
>> comprendre bien sur)
>
> C'est la bonne démarche :-)
>
>> Et c'est bon sur tous les points. ;o))
>
> Content que ça fonctionne pour toi :-)
>
>> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
>> taille que les tableaux que tu crées et que je mets à jour à chaque
>> utilisation d'un indice.
>
> C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise


:o)
> La méthode que tu emploies est la meilleure et la plus accadémique.
>
>> Je me suis permis de renommer tes variables pour pouvoir bien


comprendre
>> ton
>> cheminement.
>> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant
>
> super, merci par avance!
>
>>
>> je me permets de te remettre ma version..
>>
>
> <snip le (très bon) code>
>
> Juste une minuscule remarque si tu veux bien: on préfère en
> général éviter d'utiliser des caractères accentués dans les
> noms de variables ( TabUtilisés() ), entre autre par ce que
> ce n'est pas très lisible mais surtout par ce qu'il n'y a
> pas d'accents sur les claviers qwerty.
>
> En dehors de ce détail, l'adaptation m'à l'air parfaite :-)
>
> --
> Jean-marc Noury (jean_marc_n2)
> MVP Visual Basic
> mailto: remove '_no_spam_' ;
> FAQ VB: http://faq.vb.free.fr/
>
>
>
>
>
>




Avatar
Driss HANIB
Jean Marc,

merci !

ton source , modifié suite à tes commentaires et ceux de Patrice, fonctionne
parfaitement bien dans mon prog.
je l'adopte immédiatement et vous mets dans les remerciements.
Une épine enlevée du pied..

Driss



"Jean-marc" a écrit dans le message
de news:453e4df0$0$31475$
>"Driss HANIB" a écrit dans le message de news:
>

<réponse inline>

> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
> comprendre bien sur)

C'est la bonne démarche :-)

> Et c'est bon sur tous les points. ;o))

Content que ça fonctionne pour toi :-)

> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
> taille que les tableaux que tu crées et que je mets à jour à chaque
> utilisation d'un indice.

C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise :o)
La méthode que tu emploies est la meilleure et la plus accadémique.

> Je me suis permis de renommer tes variables pour pouvoir bien comprendre
> ton
> cheminement.
> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant

super, merci par avance!

>
> je me permets de te remettre ma version..
>

<snip le (très bon) code>

Juste une minuscule remarque si tu veux bien: on préfère en
général éviter d'utiliser des caractères accentués dans les
noms de variables ( TabUtilisés() ), entre autre par ce que
ce n'est pas très lisible mais surtout par ce qu'il n'y a
pas d'accents sur les claviers qwerty.

En dehors de ce détail, l'adaptation m'à l'air parfaite :-)

--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/








Avatar
jm
C'était avec plaisir :-)

--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/


"Driss HANIB" wrote in message
news:O$OuQDA%
merci,

je vais essayer de supprimer ces caractères accentués..

quant à ta fainéantise, je ne la vois pas , je vois plutot le fait que tu
m'aies (plus que ) montré la voie ;o))

Driss


"Jean-marc" a écrit dans le
message
de news:453e4df0$0$31475$
>"Driss HANIB" a écrit dans le message de news:
>

<réponse inline>

> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
> comprendre bien sur)

C'est la bonne démarche :-)

> Et c'est bon sur tous les points. ;o))

Content que ça fonctionne pour toi :-)

> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
> taille que les tableaux que tu crées et que je mets à jour à chaque
> utilisation d'un indice.

C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise :o)
La méthode que tu emploies est la meilleure et la plus accadémique.

> Je me suis permis de renommer tes variables pour pouvoir bien
> comprendre
> ton
> cheminement.
> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant

super, merci par avance!

>
> je me permets de te remettre ma version..
>

<snip le (très bon) code>

Juste une minuscule remarque si tu veux bien: on préfère en
général éviter d'utiliser des caractères accentués dans les
noms de variables ( TabUtilisés() ), entre autre par ce que
ce n'est pas très lisible mais surtout par ce qu'il n'y a
pas d'accents sur les claviers qwerty.

En dehors de ce détail, l'adaptation m'à l'air parfaite :-)

--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/












Avatar
Patrice Henrio
Non c'est seulement plus proche du fonctionnement du booléen.

En effet le test
if a=b then

fait la différence entre a et b et renvoie vrai si c'est nul et faux sinon,

pour le type booléen

if a=true, traduit true par un nombre (0 je crois mais je ne suis pas sûr)
fait la différence avec a et renvoie vrai si la différence est nulle et faux
sinon.

Donc cela devient
s'il est vrai que a est vrai alors

il est plus direct d'utiliser si a est vrai alors

Ce problème de l'utilisation des booléens vient des programmeurs en C qui ne
dispose pas de ce type. Et aussi des premiers programmeurs en Basic qui
utilisaient les valeurs numériques des booléens pour gérer des tests (et là
on gagnait effectivement du temps car on faisait en même temps le test et
l'opération qui en résultait).


"Driss HANIB" a écrit dans le message de news:
eRyAIEA%
Merci Ptrice

tu as raison, mais c'est vrai j'hésite toujours..
mais si c'est mieux j'adopte et comme pour les caractères accentués je
vais
faire 'l'effort' de faire comme cela
question : gagne t on du temps ? en faisant ta méthode ?
Driss


"Patrice Henrio" a écrit dans le message de
news:
je me permets une remarque de puriste sur les booléens (cheval de
bataille
depuis 20 ans)

If TabUtilisés(Cur) = False Then

devrait s'écrire

If not(TabUtilisés(Cur)) Then

A plus ....

"Jean-marc" a écrit dans le


message
de news: 453e4df0$0$31475$
> >"Driss HANIB" a écrit dans le message de


news:
> >
>
> <réponse inline>
>
>> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
>> comprendre bien sur)
>
> C'est la bonne démarche :-)
>
>> Et c'est bon sur tous les points. ;o))
>
> Content que ça fonctionne pour toi :-)
>
>> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
>> taille que les tableaux que tu crées et que je mets à jour à chaque
>> utilisation d'un indice.
>
> C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise


:o)
> La méthode que tu emploies est la meilleure et la plus accadémique.
>
>> Je me suis permis de renommer tes variables pour pouvoir bien


comprendre
>> ton
>> cheminement.
>> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant
>
> super, merci par avance!
>
>>
>> je me permets de te remettre ma version..
>>
>
> <snip le (très bon) code>
>
> Juste une minuscule remarque si tu veux bien: on préfère en
> général éviter d'utiliser des caractères accentués dans les
> noms de variables ( TabUtilisés() ), entre autre par ce que
> ce n'est pas très lisible mais surtout par ce qu'il n'y a
> pas d'accents sur les claviers qwerty.
>
> En dehors de ce détail, l'adaptation m'à l'air parfaite :-)
>
> --
> Jean-marc Noury (jean_marc_n2)
> MVP Visual Basic
> mailto: remove '_no_spam_' ;
> FAQ VB: http://faq.vb.free.fr/
>
>
>
>
>
>








Avatar
jm
Bien content d'avoir pu rendre service!

Et merci du retour, ça fait toujours plaisir :-)

--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/

"Driss HANIB" wrote in message
news:egRP3hA%
Jean Marc,

merci !

ton source , modifié suite à tes commentaires et ceux de Patrice,
fonctionne
parfaitement bien dans mon prog.
je l'adopte immédiatement et vous mets dans les remerciements.
Une épine enlevée du pied..

Driss



"Jean-marc" a écrit dans le
message
de news:453e4df0$0$31475$
>"Driss HANIB" a écrit dans le message de news:
>

<réponse inline>

> Je viens d'utiliser ton exemple et surtout de le décortiquer (pour
> comprendre bien sur)

C'est la bonne démarche :-)

> Et c'est bon sur tous les points. ;o))

Content que ça fonctionne pour toi :-)

> j'ai juste remplacé ton keep et G_Keep par un tableau de booléens de


même
> taille que les tableaux que tu crées et que je mets à jour à chaque
> utilisation d'un indice.

C'est tout à fait judicieux! J'ai utilisé g_keep par pure fainéantise :o)
La méthode que tu emploies est la meilleure et la plus accadémique.

> Je me suis permis de renommer tes variables pour pouvoir bien
> comprendre
> ton
> cheminement.
> Je vais maisntenant l'insérer dans mon prog et je te tiens au courant

super, merci par avance!

>
> je me permets de te remettre ma version..
>

<snip le (très bon) code>

Juste une minuscule remarque si tu veux bien: on préfère en
général éviter d'utiliser des caractères accentués dans les
noms de variables ( TabUtilisés() ), entre autre par ce que
ce n'est pas très lisible mais surtout par ce qu'il n'y a
pas d'accents sur les claviers qwerty.

En dehors de ce détail, l'adaptation m'à l'air parfaite :-)

--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/












1 2