Dude a écrit : ↑20 mai 2024 19:33
Bis repetitae :
Dude a écrit : ↑20 mai 2024 13:31
on en revient à la solution de jeanmimi.
J'entends bien, cependant, cette solution rend le formulaire inexploitable puisque le contrôle de table est alors rendu inopérant. Il n'est donc pas possible d'y voir les enregistrements déjà saisis, or cette base de données sera ensuite exploitée par différents utilisateurs. Ça complique grandement les choses de ne plus pouvoir utiliser les outils disponibles...
Dude a écrit : ↑20 mai 2024 19:33
Car il n'y a aucun
Dude a écrit : ↑20 mai 2024 13:31
intérêt de charger une table si c'est pour se positionner sur un nouvel enregistrement
Encore une fois, je comprends bien que, à tes yeux d'utilisateur averti, il n'y a aucun intérêt. Cependant, si j'ai initié ce post, c'est parce que d'autres avant moi avaient eu la même idée (depuis 2008...). Ils ont trouvé de l'aide ici grâce à des personne bienveillantes et sont arrivés au résultat souhaité (résultat que je n'arrive pas à adapter à ma base, j'en conviens !) Ceci-dit, même en relisant leurs échanges, il ne se trouve personne qui leur ait répondu ce genre d'affirmation !
Dude a écrit : ↑20 mai 2024 19:33
Hmm... Je sens le message personnel !
PS : Merci pour le code, j'étais en train de le ré-écrire pour le republier. Tu es bien plus expert que moi, à n'en point douter !

D'ailleurs, le
.last n'était pas présent à l'origine, je vais le tester...
[Edit] J'ai testé avec ta proposition de code, mais je reviens au même résultat. Cependant, en reprenant une autre manière de coder, ça semble fonctionner : (Je me suis permis de retirer le message perso !

)
Code : Tout sélectionner
Sub Ouvrir_Type'[nomMacro]
const FormAOuvrir ="Form-Type"'[nomFormulaire-àouvrir]
const FormAFermer ="MENU"'[nomFormulaire-àfermer]
oForms = ThisDatabaseDocument.FormDocuments
Lien = oForms.getbyname(FormAOuvrir).open
'issue du suprême https://forum.openoffice.org/fr/forum/viewtopic.php?p=178282#p178282
oForm = Lien.DrawPage.Forms.getByName("MainForm")'[nom"sous"Formulaire]
'attend que le formulaire soit chargé
Do while oForm.isLoaded = false
Loop
wait 100 '[attente en ms]
with oForm
.last
.moveToInsertRow
End with
bRet = oForms.getByName(FormAFermer).close
End Sub
J'ai testé sans la variable
wait, mais ça ne fonctionnait pas, puis j'ai re-testé avec différentes durées de plus en plus courte jusqu'à
1, sans rencontrer le moindre pb donc je pense que laisser à
100 est un bon compromis... Mais comme je ne m'y connais pas, je demande l'avis d'un habitué ! [/Edit]