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 :

Remplissage automatique des champs selon case cochée [AC-2007]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut Remplissage automatique des champs selon case cochée
    Bonjour,

    Je suis de retour avec un nouveau problèmes ...
    Introduisons avec une petite photo de mon formulaire
    Nom : Carr.png
Affichages : 477
Taille : 65,2 Ko
    J'aimerais que quand je coche une case j'ai mon Champ la Branche ... est connecté au carrefour se remplisse automatiquement.
    Alors j'ai réussi mais la façon de faire ne me satisfait pas. Dans mon champ Branche_1 j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([4B_1]=Vrai;[Carr_ID] & [4B_1].[Remarque];"")
    Et dans mon champ Branche 2 j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =VraiFaux([4B_2]=Vrai;[Carr_ID] & [4B_2].[Remarque];VraiFaux([4B_3]=Vrai;[Carr_ID] & [4B_3].[Remarque];VraiFaux([4B_4]=Vrai;[Carr_ID] & [4B_4].[Remarque];"")))
    Le problème c'est que la branche A doit toujours être coché dans mon cas, si je met toute les possibilités dans les 2 champs les deux vont se remplir avec la même valeur et on ne pourra pas les changer ... Ce que j'aimerais c'est une solution pour que les champs se remplissent automatiquement selon le clic 1 et clic 2 sur mes cases a cocher ...

    Avez vous une idée ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 346
    Points : 23 809
    Points
    23 809
    Par défaut
    Bonjour.

    Je ne suis pas certain que ma réponse est la bonne mais je ferai juste un petit bout de code dans l'événement "Après MAJ" de la case à cocher qui ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.NomTonChamp=TaValeur
    Comme c'est du code tu peux faire à peut près tout ce que tu veux pour décider quelle valeur mettre mais au minimum cela devrait être cela.

    A+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Alors vraiment merci !
    Cela fonctionne nikel, j'ai ajouter 2-3 choses et ça ressemble a cela :
    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
    Private Sub Ctl2B_1_AfterUpdate()
        Dim Carr, Lettre As String
     
        Carr = Forms("F_Connexion_2B").Controls("Carr_ID").Value
     
        If Forms("F_Connexion_2B").Controls("2B_1").Value = True Then
        Me.Branche_1 = Carr & "A"
        Else
        If Forms("F_Connexion_2B").Controls("2B_1").Value = False Then
        Me.Branche_1 = ""
     
        End If
        End If
     
    End Sub
    J'ai une derniere question ! Comment on récupère le contrôle remarque dans le feuille de propriété d'un champ de formulaire ?!
    Dans le code que j'ai fait j'arrive a récupéré la valeur du champ "Carr_ID" mais j'aimerais la lettre de ma case d'option qui est stocké dans "Remarque". J'ai essayer de remplacer .Value par .Remarque et .Note mais ca doit etre autre choses .... Sinon ca fonctionne merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Je me rend compte que je risque d'arriver au même problème c'est a dire 2 fois la même valeur dans mes 2 cases. Comment peut-on traduire la case 2 ne peux pas avoir la même valeur que la case 1 ?!
    Car regarde bien mon formulaire, si je clic sur la case d'option A le formulaire va se remplir : La Branche A .....
    Ensuite je clic sur la case d'option D : La Branche D ....
    Mais comment faire savoir par code qu'il ne faut pas supprimer la Branche N°1 et bien remplir la case N'°2

    Je viens d'essayer cela mais ça ne fonctionne pas ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        If Forms("F_Connexion_2B").Controls("2B_2").Value = True Then
        ElseIf IsNull(Me.Branche_1) = True Then
        Me.Branche_1 = Carr & "B"
        Else
        If Forms("F_Connexion_2B").Controls("2B_2").Value = False Then
        Me.Branche_1 = ""

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Bon je m'approche du but mais ce n'est pas encore cela ....

    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 Ctl2B_1_AfterUpdate()
        Dim Carr, Lettre As String
     
        Carr = Forms("F_Connexion_2B").Controls("Carr_ID").Value
     
        If Not IsNull(Me.Branche_1) Then
        Me.Branche_1 = Carr & "A"
     
        ElseIf IsNull(Me.Branche_1) Then
        Me.Branche_2 = Carr & "A"
     
        End If
     
    End Sub
     
    Private Sub Ctl2B_1_Click()
     
        If Forms("F_Connexion_2B").Controls("2B_1").Value = False Then
        Me.Branche_1 = ""
     
        If Forms("F_Connexion_2B").Controls("2B_1").Value = False Then
        Me.Branche_2 = ""
     
        End If
        End If
    Avec code il efface bien mon action je décoche la case, il rempli bien automatiquement mes champs. Mais malheureusement il efface le précédant si je clic sur 2 case d'option au lieu de le mettre dans mon champs Branche_2 ...

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 346
    Points : 23 809
    Points
    23 809
    Par défaut
    Désolé je n'arrive pas à comprendre ce que tu veux obtenir.

    Pourrais-tu mettre un exemple de ce que tu veux voir au final ?

    Je ne sais pas si cela peut être utile mais tu peux concaténer un résultat à un existant en faisant quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.UnChamp=me.UnChamp & UneValeur
    A+

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Donc du coup la valeur c'est ok elle s'affiche bien comme je veux.

    Maintenant je vais te faire une démonstration en image de ce que je veux. Voila un de mes formulaires (j'en ai 6 avec un nombres de branches différents (celui de mon premier post a 4 branches par exemple) celui ci en a 2) :

    Nom : 2B.png
Affichages : 319
Taille : 29,6 Ko

    Donc maintenant si j'appuie sur ma case d'option (A) j'aimerai que mon champ La Branche(1) s'auto-complète comme ci-dessous :

    Nom : 2B_ac_1.png
Affichages : 335
Taille : 34,6 Ko

    Ensuite j'aimerai maintenant que si je clic sur la case d'option B ce soit mon champ la Branche(2) qui s'auto complète :

    Nom : 2B_ac_2.png
Affichages : 339
Taille : 35,8 Ko

    Mais pour l'instant ce qui arrive c'est que le 1B remplace la 1A et inversement dans le champ La Branche (1) ... ce qui donne 2 cases cochées mais un seul champ auto-complèté :

    Nom : 2B_ac_3.png
Affichages : 338
Taille : 34,1 Ko

    J'aimerai que si le champ est déjà rempli ce sois le champ vide qui se complète, (c'est la raison de mon IsNull) j'aimerai aussi que si tu décoches la case le champ se vide.

    J’espère avoir été compréhensible

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Bon je suis toujours pas trés loin du but.
    Cela fonctionne
    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
    Private Sub Ctl2B_1_AfterUpdate()
        Dim Carr, Lettre As String
     
        Carr = Forms("F_Connexion_2B").Controls("Carr_ID").Value
     
        If Not IsNull(Me.Branche_1) And Forms("F_Connexion_2B").Controls("2B_1").Value = True Then
        Me.Branche_2 = Carr & "A"
     
        ElseIf IsNull(Me.Branche_1) And Forms("F_Connexion_2B").Controls("2B_1").Value = True Then
        Me.Branche_1 = Carr & "A"
     
        Else
     
        Me.Branche_1 = ""
        Me.Branche_2 = ""
     
        End If
     
    End Sub
    Le problème c'est que si j'annule (décoche) et que je re coche toutes mes valeurs vont se mettre dans La Branche (2) (champ N°2) comme si avoir mis une valeur puis "" n'etai plus considéré comme une valeur null ....

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 346
    Points : 23 809
    Points
    23 809
    Par défaut
    Hum pourquoi faire un test de dépendance entre les cases ?

    Est-ce que ceci ne résoudrai pas ton problème ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Ctl2B_1_AfterUpdate()
        Dim Carr, Lettre As String
     
        Carr = me.Carr_ID.Value
     
        if me.2B_1=true then
               Me.Branche_2 = Carr & "A"
            else
               Me.Branche_2 = ""    end if
       end if
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Ctl2A_1_AfterUpdate()
        Dim Carr, Lettre As String
     
        Carr = me.Carr_ID.Value
     
        if me.2A_1=true then
               Me.Branche_1 = Carr & "A"
            else
               Me.Branche_1 = ""    end if
       end if
     
    End Sub
    A+

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Effectivement pour le formulaire a 2 Branches c'est pas un problème.
    Mais comme je l'ai dit j'en ai 6 différents, chaque fois une connexion supplémentaire est possible. Mais on ne peux en choisir que 2. Voila un exemple du 6 Branches

    Nom : 6B.png
