Ok Herman,
J'ai donc rectifié, et maintenant, j'ai le message d'erreur suivant :
Mais qu'est-ce que cela veut bien dire ?Erreur d'exécution '2465'
Erreur définie par l'application ou par l'objet
Ok Herman,
J'ai donc rectifié, et maintenant, j'ai le message d'erreur suivant :
Mais qu'est-ce que cela veut bien dire ?Erreur d'exécution '2465'
Erreur définie par l'application ou par l'objet
J'ai oublié de te dire :
j'ai la ligne
qui est en jaune.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Me.Form.Height = nombre_enregistrement * 2
Ton formulaire s'appelle Form ?
Oula, non... C'est parce que comme c'était sous Activation du sous-formulaire au départ, j'ai oublié de le modifier pour le bouton...
Résultat : j'ai modifié le code, qui est donc maintenant :
Mais maintenant, dès que je clique sur le bouton, mon formulaire disparait ! (même les entête de colonnes)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Bascule27_Click() Dim nombre As DAO.Recordset Dim Db As DAO.Database Dim nombre_enregistrement As Integer Set Db = CurrentDb Set nombre = Db.OpenRecordset("SELECT T_Tiers.RefGPTiers FROM T_Tiers") nombre_enregistrement = nombre.RecordCount Me.FS_OrganiserTourneesSF.Height = nombre_enregistrement * 2 '(si la taille du formulaire avec un seul enregistrement fait 2 cm) End Sub
Cela vient de ton chiffre 2
en VBA, les distances sont en twips, de mémoire 567 twips = 1 cm
Starec
Le Me.nomduform marche pas chez moi xD Je sais pas si ça peut venir de là aussi.
Re Starec,
Entre temps j'avais remplacé le 2 par 20... mais ça ne suffisait donc pas !
J'ai remplacé au hasard par 1428, et je vois un bout de mon formulaire... donc tu as raison !
Re herman et Starec,
En fait, en testant, et en tenant compte des écarts entre mes zones, je m'aperçois que ça ne tient pas compte du nombre d'enregistrements, la taille du sous-formulaire reste fixée sur la première fois que je clique sur le bouton.
Après, si mon nombre d'enregistrement est modifié, j'ai beau recliquer sur le bouton, la taille reste la même...
J'ai testé le code sur l'événement After Update du sous-formulaire. Il ne bugue pas, la réaction est la même que précedemment sur clic.
Donc, déjà, l'événement Sur Activation n'était pas une bonne idée.
@ Herman :
J'ai supprimé le Me, pour voir : ça ne change rien du tout chez moi.
J'ai une idée... je pourrais peut-être tester comment il compte les enregistrements... mais je ne sais pas comment il faut que je procède;
J'ai mis le code suivant, ou j'ai rajouté un msgbox :
Mais bien sûr, Access me renvoie le texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Bascule27_Click() Dim nombre As DAO.Recordset Dim Db As DAO.Database Dim nombre_enregistrement As Integer Set Db = CurrentDb Set nombre = Db.OpenRecordset("SELECT T_Tiers.RefGPTiers FROM T_Tiers") nombre_enregistrement = nombre.RecordCount MsgBox "nombre_enregistrement" FS_OrganiserTourneesSF.Height = (nombre_enregistrement * 344.736) + 2525 End Subnombre_enregistrement
Comment fait-on pour qu'il me renvoie la valeur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox nombre_enregistrement
Ok Herman,
Merci !
En fait, il me renvoie 1 tout le temps, que j'ai 0, 1, 2 ou 8 enregistrements.
La requête ne doit pas être bonne, surement que tu ne sélectionnes pas tous tes enregistrement en faisant ça.
Copie la dans le truc des requêtes normales, et éxécute pour voir combien de lignes il t'affiche.
J'espère qu'Access ne compte pas le nombre d'enregistrement du formulaire, au lieu du nombre d'enregistrements du sous-formulaire... En même temps, je n'ai pas de champ T_Tiers.RefGPTiers dans mon formulaire, je ne l'ai que dans mon sous-formulaire...
Je ne comprends rien !
J'ai fait ce que tu m'as dit, j'ai 658 enregistrements...
Et si je remets laz requête de départ, j'ai 12 enregistrements... ce qui est faux aussi.
Bonjour,
Voilà quelque chose que j'ai testé
Tient compte du fait que le sous formulaire accepte ou non des ajouts de lignes, il faudrait aussi rajouter un chouilla à la hauteur suivant que tu affiches ou non la barre de navigation en bas de formulaire
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 Private Sub Commande3_Click() Dim strSQL As String Dim n As Integer Dim oRst As DAO.Recordset strSQL = "SELECT * FROM TBLCLIENT WHERE NUMCLIENT LIKE " & Chr(34) & Me.txtrecherche & "*" & Chr(34) 'Ouvre le recordset pour compter le nombre de ligne Set oRst = CurrentDb.OpenRecordset(strSQL) With oRst .MoveLast n = .RecordCount .Close End With Set oRst = Nothing With Me.sformulaire Debug.Print strSQL .Form.RecordSource = strSQL .Height = .Form.EntêteFormulaire.Height + .Form.PiedFormulaire.Height + .Form.Détail.Height * (n - Form.AllowAdditions) End With End Sub
bonjour Tofalu,
Alors j'ai pris lton code, et j'ai mis mes valeurs dedans, ça donne ça :
Mais j'ai un problème avec txtrecherche, par quoi faut-il que je le remplace ?
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 Private Sub Bascule27_Click() Dim strSQL As String Dim n As Integer Dim oRst As DAO.Recordset strSQL = "SELECT T_Livraisons.DateLivraisonSouhaitee, T_Tiers.fNumTypeTournee, T_Livraisons.Retour, T_Livraisons.Transport, T_Livraisons.HeureLivraison, T_Tiers.RefGPTiers, T_Tiers.NomTiers, T_Tiers.fNumPL, T_Livraisons.DistanceParcourue, T_Livraisons.Montant, T_Livraisons.fNumTournee, T_Livraisons.NbColis, T_Livraisons.Poids FROM T_Tiers INNER JOIN T_Livraisons ON T_Tiers.NumTiers=T_Livraisons.fNumTiers ORDER BY T_Livraisons.HeureLivraison; " & Chr(34) & Me.txtrecherche & "*" & Chr(34) 'Ouvre le recordset pour compter le nombre de ligne Set oRst = CurrentDb.OpenRecordset(strSQL) With oRst .MoveLast n = .RecordCount .Close End With Set oRst = Nothing With Me.FS_OrganiserTourneesSF Debug.Print strSQL .Form.RecordSource = strSQL .Height = .FS_OrganiserTourneesSF.EntêteFormulaire.Height + .FS_OrganiserTourneesSF.PiedFormulaire.Height + .FS_OrganiserTourneesSF.Détail.Height * (n - FS_OrganiserTourneesSF.AllowAdditions) End With End Sub
Merci de m'aider
La première partie du code correspond à ton code permettant de synchroniser la zone de liste avec le sous formulaire
Ok Tofalu,
Alors j'ai mis ça :
Comme tu vois, j'ai donc juste mis après strSQL la requête SQL de mon sous formulaire.
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 Private Sub Bascule27_Click() Dim strSQL As String Dim n As Integer Dim oRst As DAO.Recordset strSQL = "SELECT T_Livraisons.DateLivraisonSouhaitee, T_Tiers.fNumTypeTournee, T_Livraisons.Retour, T_Livraisons.Transport, T_Livraisons.HeureLivraison, T_Tiers.RefGPTiers, T_Tiers.NomTiers, T_Tiers.fNumPL, T_Livraisons.DistanceParcourue, T_Livraisons.Montant, T_Livraisons.fNumTournee, T_Livraisons.NbColis, T_Livraisons.Poids FROM T_Tiers INNER JOIN T_Livraisons ON T_Tiers.NumTiers=T_Livraisons.fNumTiers ORDER BY T_Livraisons.HeureLivraison " 'Ouvre le recordset pour compter le nombre de ligne Set oRst = CurrentDb.OpenRecordset(strSQL) With oRst .MoveLast n = .RecordCount .Close End With Set oRst = Nothing With Me.FS_OrganiserTourneesSF Debug.Print strSQL .Form.RecordSource = strSQL .Height = .FS_OrganiserTourneesSF.EntêteFormulaire.Height + .FS_OrganiserTourneesSF.PiedFormulaire.Height + .FS_OrganiserTourneesSF.Détail.Height * (n - FS_OrganiserTourneesSF.AllowAdditions) End With End Sub
Mais lorsque je lance la procédure, j'ai un message d'erreur :
Je ne sais pas ce que ça veut direErreur de compilation:
Membre de méthode ou de données introuvable
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager