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 :

VBA : modification d'une entrée dans une table


Sujet :

Access

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Points : 19
    Points
    19
    Par défaut VBA : modification d'une entrée dans une table
    Bonjour a tous !

    Je viens de finir un formulaire avec une requète SQL en VBA mais je me retrouve devant un petit problème, il faudrait que je puisse modifier mes entrée. Dans mon formulaire, je peux choisir (en mode modification) l'entrée a modifier. Par contre ma requète, en s'éxécutant me recrée une nouvelle entrée dans ma table, comment lui dire de modifier l'entrée selectionnée ?

    J'ai déja créé un if pour faire la dictinction entre modifier et creer, mais comment lui dire de modifier l'entrée selectionnée ?

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Private Sub Modifier_Click()
    On Error GoTo Err_Modifier_Click
    Dim TypeDechet, Instruction, CategDech, Précision, codeONU, CAP, Designa, CondEnl, Etiquetage, Code, Design
      
    'Récupère les valeurs de chaque colonne des listes
    
    
    TypeDechetf = Me.TypeDechet.Value
    Instructionf = Me.Instructions.Value
    CategDechf = Me.CategDech.Value
    Précisionf = Me.Précision.Value
    codeONUf = Me.codeONU.Value
    CAPf = Me.CAP.Value
    Designaf = Me.Designa.Value
    CondEnlf = Me.CondEnl.Value
    Etiquetagef = Me.Etiquetage.Value
    
    ' Récuperation valeur table code nomenclature
    Code = Me.SelectionCDR1.Column(0)
    Design = Me.SelectionCDR1.Column(1)
    
    'MsgBox (Code)
    'MsgBox (Design)
    'MsgBox (Etiquetagef)
    
    
    ' Insère ces valeurs dans la table
    StrSQL1 = "INSERT INTO TDechets ( TypeDechet, Instruction, CategDech, Précision, codeONU, CAP, Designa, CondEnl, Etiquetage, codeNom, DesigNom)"
    StrSQL2 = "SELECT '" & TypeDechetf & "','" & Instructionf & "','" & CategDechf & "','" & Précisionf & "','" & codeONUf & "','" & CAPf & "','" & Designaf & "','" & CondEnlf & "','" & Etiquetagef & "','" & Code & "','" & Design & "'"
    
    'Exécute les requêtes
    DoCmd.SetWarnings (False): DoCmd.RunSQL ((StrSQL1 + StrSQL2)): DoCmd.SetWarnings (True)
    
    
     'retour formulaire menu
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acModifierRecord, , acMenuVer70
    DoCmd.Close
    DoCmd.OpenForm "FDechets"
    
    Exit_Modifier_Click:
        Exit Sub
    
    Err_Modifier_Click:
    MsgBox Err.Description
        Resume Exit_Modifier_Click
    
    End Sub
    Si vous avez une idée je suis preneur !!

    Merci d'avance.

    Thib

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 16
    Points : 17
    Points
    17
    Par défaut
    tu mets ta valeur saisie dans une variable, que tu fais prendre ne compte par ta requete, pour la modif.
    Update nomtable
    values (liste des valeurs à prendre)
    where condition (pour choisir ton enregistrement)

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Tu peux aussi faire un form directement lié à ta source de donnée et te sauver de tout ce code. Access fait tout le travail pour toi.

    A+

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    Merci pour vos réponse !

    marot_r le seul problème c'est que mon formulaire me sert d'une part a la création et d'autre part a la modification de ma table, je me sert du VBA pour ça donc je dois continuer en VBA

    courtial Je vais essayer avec cette methode.

    Si ça marche je poste mon code, si ça marche pas, je continuerai a chercher !

    Merci a vous en tout cas !

    ++
    Thib

  5. #5
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    Re bonjour a tous !

    J'ai réussi a faire le distingo entre modif et mise a jour, pour les modif no soucis par contre j'ai du mal a faire mon Update table !!

    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
        'récupération de la clef primaire pour modifier les champs de la table, elle est issue d'un menu déroulant qui m'affiche toutes mes valeurs dans mon formulaire
        modif = Me.SelectionDechet.Value
        'Récupère les valeurs de chaque champ
        TypeDechetf = Me.TypeDechet.Value
        Instructionf = Me.Instructions.Value
        CategDechf = Me.CategDech.Value
        Précisionf = Me.Précision.Value
        codeONUf = Me.codeONU.Value
        CAPf = Me.CAP.Value
        Designaf = Me.Designa.Value
        CondEnlf = Me.CondEnl.Value
        Etiquetagef = Me.Etiquetage.Value
    
        ' Récuperation valeur table code nomenclature a inserrer dans la table TDechets    
        Code = Me.SelectionCDR1.Column(0)
        Design = Me.SelectionCDR1.Column(1)
    
        'MsgBox (Code)
        'MsgBox (Design)
        'MsgBox (Etiquetagef)
    
    
        ' Insère ces valeurs dans la table
        StrSQL1 = "UPDATE TDechets VALUE( TypeDechet, Instruction, CategDech, Précision, codeONU, CAP, Designa, CondEnl, Etiquetage, codeNom, DesigNom)WHERE TypeDechet.TDechets=modif"
        StrSQL2 = "SELECT '" & TypeDechetf & "','" & Instructionf & "','" & CategDechf & "','" & Précisionf & "','" & codeONUf & "','" & CAPf & "','" & Designaf & "','" & CondEnlf & "','" & Etiquetagef & "','" & Code & "','" & Design & "'"
        
        'Exécute les requêtes
        DoCmd.SetWarnings (False): DoCmd.RunSQL ((StrSQL1 + StrSQL2)): DoCmd.SetWarnings (True)
    Je pense que c'est du a mon manque de connaissance en syntaxe, je n'ai pas trouver d'autre exemples sur le forum avec cette écriture. Quelqu'un voit ou j'ai fait une erreur ?

    Merci d'avance a tous
    ++
    Thib

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 50
    Points : 19
    Points
    19
    Par défaut
    D'après ce que j'ai trouver sur le net je suis arrivé a cette requète :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    StrSQL1 = "UPDATE TDechets SET (TypeDechetf , Instructionf, CategDechf, Précisionf, codeONUf, CAPf, Designaf, CondEnlf, Etiquetagef, Code, Design) WHERE TypeDechet.TDechets = modif"
     
    DoCmd.SetWarnings (False): DoCmd.RunSQL (StrSQL1): DoCmd.SetWarnings (True)
    Le problème c'est qu'il m'affiche un message d'erreur de syntaxe, mais il me met a jours tout mes champs sauf les deux dernier "Code" et "Design" qui sont issus d'une autre table (mais il apparaissent dans mon formulaire et je récupère très bien leurs valeur juste avant la requète)...

    Il y a quelque chose qui m'échape vraiment !!!




    _

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 368
    Points : 23 840
    Points
    23 840
    Par défaut
    Citation Envoyé par Thibaut_Dupont
    Merci pour vos réponse !

    marot_r le seul problème c'est que mon formulaire me sert d'une part a la création et d'autre part a la modification de ma table, je me sert du VBA pour ça donc je dois continuer en VBA
    Dans un form Access tu te positionne toi sur un nouvel enr et voilà tu viens de créer ton enr.

    Temps de dev : le temps de dropper les champs dans ton form.

    Mais moi aussi j'aime bien le VBA :-). J'aime juste pas refaire ce que Access fait ne natif.

    Bon courrage.

    A+

Discussions similaires

  1. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 18h37
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 20h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2007, 00h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 11h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 14h48

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