Bonjour à tous,
J'allais poster ce message dans [cours papy Turbo]commentaires, mais finalement je n'ai pas trop voulu polluer ce topic, donc me voici dans ce nouveau topic.
Papy turbo a dit:
Il y a pire encore, en affichage "feuille de données": tant qu'un sous-formulaire n'a pas été "étendu" (en cliquant sur le + pour afficher les données hiérarchiques), il n'existe pas, et on retrouve une autre série d'erreurs 2455 ou similaires !!!
Là aussi, on peut s'en sortir, en ce qui concerne le premier sous-formulaire.
Exemple de solution, lorsque le parent fait référence à son sous-formulaire, qui n'est pas forcément vide :
...
Noter : Une variable FirstError est toujours utilisée avec un Resume, pour éviter une boucle san fin : si l'erreur se reproduit > même gestionnaire d'erreur > Resume encore une fois > même erreur...
Voilà mon problème :
mon formulaire principal est en mode feuilles de données
Dans ce formulaire j'ai un sous formulaire en mode feuille de données
Quand je mets un jour un certain champ de mon formulaire, je dois parcourir le sous formulaire pour faire certaines mises à jour
Evidement je tombe sur la fameuse erreur 2455, donc j'applique ce qu'a dit papy Turbo.
Première ligne de formulaire principal, ça marche (pas tout le temps)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 'unexpanded permet de gérer l'erreur de formulaire non étendu On Error GoTo Unexpanded 'on ouvre un recordset sur les lignes de commandes With Me.ssf_detail_commande.Form.RecordsetClone On Error GoTo Catch .MoveFirst Do While Not .EOF call mon_traitement 'enregsitrement suivant .MoveNext Loop End With End If Me.cmd_date_envoi = Date End If Exit Sub Unexpanded: '2455 La référence d'une expression à la propriété Form/Report n'est pas valide. 'se produit lorsque SubForm est vide,ou, au démarrage, si le 1er n'a pas été 'expanded'. 'Réussit à fonctionner après un Expand On/Off, uniquement pour le PREMIER sous formulaire, ' celui qui apparaît en mode subdatasheet. If err = 2455 Then MsgBox FirstError If FirstError = False Then Me.SubdatasheetExpanded = True Me.SubdatasheetExpanded = False FirstError = True Resume 'sinon, tombe en dessous End If End If
deuxième ligne, ça ne marche plus.
Je ne vois pas ce qu'il manque à ce code pour qu'il marche tout le temps. si quelqu'un a une idée?
Merci d'avance
Partager