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 :

Valeur zone de texte = Valeur champ ?


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut Valeur zone de texte = Valeur champ ?
    Bonjour,

    J'ai, dans formulaire qui permet de remplir une table, un champ qui a toujours la même valeur.

    J'ai créé une zone de texte et je souhaiterai que sa mise a jour change la valeur dans toutes les lignes du champ correspondant.

    Pour cela j'ai fais une procédure événementielle après mise à jour :

    Private Sub Texte156_AfterUpdate()
    Me!donnees_rendement_calc.Value = Me!Texte156.Value
    Me!Texte156.Value = EstVide
    End Sub

    Ou

    Private Sub Texte156_AfterUpdate()
    Me.donnees_rendement_calc = Me.Texte156
    Me.Texte156 = EstVide
    End Sub

    Mais cela ne rempli qu'une seule ligne.
    Je voudrai que cela remplisse automatiquement toutes les cases du champs donnees_rendement_calc, et je pense que cela doit être assez simple non?

    Ou est-il nécessaire pour cela d'établir un Recordset de ma table pour ensuite alimenter chaque ligne du champ via une boucle VBA ? Cela me semble compliqué pour pas grand chose.

    Private Sub Texte156_AfterUpdate()
    Dim rst As dao.Recordset
    Dim donnees_rendement_calc As Double
    Set rst = CurrentDb.OpenRecordset("T1_Donnees", dbOpenDynaset)
    For donnees_rendement_calc = First To donnees_rendement_calc = Last
    rst.AddNew
    rst("donnees_rendement_calc") = Me.Texte156
    rst.Update
    Next
    rst.Close
    Set rst = Nothing
    End Sub


    Quelqu'un aurai une solution pour moi svp ?
    Merci

  2. #2
    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,

    Effectivement, si tu as plusieurs enregistrements dans ta table, il te faut, soit les parcourir avec un Recordset en VBA, soit utiliser en VBA une requête mise à jour ou UPDATE du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strSQl = "UPDATE T1_Donnees SET T1_Donnees.donnees_rendement_calc = """ & Me.Texte156 & """"
    Docmd.RunSQL strSQl
    Attention, il faut vérifier que Me.Texte156 n'est pas null avant de lancer la requête sinon une erreur sera levée.

    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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Merci, cela fonctionne.
    J'ai un événement sur click permettant de supprimer la valeur dans Texte156 (pour ne pas avoir à le faire lorsqu'on change la valeur) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Texte156_Click()
    Me.Texte156 = EstVide
    End Sub
    Et du coup la requête en événement Après MAJ (qui semble plus light qu'un RecordSet) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Texte156_AfterUpdate()
    strSQl = "UPDATE T1_SCPI_Donnees SET T1_SCPI_Donnees.scpi_donnees_rendement_calc = """ & Me.Texte156 & """"
    DoCmd.RunSQL strSQl
    End Sub
    Est il possible de se débarrasser du message Access : " Vous allez mettre à jour 22 ligne(s)." ?

    Aussi après avoir dit "oui" au message précédent, le formulaire reste visuellement avec les valeurs précédentes (pour le rendement et les calculs associés). Pour voir les résultats je dois cliquer dans les cases, ou bouger la page avec la barre de défilement. Cela me semble plutôt étrange, et également pas très pratique.

  4. #4
    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,

    Pour
    Est il possible de se débarrasser du message Access : " Vous allez mettre à jour 22 ligne(s)." ?
    Il faut utiliser la méthode Docmd.SetWarnings (Mettre à True ou False selon). Utilise F1 pour en savoir plus.
    Pour
    Aussi après avoir dit "oui" au message précédent, le formulaire reste visuellement avec les valeurs précédentes (pour le rendement et les calculs associés). Pour voir les résultats je dois cliquer dans les cases, ou bouger la page avec la barre de défilement. Cela me semble plutôt étrange, et également pas très pratique.
    Il faut rafraîchir ou actualiser l'affichage du formulaire. C'est la méthode Requery, Refresh ou Repaint selon . Un appui sur F1 est conseillé pour en savoir plus

    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

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Février 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 15
    Points : 18
    Points
    18
    Par défaut
    Merci cela fonctionne très bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Texte156_Click()
    Me.Texte156 = EstVide
    End Sub
     
    Private Sub Texte156_AfterUpdate()
    strSQl = "UPDATE T1_SCPI_Donnees SET T1_SCPI_Donnees.scpi_donnees_rendement_calc = """ & Me.Texte156 & """"
    DoCmd.RunSQL strSQl
    DoCmd.SetWarnings (WarningsOff)
    Requery
    End Sub
    J'ai encore le message à la première ouverture du fichier Access puis c'est fini. C'est mieux qu'avant ^^.

    Dans un autre registre, est il possible de gérer la taille du fichier Access?
    Lorsque vous m'aviez corrigé mon code votre fichier faisait un peu moins de 2 Mo. Et la même chose pour moi faisait 9.5 Mo O_o.
    J'en suis maintenant à 13Mo pourtant j'ai juste rajouté quelques requêtes et un peu de code pour la mise en forme, mais je ne pense pas avoir changé grand chose.
    Savez vous à quoi cela peut être dû ?

    Merci,
    Cordialement.

  6. #6
    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,

    Compacte ta base régulièrement.
    Normalement il existe une option qui permet de compacter la base lors de sa fermeture. Fais une recherche dans l'aide parce que s'est différente selon les versions d'Access.

    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

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/09/2014, 12h58
  2. meta refresh : valeur zone de texte
    Par dodo91 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 01/06/2009, 11h38
  3. Réponses: 25
    Dernier message: 10/12/2007, 19h28
  4. Réponses: 1
    Dernier message: 09/05/2007, 11h41
  5. Réponses: 7
    Dernier message: 23/06/2006, 14h52

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