IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Formulaire et Ctrl Onglet


Sujet :

Access

  1. #1
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut Formulaire et Ctrl Onglet
    Bonjour à tous,

    je suis en train, depuis quelques temps, de dévolopper une petite appli sous Access.
    J'ai, dans un formulaire, un Contrôle Onglet qui reprend l'ensemble des pages d'un catalogue matières. Pour chaque page du catalogue, j'ai une page onglet.

    A l'origine je m'étais contenté d'ajouter les images.jpg au fur et à mesure que je construisais mes onglet. Seulement, je me suis vite rendu compte que le poids des images commençait à faire son office, car le formulaire ne s'ouvrait plus aussi rapidement qu'au début.

    J'ai donc décidé de construire des sous-form indépendant dans lesquels je posais mes images, et ensuite j'incluais mes sous-formulaires sur le Ctrl Onglet, soit 1 par page.
    Il y a eu du mieux, mais là aussi je souffrais d'un ralentissement sévère à l'ouverture du Formulaire principal.

    Ma dernière idée fut de couper le formulaire en 2 (parce qu'il m'était possible de le faire seulement en 2 pour des raisons tierces), mais là encore le resultat obtenu n'est pas celui escompté.

    Quelqu'un peut-il me dire comment puis-je m'y prendre pour alléger tout ça ?
    Que me conseillez-vous? passez de jpg en gif pour alléger encore un peu plus le poids des SF ?


    J'ai globalement 2 formulaires principaux et 20 sous-formulaires chacun, ce qui faisait un total de 40 pour le premier essai.

    Je sais que ça parait peut être énorme, mais je n'ai pas le choix!
    Autre contrainte, je ne peut plus diviser mes Formulaires principaux, ils doivent rester au nombres de 2 grand maximum !

    Je m'en remets à vous !

    Cdlt,

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Ce qui est lent c'est l'affichage, mais tes images à visible = faux dans leurs propriétés et rend les visibles quand tu as besoins

    Starec

  3. #3
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Ok j'essais ça !

    c'est intéressant comme idée, je n'y avais pas penser, je repasserais pour vou dire ce qu'il en est !

    merci

  4. #4
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    effectivement, je sens bien que je suis sur la voie de la solution , mais je fais de nouveau face à un petit problème.

    Par défaut j'ai passé tout les propriétés "visible" des images de mes sous-formulaires à FALSE.
    Je les ai également renommer afin de faciliter le code pour plus tard en Img0_1.

    Img0 pour Image du SF situé dans l'onglet 0
    et _1 pour l'Id bien sûr.

    A l'ouverture de mon formulaire principal pour essayé de rendre mes images visibles j'avais écrit ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    O = CtlTab11.Value
    SF = "SF" & O
    For Each Ctl In Me.CtlTab11
        Select Case Left(Ctl.Name, 4)
            Case "Img" & CtlTab11.Value
            Ctl.Visible = True
        End Select
    Next Ctl
    Au début j'avais pensé au contrôle onglet car c'est de lui que dépend le SF affiché.Mais je pense que le problème vient du fait que j'appelle les contrôles situés sur l'onglet et non ceux situés dans mon SF.

    Seulement comme je n'en ai pas qu'un (SF) quel moyen j'ai pour nommé celui qui est le courant ?
    Je veux dire par là que je ne peux pas dire par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Ctl In Me.Fille11
    Fille11 étant le nom de mon SF car je ne sais jamais si c'est celui là qui est actif !

    Il faudrait récupérer le NOM du sous formulaire dans une variable, mais là encore le "For Each" me renvois un message d'erreur qui me dit qu'il ne peut itérer que sur un objet collection ou un tableau.

    J'avais aussi essayé de renommer mon Sous Form en SF0; SF pour sous formulaire et 0 pour le N°onglet auquel il est rattaché et j'ai fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each ctl In CurrentProject.AllForms(SF).Name
    SF étant une variable de type variant composé de ceci
    O étant une variable récupérant le N° d'onglet
    mais idem.

    Donc je coince sur le paramètre à mettre sur In de For Each ctl.

    J'espère avoir été assez clair dans ma description de problème.
    Ou si vous voyez une autre idée... !

  5. #5
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    je fais remonter ce topic dans le cas d'un non lu par quelqu'un qui pourrait peut être m'apporter une réponse !

    Merci et bonne journée

  6. #6
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    bon n'y arrivant pas et ne voyant aucune réponse, je souhaite tout simplement savoir comment je peux récupérer le nom de mon Ctrl Sous-Formulaire dans une variable.

    Ce que j'ai :

    1 CtrlOnglet de 20 Onglets
    Dans chaque Onglet 1 SousFormulaire
    Tous (les Sous Formulaires) sont rendus invisible pour une question de rapidité d'ouverture du formulaire Principal.

    Ce que je veux :

    Afficher seulement le SousFormulaire de l'onglet actif !

    J'avais donc dans l'idée de dire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sur changement de MonCtlTab
     
    MonSubForm.Name = "SF" & MonCtlTab.Value
    MaVar = MonSubForm.Name
     
    If MaVar.Visible = False Then
    MaVar.Visible = True
    End If
    Mais là il me met une erreur 424 "Objet Requis"
    Je suis allé dans la FAQ j'ai vu de quoi ça parle mais je pense pas qu'il faille ajouter quelque chose, je pense plus à une erreur d'interpretation du code de ma part, mais je vois pas comment je dois faire !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    salut

    je crois que la bonne syntaxe pour le FOR IN est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Ctl In Me.Fille11.Controls

  8. #8
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    Oui effectivement mais dans ce cas, je dois nommer le sous-formulaire auquel je souhaite faire référence, alors que moi je ne sais pas lequel c'est puisque c'est en fonction de l'onglet choisi ! D'où l'idée de le passer en variable mais apparemment rien ne marche !

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 419
    Points : 508
    Points
    508
    Par défaut
    sinon au leiu de jouer sur la prop. visible, tu peux jour sur RecordSource du sous-form.
    Tes sous-form n'ont pas de RecordSource par defaut, le clic sur un bouton en affecte un, et un coup de requery pour la route...

  10. #10
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Bonjour,

    alors là je dirais peut être car je ne sais pas trop faire ça. Si tu m'expliques un peu plus en détail j'y arriverais peut être !

    Mais il ne faut pas oublier que je joue avec la propriété .Visible parce que c'est bien là mon problème. Je cherche à éviter le chargement de toutes les images de tous mes sous-formulaires au démarrage de mon Formulaire principal.

    Merci pour l'aide apportée jusque là !

  11. #11
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut lo
    Je reviens encore car grâce au forum j'ai trouvé une partie de ce que je cherche et là ça marche.

    Comme dis dès le début, je cherche à minimiser le poids du chargement des images au démarage du Formulaire principal.

    Donc toutes les Propriétés.Visible de mes images ont préalablement été passé à false.

    Ensuite pour les afficher voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For Each Ctl In Forms![Formulaire1]![SF0].Form.Controls
       Select Case Img
            Case Img
             Ctl.Visible = True
       End Select
    Next Ctl
    Seulement dans ce cas, le Sous Formulaire "SF0" est désigné en dur, or moi j'aimerais pouvoir le remplacer par une variable !
    Alors j'ai écris çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim O As String
    Dim SF As Variant
     
    O = CtlTab11.Value
    SF = "SF" & O
     
    For Each Ctl In Forms![Formulaire1]!SF.Form.Controls
       Select Case Img
            Case Img
             Ctl.Visible = True
       End Select
    Next Ctl
    Seulement il me met une erreur d'exécution "2465" Impossible de trouver le champ 'SF' auquel il est fait référence dans votre expression.

    Je pense que là si on peut trouver la solution ici je devrais m'en sortir !

    merci

  12. #12
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Une petite question, pourquoi un maximum de photos sur le même formulaire. Il doit être possible d'aoir une photo par enregistrement et les afficher suivant un choix.
    Si c'est pour un catalogue, un rapport devrait tout mettre en page.
    Si c'est pour consultation via les formulaire, un formulaire continu devrait le faire aussi.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  13. #13
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Oui cela aurait été possible dans le cas où ce formulaire était destiné à des clients finaux, on aurait pu faire ça dans le style d'un site en ligne, je pense que c'est à ça que tu fais allusion.

    Ma démarche est tout autre, déjà ce formulaire est destiné à des chargées de clientèles, qui ont pour but de saisir des commandes en ligne (téléphonique).

    Le catalogue (papier) existe chez les clients et le formulaire est en quelque sorte une version électronique de ce catalogue pour les Charg.Cli. qui leur permet de visualiser le catalogue "à la page près" au moment de la commande !
    Donc dans mon CDC je devais reprendre l'ensemble de l'existant et l'adapter à l'écran, d'où ces contraintes !

    Heureusement que je ne bosse pas à la REDOUTE, oui je sais !!

  14. #14
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    Bon j'ai aussi essayé de renommer ma déclaration de variable.

    J'ai essayé avec : du coup cette fois ,"forcément", les codes d'erreur changent au passage du débug.

    si je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    O = CtlTab11.Value 
    SF = "SF" & O
    l'erreur est : erreur de compilation utilisation incorrecte de la propriété.

    Si je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    O = CtlTab11.Value 
    SF.Name = "SF" & O
    l'erreur est : erreur d'exécution '91' Variable objet ou variable de bloc With non définie.

  15. #15
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    bonjour,

    Je suis un peu dégouté, l'échéance arrivant à grand pas et n'ayant pas eu de réponse à mon sujet, je me suis contenté bêtement de faire une répétition de If imbriqué d'autant de fois que de sous formulaire indépendant !

    Franchement c'est pas génial, mais au moins ça marche.

    je me suis donc contenté de faire :

    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
     
    Dim O As String
    O = CtlTab11.Value
     
    If O = 1 Then
    For Each Ctl In Forms![Formulaire1]!SF1.Form.Controls
       Select Case Img
            Case Img
             Ctl.Visible = True
       End Select
    Next Ctl
    ElseIf O = 2 Then
    For Each Ctl In Forms![Formulaire1]!SF2.Form.Controls
       Select Case Img
            Case Img
             Ctl.Visible = True
       End Select
    Next Ctl
     
    ...etc
    Comme j'ai dit, c'est franchement pas génial mais comme personne ne m'a donner de réponse, je m'en contente.

    Si en voyant ça quelqu'un sait m'apporter une vrai solution simple et moins lourde surtout, qu'il ne se prive pas !

    A+

  16. #16
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    mouaif...
    moyen tout cela !
    20 sous-formulaires pour 20 onglets, sur 2 formulaires....
    C'est pas maintenable !
    Alors, je te conseille plutôt :

    1 liste et 1 sous-formulaire dans 1 formulaire.
    Ca irait pas mieux ?
    • Tu te fais une table avec 2 champs
      champ1 : Le libellé de la page que tu veux montrer à ton utilisateur
      champ2 : le nom du formulaire à montrer dans le sous-formulaire
      => Avantage : Pas de limite de nombre de pages
    • Tu fais pointer ta liste sur cette table, en précisant que c'est la colonne du champ2 qui est la colonne liée
    • Sur évènement Après MAJ de la liste
      Tu modifies la propriété 'Objet Source' du sous-formulaire en y mettant la valeur de la liste


    et là, ce doit être terminé, normalement.

    ++

  17. #17
    Membre habitué Avatar de Orakle
    Homme Profil pro
    Responsable Informatique
    Inscrit en
    Mars 2004
    Messages
    204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Responsable Informatique
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2004
    Messages : 204
    Points : 154
    Points
    154
    Par défaut
    L'idée est très bonne sauf que :

    - 1. J'avais un impératif temps que je devais respecter
    - 2. Les onglets m'étaient imposés

    Merci quand même car effectivement cela m'aurait bien facilité la tâche !

    A part ce déboire, l'appli fonctionne correctement, j'ai modifié toutes mes images de jpg en gif pour le web, et je n'ai pratiquement aucune perte de qualité et par contre j'ai retrouvé la fluidité attendue.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/07/2006, 14h24
  2. Réponses: 3
    Dernier message: 31/05/2006, 15h30
  3. Formulaire avec des Onglets
    Par Orin dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2006, 10h28
  4. Trier un sous formulaire dans un onglet
    Par dlh1222 dans le forum Access
    Réponses: 1
    Dernier message: 17/09/2005, 14h35
  5. Réponses: 3
    Dernier message: 27/10/2004, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo