Problème de décalage sous Visual Basic 6

Bonjour,
je suis un débutant en Visual Basic 6 et j'ai un projet à faire sur la Gestion d'un Club OmniSport.
J'aurais deux questions à élucider.
Voici ma première question,
J'ai une page Menu qui regroupe tout mon projet : Adhérent, Médecin, Sport, ...
J'ai créé plusieurs pages filles pour adhérent, médecin, sport, ... quand j'ouvre pour une première fois une page fille n'importe laquelle elle se place par défaut en haut à gauche ce qui est parfait. Mais quand j'ouvre une deuxième page n'importe laquelle (ça peut être la même si je l'ai fermée entre temps) elle se décale de 1 cm vers la droite et 1,5 cm vers le bas à chaque fois. Donc imaginer que j'ouvre en tous 5 pages ce qui fait un décalage de 5 cm vers la droite et 7,5 cm vers le bas.
Je ne sais pas y remédier.
Voici la seconde,
J'ai créé un DataGrid pour avoir un aperçu rapide des adhérents (Nom, Prénom, Numéro, Rue, Mail, ...) qui sont dans le Club OmniSport.
Tout marche parfaitement, mon DataGrid se complète correctement mais le seul problème, il est très mal structuré la rue de l'adhérent n'est pas visible complètement, de même pour son adresse mail. J'ai essayé d'ajuster avec l'option DefColWidth mais ça ne fait pas grand-chose. J'aimerais que la colonne numéro soit adaptée pour sa taille, celle de la rue pour la sienne, ect ...
Est-ce possible ?
Merci d'avance.

