Bonjour,
Cette discussion fait suite à Dans un état, position variable d'un champ et hauteur variable de la section détail, dans laquelle il s'agissait de déplacer des champs dans la section Détail d'un état, en l'occurrence un devis.
Cependant, tout ne roule pas comme sur des roulettes car, s'agissant de lignes de hauteurs variables, Access semble décider que suivant l'ordre dans lequel il traite les lignes, le calcul de la hauteur de ces lignes doive différer !
Le contexte :
Dans le cas qui m'occupe, le devis peut comporter des lignes de différents types, chacun ayant une mise en forme différente pouvant aller jusqu'à une hauteur variable. En effet, ces lignes peuvent être soit :
- un titre -> hauteur fixe, 1 libellé gras souligné, permettant de chapitrer le devis ;
- un article -> hauteur variable en fonction d'un commentaire éventuellement (champ mémo) vide et placé sous la désignation, quantité, prix HT, etc ;
- un commentaire -> le champ mémo sus-cité, sans aucune zone de texte de taille fixe :
- un interligne -> une ligne de hauteur fixe mais n'affichant rien de visible (un champ vide dans mon cas).
Le problème :
Pour un même devis de test, suivant l'ordre des lignes, Access calcule correctement la hauteur des lignes... ou pas. Et lorsqu'il décide de ne pas, une ligne donnée peut être partiellement ou totalement recouverte par la ligne précédente ou la ligne suivante !!!
Évidemment, ce problème est complètement rédhibitoire.
Tentatives de solution :
a) j'ai tourné mon code dans tous les sens sans succès ;
b) de guerre lasse, j'ai tenté de fixer la taille par défaut de la section Détail largement par excès en laissant la propriété Autoréductible et en croisant les doigts pour cela fonctionne, mais bien sûr, ce fut peine perdue ;
c) puis l'illumination m'a frappé (violemment) : la solution devait passer par un sous-état, n'affichant qu'une ligne à la fois, ainsi plus de problème... eh bien si : le même exactement ;
d) illumination bis : un sous-état oui, mais un différent par type de ligne. Ainsi, il n'y aurait quasiment plus besoin de code et donc quasiment plus de source d'erreur. Après une recherche sur Internet, j'ai même trouvé la syntaxe ad hoc :
Mais Access a décider que mes illuminations étaient celles d'un illuminé et persisté à me dire que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer) Dim ctl As Control Select Case [INT_Contexte_ligne] Case LDEV_TITRE Reports![etat_Devis_detail]![s-etat_Devis_detail_ligne].SourceObject = _ <------- ICI "s-etat_Devis_detail_ligne_Titre" <------- ET LA End Select End Sub ' Evidemment, le select comporte d'autres cas, mais similaires en tous points à celle-ci.
Alors de trois choses l'une :Erreur d'exécution '2191' :
Impossible de définir la propriété Objet source en mode aperçu avant impression ou après le début de l'impression.
- ou bien ma syntaxe est fausse ;
- ou bien son emplacement est incorrect ;
- ou bien changer le sous-état dynamiquement est impossible (et Internet a tord, ce que je ne peux même pas imaginer).
Quelqu'un saura-t-il m'éclairer (depuis l'illumination, j'ai revu mes prétentions à la baisse : un simple éclairage, même tamisé ou indirect, m'aiderait grandement) ?
Partager