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

VBA Access Discussion :

Mettre à jour une étiquette en fonction de la valeur saisie dans une autre [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 50
    Points : 24
    Points
    24
    Par défaut Mettre à jour une étiquette en fonction de la valeur saisie dans une autre
    Bonjour à tous,

    Je sollicite votre aide pour résoudre mon petit problème . Ca ne doit pas être bien compliqué mais mes essais se sont révélés infructueux.

    Je dispose d'une table avec 3 champs (exemple):

    ANNEE Num_semaine Debut
    2014 1 2013-12-30
    2014 2 2014-01-06
    2014 3 2014-01-13

    Je souhaiterais dans un formulaire, à l'aide de 2 étiquettes ou de 2 listes déroulantes pouvoir sélectionner mon année et mon numéro de semaine (ça j'y arrive ) et qu'après la sélection de ces deux données, une autre étiquette se mette à jour et me renvoie la valeur correspondante du champ "début" présent dans la table.
    Il faudrait en gros que je puisse faire un recherche verticale dans ma table avec comme paramètre mon année et mon num_semaine.

    Je crois savoir qu'il est possible d'utiliser une requête sql comme source de donnée directement dans ma 3ème étiquette (je pourrais faire ceci: select debut from table where annee=valeur.etiquette1 and Num_semaine=valeur.etiquette2), est-ce possible, si oui comment faire?

    Je précise qu'après je vais récupérer la valeur de la 3ème étiquette dans du vba.

    Merci d'avance pour vos conseils.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 339
    Points : 23 799
    Points
    23 799
    Par défaut
    Bonjour,

    Voici la solution qui me parait la plus simple si tu es dans un formulaire unique :

    Dans un champ texte mettre comme valeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DFirst("SemaineDebut"; "tblCalendrier"; "[Annee]=" & me.[NomTonChampAnnee] & " and [Num]" & me.[NomTonChampNum])
    Note que Access va traduire DFirst en francais mais que je ne me souviens jamais de cette traduction.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonjour,

    Vous avez la fonction de domaine DlookUp (RechDom en français) qui s'utilise comme source de la zone de texte résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DLookUp("[Debut]";"[LaTable]";"[ANNEE]=" & ZonedeTexte1 & " AND [Num_semaine]=" & ZonedeTexte2)
    Où ZonedeTexte1 et ZoneDeTexte2 sont les champs qui contiennent les valeur de l'année et Numéro de semaine. Ca pourrait être des zone de liste.

    Je vous conseille la lecture du tuto de référence ici pour en apprendre plus sur les fonctions de domaines.

    Cordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Bonsoir et Merci à vous deux pour vos réponses

    Ça m'a l'air assez puissant comme fonction, j'ai même vu que ça pouvait remplacer l'utilisation de DAO recordset (je débute en VB);

    Pour en revenir à mon problème, j'ai essayé de mettre en place l'une et l'autre des fonctions cependant j'ai le droit à ce message #Nom ? ou #erreur suivant les cas. En effet , j'ai testé avec un seul paramètre (annee), avec une valeur en dure, et j'ai utilisé le module qui permet d'écrire les arguments de la fonction facilement.
    Est-ce un problème de format, de crochet ou que sais-je encore?

    J'ai joins un visuel de ma formule (créé avec le module intuitif) et de mon formulaire pour que vous ayez une idée
    Images attachées Images attachées   

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Rechdom("[Debut]";"[Table1]";"[Annee]=[T1] ET [Semaine]=[T2])
    Par contre que sont T1 et T2 ? Normalement ça devrait être les champs du formulaire. et on écrirait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Rechdom("[Debut]";"[Table1]";"[Annee]=" & [T1] & " AND [Semaine]=" & [T2])
    Coordialement,
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Madefemere,

    T1 et T2 se trouve être les noms des zones de textes ou je rentre mon année et mon numéro de semaine, je les ai renommées.

    Je viens de réessayer ton code, mais ça ne fonctionne toujours pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Rechdom("[Debut]";"[Table1]";"[Annee]=" & [T1] & " AND [Semaine]=" & [T2])
    Je ne comprends vraiment pas pourquoi, c'est vraiment étrange.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Je crois savoir d'où vient le problème il doit s'agir d'un problème lié au format de mes champs année et semaine.

    En écrivant ceci ça fonctionne,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("[Debut]";"[Table1]";"[Annee]='" & [T1] & "'")
    maintenant il faut que j’intègre l'autre partie de la condition sur la semaine, je sais pas trop quoi faire il y a des guillemets partout une idée?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 50
    Points : 24
    Points
    24
    Par défaut
    Voilà je poste la formule qui va bien, ça pourrait servir à d'autres :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("[Debut]";"[Table1]";"[Annee]='" & [T1] & "'" & "AND" & "[Semaine]='" & [T2] & "'")


    Merci à tous pour votre aide ,

    Bonne nuit

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Ben voilà,

    Faut pas oublier effectivement que quand on traite des valeurs textes, on les met entre ' et les dates entre #.

    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 339
    Points : 23 799
    Points
    23 799
    Par défaut
    Une remarque a propos des delimiteurs de chaine.

    On peut utiliser l'appostrophe (') OU le guillemet ("). Si ta chaine contient une appostrophe et que ton delimiteur est une apostrophe, il faut parfois doubler l'apostrophe meme chose avec le guillemet. Notement quand on compose du SQL dans du code VBA.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Ceci est une chaine valide delimitee par des aposthophes ou des guillemets.'
    "Ceci est une chaine valide delimitee par des aposthophes ou des guillemets."
    'Ceci est une chaine valide qui contient une '' et un " delimitee par des aposthophes ou des guillemets.'
    "Ceci est une chaine valide qui contient une ' et un "" delimitee par des aposthophes ou des guillemets."
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/02/2012, 09h01
  2. Creation de plusieurs records dans une table en fonction de la valeur
    Par miniil dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 27/10/2009, 13h40
  3. Changement dans une feuille en fonction de 2 valeurs
    Par delph_le dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/06/2008, 15h24
  4. Réponses: 3
    Dernier message: 21/05/2007, 15h31

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