Je n'en sais rien.
J'ai eu plusieurs versions de mon code de départ. Je ne sais plus ce qui fonctionne. De toute façon, le requery ne m'aidera pas à obtenir ce que je veux, nan ?
Version imprimable
Je n'en sais rien.
J'ai eu plusieurs versions de mon code de départ. Je ne sais plus ce qui fonctionne. De toute façon, le requery ne m'aidera pas à obtenir ce que je veux, nan ?
:help:
Dites moi si je comprend bien :cfou:
1 : tu as un formulaire (nom?) dans lequel tu as un control onglet (nom?)
2 : dans un des onglets, tu as tes champs quickseak et Texte63
3 : tu voudrais montrer l'onglet qui as le (sous) formulaire ACTUALISATION selon le critère saisi dans Texte63
4 : ton sous formulaire ACTUALISATION quel est la source de ses données?
Je reprends :
Situation :
Un form HOME, dans lequel il y a :
- 5 onglets dont les onglets MENU et ACTUALISATION (tous invisibles à l'ouverture sauf ACCUEIL).
- dans l'onglet MENU :
-j'ai un contrôle quickseak qui est un groupe d'options auquel j'ai donné la valeur par défaut 0, sur tes conseils
-ce contrôle a deux options (1et2) qui correspondent à des critères de recherche
-une zone de texte pour entrer du numérique (des références)
-un bouton OK pour valider
But = quand on sélectionne correctement un critère et qu'on entre une bonne référence, cela doit ouvrir l'onglet ACTUALISATION sur lequel se trouve un sous-form ACTU (j'ai construit le formulaire ACTU intégré en tant que ss-form donc, à partir d'une T_ANNONCES), sur la référence validée dans le MENU
Objectif :
- si aucune des cases n'est sélectionnée, je veux un msgbox pour la situation
- si 1 case est sélectionnée mais aucune valeur entrée dans la zone de texte indépendante, un autre msgbox de circonstance
- si aucune case n'est sélectonnée mais que la zone de texte est remplie, le msg box du premier cas de figure.
- si tout est bien sélectionné mais que la référence entrée dans la zone de texte est erronée, alors un 3ème msgbx mais sans que cela n'ouvre l'onglet ACTU.
Problème avec mon code actuel :
les 3 premiers cas de figures fonctionnent.
Le 4ème me met bien mon message box mais ouvre l'onglet ACTUALISATION quand même.
De plus, quand tout est bien sélectionné et que je valide, ça m'ouvre tout simplement l'onglet ACTUALISATION (chouette) mais pas sur la réf, sélectionnée, comme une consultation normale de tous mes enregistrements à partir du premier.
Je viens de vider mes pièces jointes, donc voici un bout de ma base
je crois que le problème vient du fait que tous les formulaires des onglets sont tous ouverts. J'ai apporté des modifications maintenant au moins le formulaire est ouvert sur le bon enregistrement mais il reste des erreurs à corriger.
Cherchons ...
Code:
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
32
33
34
35 Else Dim req As Recordset If Me.quickseak = 1 Then Set req = CurrentDb().OpenRecordset("SELECT Réfdossier FROM ANNONCES WHERE Réfdossier = " & Me.Texte63 & "") If req.RecordCount > 0 Then mcri = "Réfdossier = " & Me.Texte63 Form_HOME.ACTUALISATION.Visible = True Form_HOME.ACTUALISATION.SetFocus Form_HOME.MENU.Visible = False Forms!HOME.form!ACTU.Filter=mcri Forms!HOME.form!ACTU.Filteron=True Else MsgBox "Référence dossier erronée ou inexistante", vbInformation + vbOKOnly, "AVERTISSEMENT" End If Else Set req = CurrentDb().OpenRecordset("SELECT Réfmandat FROM ANNONCES WHERE Réfmandat = " & Me.Texte63 & "") If req.RecordCount > 0 Then mcri = "Réfmandat = " & Me.Texte63 Form_HOME.ACTUALISATION.Visible = True Form_HOME.ACTUALISATION.SetFocus Form_HOME.MENU.Visible = False Forms!HOME.form!ACTU.Filter=mcri Forms!HOME.form!ACTU.Filteron=True Else MsgBox "Référence mandat erronée ou inexistante", vbInformation + vbOKOnly, "AVERTISSEMENT" End If End If End If End If
Bonjour et merci pour ton temps.
Je viens d'essayer ton code mais cela bug surquand le critère et la réf sont corrects.Code:Forms!HOME.Form!ACTU.Filter = mcri
Le reste, c'est OK. j'ai mes msgbx selon les situations
et que vaut mcri??
Ce n'est vraiment pas à moi qu'il faut demander ça !
Je ne sais pas ce que ça veut dire
et ben juste avant
tu dois avoir une ligne mcri=...Code:Forms!HOME.Form!ACTU.Filter = mcri
Donne nous cette ligne ;)
je pourrais regarder dans la bdd jointe, mais je n'ai que access97 ici...
Eh bien il n'y a rien juste avant.
C'est le dernier code que DMoup a donné en page 3
c'est donc
La question maintenant: sur ton formulaire Forms!HOME.form!ACTU, y'a-t'il un textbox ou autre qui s'appelle "Réfdossier"??? (je parle du nom, pas de sa source)Code:mcri = "Réfdossier = " & Me.Texte63
Non ! Sur ACTU, le nom est "Référence dossier" (la source étant Réfdossier)
alors essaie:
idem pour RefMandatCode:mcri = "[Référence dossier] = " & Me.Texte63
Toujours le même problème et le même bug, cela n'a rien changé :roll::(
Oui j'avais dit qu'il ya des erreurs à corriger.
Par contre pour
tu devrait en principe pouvoir répondre avec un peu d'attention !Citation:
Envoyé par 6ril25
Alors le problème c'est juste la manière de référencer le sous formulaire dont le vrai nom est "CONSULT ANNONCES" et que toi tu renomme en ACTU.
En plus la variable mcri n'avait pas été déclaré.
Donc le code qui marche est ci-dessous. Tu peux le copier et le coller directement sur le Private Sub du bouton OK. Mais après cela, il faut essayer de le comprendre.
Il fallait juste remplacer
parCitation:
Forms!HOME.Form!ACTU
Citation:
Forms!home!ACTU.Form
voilaCode:
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Dim mcri As String If Me.quickseak.Value = 0 Then MsgBox "Veuillez sélectionner un critère de recherche", vbInformation + vbOKOnly, "AVERTISSEMENT" Else If IsNull(Me.Texte63.Value) = True Then MsgBox "Veuillez saisir une référence.", vbInformation + vbOKOnly, "AVERTISSEMENT" Else Dim req As Recordset If Me.quickseak = 1 Then Set req = CurrentDb().OpenRecordset("SELECT Réfdossier FROM ANNONCES WHERE Réfdossier = " & Me.Texte63 & "") If req.RecordCount > 0 Then mcri = "Réfdossier = " & Me.Texte63 Form_HOME.ACTUALISATION.Visible = True Form_HOME.ACTUALISATION.SetFocus Form_HOME.MENU.Visible = False Forms!home.Form!ACTU.SetFocus Forms!home!ACTU.Form.Filter = mcri Forms!home!ACTU.Form.FilterOn = True Forms!home!ACTU.Requery Else MsgBox "Référence dossier erronée ou inexistante", vbInformation + vbOKOnly, "AVERTISSEMENT" End If Else Set req = CurrentDb().OpenRecordset("SELECT Réfmandat FROM ANNONCES WHERE Réfmandat = " & Me.Texte63 & "") If req.RecordCount > 0 Then mcri = "Réfmandat = " & Me.Texte63 Form_HOME.ACTUALISATION.Visible = True Form_HOME.ACTUALISATION.SetFocus Form_HOME.MENU.Visible = False Forms!home.Form!ACTU.SetFocus Forms!home!ACTU.Form.Filter = mcri Forms!home!ACTU.Form.FilterOn = True Forms!home!ACTU.Requery Else MsgBox "Référence mandat erronée ou inexistante", vbInformation + vbOKOnly, "AVERTISSEMENT" End If End If End If End If
J'vais faire une prière en attendant que tu nous dises si ça marche ;)
Verdict :
ça fonctionne :yaisse2::king: MBoup
SAUF que .....(ce serait trop facile :D), une fois sur l'enregistrement désiré, les boutons de défilement (précédent, suivant...) ne fonctionnent plus. Je ne peux pas, si je le souhiate, aller à l'enregistrement d'après ...
Il y a moindre mal mais c'est embêtant pour l'utilisateur
c'est parce que tu as un filtre. il suffit de supprimer ce filtre, soit par un clic sur un bouton:
soit par le symbole "entonnoir" de la règle d'outils.Code:Forms!home!ACTU.Form.FilterOn = false
Je te conseille fortement le bouton...
Ok pour moi (quoique) mais je ne vois pas où mettre ce bouton dans le mesure où je ne vais pas demander aux utilisateurs de cliquer sur le bouton à chque fois qu'ils voudront voir les enregistrements alentours