Affichages : 367
Taille : 52,4 Ko

    Donc si je dégroupe mes contrôles cela va fonctionner A,B,C dans le champ 1 et D,E,F dans le champs 2.
    Le problème c'est que si l'utilisateur choisit A & C, le champ 1 aura la valeur 1A puis la valeur 1C alors que je veux qu'il y ai une valeur dans chaque champ ....

    Le dernier bout de code que j'ai mis fonctionne, mais il ne fonctionne qu'une seule fois Exemple :
    Je sélectionne mes connexions et les champs se remplissent automatiquement et au bon endroit (jamais l'un ne supprime l'autre)

    Nom : Ex1.png
Affichages : 366
Taille : 51,4 Ko

    Je me suis trompé je décoche A (les deux connexions disparaissent) alors que j'aimerais que seulement A n'y sois plus.

    Nom : Ex2.png
Affichages : 376
Taille : 63,9 Ko

    Pour finir je sélectionne une nouvelle connexion, et la bizarrement le code fait que c'est toujours le champs La Branche (2) qui se remplit ..... Comme si il ne comprend plus que le champ La Branche (1) est bien un champ Null !

    Nom : Ex3.png
Affichages : 324
Taille : 46,9 Ko



    Pour rappel le code que j'utilise actuellement c'est celui ci :
    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 Ctl4B_1_AfterUpdate()
     
        Dim Carr As String
     
        Carr = Forms("F_Connexion_4B").Controls("Carr_ID").Value 'Je vais chercher la valeur de mon carrefour
     
        If Not IsNull(Me.Branche_1) And Forms("F_Connexion_4B").Controls("4B_1").Value = True Then ' je verifie que mon option est cochée et que La Branche (1) n'est pas null
        Me.Branche_2 = Carr & "A" ' si les deux conditions sont respectées alors j'ecrit dans Branche (2) La valeur de mon carrefour & A
     
        'Sinon
     
     
        ElseIf IsNull(Me.Branche_1) And Forms("F_Connexion_4B").Controls("4B_1").Value = True Then 'je verifie que mon option est cochée et que La Branche (1) est null
        Me.Branche_1 = Carr & "A" 'si les deux conditions sont respectées alors j'ecrit dans Branche (1) La valeur de mon carrefour & A
     
        'Sinon je vide les champs
     
        Else
     
        Me.Branche_1 = ""
        Me.Branche_2 = ""
     
        End If
     
    End Sub

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 346
    Points : 23 809
    Points
    23 809
    Par défaut
    OK.

    Voici ce que je te suggère :

    1 compter le nombre de branches cochées.
    Faire la modif uniquement si le nombre n'est pas supérieur à 2.

    en code cela donne quelque chose comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private const NB_BRANCHE_MAX=2 'À mettre en dessous de Option Explict, à l'extérieur de toutes fonctions ou procédures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private  function CompterBrancheCoche() as long 'À mettre dans le formulaire
       dim result as long:result=0
       if me.6A_1=true then result=result+1   'Une ligne par branche
       if me.6B_1=true then result=result+1   'Une ligne par branche
       '...
       if me.6E_1=true then result=result+1   'Une ligne par branche
       CompterBrancheCoche=result
    end function

    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
    Private Sub CaseACocher_afterUpdate(prmCase as checkbox) 'À mettre dans le formulaire, pour ne pas avoir à répéter le code pour chaque case
        Dim Carr, Lettre As String
     
        Carr = me.Carr_ID.Value
     
        if prmCase=true then
     
               if CompterBrancheCoche() <= NB_BRANCHE_MAX then
     
                    select case CompterBrancheCoche
                       case 1
                          Me.Branche_1 = Carr & "A"
                       case 2
                          Me.Branche_2 = Carr & "A"
                       case else
                          error 5 'cas impossible
                    end select
     
                 else
                     msgbox "Seulement " & NB_BRANCHE_MAX & " à la fois.",vbexclamation
                     prmCase=false
               end if
     
            else
               'Mettre ici du code pour vider la bonne branche en testant son texte
               'Et après "déplacer texte de branche 2 dans branche 1 si on a vidé branche 1
       end if
     
    End Sub
    puis pour chaque case à cocher

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Ctl2B_1_AfterUpdate()
       call CaseACocher_afterUpdate(me.Ctl2B_1)
    End Sub
    A+

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Super !
    J'essaie cela demain et je te tiens au courant.
    Merci beaucoup pour ton aide et la patience que tu as eu de me lire.

    A bientôt Bonne soirée

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2016
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Bon c'est nikel ça fonctionne !
    J'ai faits des ajustements car j'ai eu du mal a faire le test de texte et changer la valeur de place dans les branches (ce que tu m'as mis en commentaire dans else après Case 1 & Case 2 ). Je n'ai pas ton niveau clairement.
    Donc j'ai fait en sorte que si il y a une erreur (3 cases cochées ou on décoche une case ....) Tout est remis a 0 et on recommence.

    Merci pour ton aide !

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

Discussions similaires

  1. [WD10] Remplissage Automatique des champs
    Par karim.net7 dans le forum WinDev
    Réponses: 1
    Dernier message: 11/07/2010, 08h47
  2. [AC-2007] Importation et remplissage automatique des champs d'une table
    Par vincent1746 dans le forum VBA Access
    Réponses: 6
    Dernier message: 31/05/2010, 14h17
  3. [FORMULAIRE] Remplissage automatique des champs
    Par Pwouaro dans le forum IHM
    Réponses: 5
    Dernier message: 03/12/2007, 15h00
  4. Réponses: 4
    Dernier message: 22/05/2006, 15h41
  5. [MySQL] Remplissage automatique des champs d'un formulaire
    Par dodji05 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/04/2006, 16h11

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