18 réponses

  1. Contributeur
    Bonjour,
    Première réflexion... Si tes feuilles ne sont pas décalées.. comment aller de l'une à l'autre ?
    Ton Datagrid tu le rempli avec une base de donnée ?
    A+
    0
    1. Je n'avais pas envisagé cette possibilité, mais est-ce possible quand même de limité ce décalage, car au bout 10 pages ouvertes mais pas obligatoirement en même temps il y a un décalage énorme.
      J'en profite pour vous demander, comment faire pour délimiter une feuille, pour qu'elle ne puisse pas aller au delà de l'écran.
      Mon datagrid est rempli par une base de donné Access qui était fournit avec le projet.
      0
      1. Contributeur
        Dans le Form_Activate tu met..
        Me.Move Gauche,Haut,Largeur,Hauteur.

        Ça peut être aussi dans le
        Form_Resize

        A+
        Toute la connaissance du monde ne peu tenir dans une seul tête (moi)
        Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
        NOTE : Je ne répond pas aux MP pour les questions techniques.
        Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
        0
        1. Merci beaucoup pour tes réponses lermite222 et de ta rapidité.
          Aurais tu un conseil pour le DataGrid car je suis allé sur une aide que pour cela et c'est assez complexe pour modifier une petite part dans un DataGrid.
          0
          1. Contributeur
            Private Sub Form_Load()
                DataGrid1.Columns(1).Width = 2500
            End Sub

            A+
            0
            1. Merci pour ta réponse, mais avec l'option DefColWidth dans DataGrid, ça fessait la même chose. Mais c'est pas super précis.
              0
              1. Contributeur
                Pas précis ? tu peu adapter au pixel près !!!
                C'est à toi de voir pour adapter les largeurs, une fois que c'est fait y a plus à y revenir.
                0
                1. Oui je suis d'accord, je me suis mal exprimée. Ce que je voulais dire c'est que toutes les colonnes prennent la même taille et c'est cela que je ne souhaite pas.
                  J'aimerais que les colonne Nom, Prénom soient plus petites que les colonnes rue, mail.
                  0
                  1. Contributeur
                    Beh toi alors !!! c'est quand même pas compliquer.
                    Adapter l'array en fonction de ce que tu veux comme largeur.
                    Private Sub Form_Load()
                    Dim Col As Integer, Lg()
                        Lg = Array(2500, 3210, 540, 415, 3698)
                        For Col = 0 To 4
                            DataGrid1.Columns(Col).Width = Lg(Col)
                        Next Col
                    End Sub

                    A+
                    0
                    1. Excusez moi, mais je ne savais pas qu'on pouvait modifier la largeur d'un DataGrid grâce au Array en Visual Basic.
                      Maintenant me l'avoir dit, je le sais et je vous remercie.
                      Est-ce possible de renommer les colonnes d'un DataGrid ?
                      0
                      1. Contributeur
                        Si ça vient d'une BD tu ne peu pas, les titres de colonne sont les noms des colonnes de ta table.
                        0
                        1. OK d'accord.
                          Merci ça vient d'une BD
                          0
                      2. Contributeur
                        Mais j'en revient au positionnement de tes formes et vu que tu en a beaucoup tu peu te servir de ce système
                        Télécharge le zip.
                        Tu peu tester le projet mais ce n'est pas le but.
                        Tu copie le fichier LN_RoutinesINI.bas dans le répertoire de ton appli (c'est pas obligatoire mais plus prudent)
                        Ensuite tu l'ajoute à ton projet..
                        >> Projet >> Ajouter un module >> Existant >>
                        dans l'explorateur tu sélectionne le module et tu tape ENTER, il va s'ajouter à tes modules.
                        Dans le code de la feuille MDI au début du Form_Load tu met
                        Private Sub MDIForm_Load()
                            Init_Nom_INI
                            GetFormINI Me
                            '... la suite du code éventuellement
                        End Sub

                        et dans le Unload de la feuille MDI tu met
                        Private Sub MDIForm_Unload(Cancel As Integer)
                            PutFormINI Me
                        End Sub

                        Dans toutes tes feuilles tu ajoute juste après le Form_Load
                        GetFormINI Me

                        Et dans le Form_Unload
                         PutFormINI Me


                        Le résultat.. tes feuilles vont toujours s'ouvrir avec les dernières dimensions et positions qu'elles avaient la dernière fois que tu les a ouvertes.
                        A+
                        0
                        1. Ah oui ça a l'air pratique je testerais.
                          J'en profite pour vous demandez quelque chose.
                          Pendant des tests sur mon projet pour essayer d'éliminer les problèmes que je peux avoir, j'ai constaté un problème quand je compare deux zones de texte avec des numéros.
                          Je m'explique,
                          ZTun.text = ma première zone de texte = 100
                          ZTdeux.text = ma deuxième zone de texte = 200
                          Je fais une comparaison entre ces deux là.
                          If ZTun.text <= ZTdeux.text then
                          Msgbox " La zone de texte 1 est la plus petite "
                          Else
                          Msgbox " La zone de texte 2 est la plus petite "
                          End if

                          Je teste avec 100 dans la zone de texte 1 et 200 dans la zone de texte 2, ça marche.
                          Par contre si je teste avec 1000 dans la zone de texte 1 et 200 dans la zone de texte 2, ça marche plus. Avec les chiffres de plus de 999 ça ne fonctionne plus.
                          C'est du à quoi ?
                          0
                          1. Contributeur
                            La comparaison se fait sur une variable en string, donc la première lettre est toujours "1"
                            Pour que ça fonctionne...
                            If Val(ZTun.text) <= Val(ZTdeux.text) then
                            0
                            1. Que dire,
                              à part un grand merci pour toutes vos réponses précises et une rapidité exemplaire.
                              Je suis désolé mais j'aurai encore une petite question à élucider si cela vous dérange pas.
                              Mon problème vient d'un rafraichissement d'un Data.
                              A partir d'un Data je récupère des informations sur des adhérents de ma base de donnée Access. Je créé des nouveaux adhérents ou j'en supprime.
                              Quand cela est fait, je souhaite que ma page soit directement mis à jour. Donc je dois rafraichir le Data. J'ai créé un bouton de commande Rafraichir sur la même page du Data (DataAdhérent.refresh). Ça marche parfaitement, je créé un nouveau adhérent, j'appuie sur le bouton de commande Rafraichir et ça marche.
                              Mais l'inconvénient c'est que je souhaite rafraichir ce DataAdhérent d'une autre page, donc j'ai créé un bouton de commande Rafraichir sur cette page et j'ai inséré ce code là : Fadh.DataAdhérent.refresh.
                              Fadh = page où le DataAdhérent se situe
                              DataAdhérent = le Data qui récupère les informations de la base de donnée
                              Mais cela ne fonctionne pas.
                              Auriez vous une solution ?
                              0
                              1. Contributeur
                                A première vue,
                                Tu rafraichi le datagrid que tu viens de modifier mais tu n'actualise pas la table dans la BD.
                                Donc, quand tu rafraichi sur l'autre page les données n'existe pas encore dans la BD.
                                Mais sans certitude, pas facile avec peu de renseignement.
                                0
                                1. D'accord comment voulez vous que j'actualise la table dans la BD.
                                  Quelles informations supplémentaire vous auriez besoin ?
                                  0
                                  1. Contributeur
                                    Beh comme tu fais pour sauver les modif avant de fermer.
                                    0