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

Macros et VBA Excel Discussion :

Pouvoir modifier les données dans une base de données à partir d'un usf [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Pouvoir modifier les données dans une base de données à partir d'un usf
    Salut le forum

    Merci à rdurupt pour le code ci-dessous réalisé.
    Je reprend cette citation de rdurupt qui m'a beaucoup plu:
    Ce qui tue le temps, c'est le développement de routine
    Je suis à la recherche d'une solution qui me permettra de gérer les modifications des données dans ma base de données. Ma base de données est un classeur fermé et intitulé "VISA_CHEQUE".
    VISA_CHEQUE est alimenté à partir d'un autre Fichier (Fichier_Départ) comportant un usf.
    J'ai ajouté un textbox dans mon usf initial qui permet d'attribuer des références automatiquement (comme pour la génération automatique de numéro de facture).
    Dans un autre usf (toujours dans Fichier_Départ) j'ai une combobox1 et lorsque je choisis une référence et que je clic sur le bouton "afficher" les autres controls sont renseignés des données correspondant à la référence choisie (voir éléments de correspondance):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    TextBox12 = Rs("NUM_CLIENT")
    TextBox2 = Rs("REVENU")
    TextBox3 = Rs("CUMUL_ENGAGEMENT")
    TextBox4 = Rs("VISA_DEMANDE")
    TextBox5 = Rs("AUTORISATION")
    TextBox6 = Rs("SOLDE_AVANT_VISA")
    TextBox7 = Rs("SOLDE_APRES_VISA")
    TextBox21 = Rs("SITUATION_NETTE")
    TextBox8 = Rs("DELAI_DE_RECUPERATION")
    TextObjet = Rs("COMMENTAIRE_CC")
    TextBox10 = Rs("CODE_INITIATEUR")
    Je souhaite lorsque je modifie une donnée d'un control donné, à la validation, les données située sur la ligne de la référence choisie (valeur de la combobox1) devront être remplacées par les données issues des controls. Autrement dit, au lieu de coller les données à la suite d'un précédent collage, les données devront être collées sur la ligne à modifier dont le mot clé sera la référence.
    Le code ci-dessous permet de copier-coller vers le fichier contenant la feuille sur laquelle le collage devra se faire (valeur combobox1):
    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 Initiation_Click()
    If ValideFormulaire(Me) = False Then Exit Sub
    Dim strsQL As String
    Dim Rs
    Dim mytime
    mytime = Time
     
    OpenConnexion Fichier
    sql = "select * from  [" & Feuille1 & "] where ucase(trim(REFERENCE)) ='" & Trim(TextBox18.Value) & "';"
    'sql = Replace(Me.TextBox1, "'", "''")
    Set Rs = CreateObject("adodb.recordset")
    Rs.Open sql, Cnx
    If Rs.EOF = False Then
    MsgBox "Existe"
    Else
    strsQL = "insert into [" & Feuille1 & "] ([REFERENCE],[DATE_INITIATION],[NUM_CLIENT],[REVENU],[CUMUL_ENGAGEMENT],[VISA_DEMANDE],[AUTORISATION],[SOLDE_AVANT_VISA],[SOLDE_APRES_VISA],[SITUATION_NETTE],[DELAI_DE_RECUPERATION],[COMMENTAIRE_CC],[NIVEAU_URGENCE],[CODE_INITIATEUR],[HEURE_ENVOI],[CODE_VALIDEUR1],[CODE_VALIDEUR2]) "
            strsQL = strsQL & "Values ('" & Trim(TextBox18) & "','" & Trim(Date) & "','" & Trim(TextBox1.Value) & _
            "','" & Trim(TextBox2.Value) & "','" & Trim(TextBox7.Value) & "','" & _
            Trim(TextBox8.Value) & "','" & Trim(TextBox9.Value) & "','" & Trim(TextBox10.Value) & "','" & Trim(TextBox11.Value) & "','" & Trim(TextBox12.Value) & "','" & Trim(TextBox13.Value) & "', '" & TextObjet.Value & " ', '" & Label20.Caption & " ', '" & Trim(TextBox14.Value) & " ', '" & Trim(mytime) & " ', '" & Trim(TextBox15) & " ', '" & Trim(TextBox16) & "');"
    'sql = Replace(Me.TextObjet, "'", "''")
     
    Cnx.Execute strsQL
    End If
    Rs.Close
    Set Rs = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Unload Me
    End Sub
    Le code à réaliser sera affecter à un bouton de commande "MODIFIER".
    N.B :j'ai déjà le code qui permet d'afficher les données correspondant à la référence choisie.
    Merci pour vos éventuelles contributions

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    If ValideFormulaire(Me) = False Then Exit Sub
    Dim strsQL As String
    Dim Rs
    Dim mytime
    mytime = Time
     OpenConnexion Fichier
    sql = "select * from  [" & Feuille1 & "] where ucase(trim(REFERENCE)) ='" & Trim(TextBox18.Value) & "';"
    'sql = Replace(Me.TextBox1, "'", "''")
    Set Rs = CreateObject("adodb.recordset")
    Rs.Open sql, Cnx
    If Rs.EOF = False Then
    If Rs("REFERENCE") <> Me.Tag Then MsgBox "Vous ne pouvez pas modifier la REFERENCE car elle existe déjà!": Exit Sub
    strsQL = "Update [" & Feuille1 & "] set [REFERENCE]='" & Trim(TextBox18) & "',[DATE_INITIATION]'" & Trim(Date) & "'" 'continues pour tous les champs
    strsQL = strsQL & " where ucase(trim(REFERENCE)) ='" & UCase(Trim(me.tag)) & "';"
    Cnx.Execute strsQL
    End If
    Rs.Close
    Set Rs = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Unload Me
    Dernière modification par Invité ; 19/09/2014 à 14h29.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Salut rdurupt

    Merci pour le feedback sportif.
    J'étais en train de réaliser les tests tenant compte des ajouts que vous avez demandé.
    Voici le code final mais je rencontre un message d'erreur:
    Erreur de syntaxe dans l’instruction update
    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
    Private Sub Modifier_Click()
    If ValideFormulaire(Me) = False Then Exit Sub
    Dim strsQL As String
    Dim Rs
    Dim mytime
    mytime = Time
     OpenConnexion Fichier
    sql = "select * from  [" & Feuille2 & "] where ucase(trim(REFERENCE)) ='" & Trim(ComboBox1.Value) & "';"
    'sql = Replace(Me.TextBox1, "'", "''")
    Set Rs = CreateObject("adodb.recordset")
    Rs.Open sql, Cnx
    If Rs.EOF = False Then
    If Rs("REFERENCE") <> Me.Tag Then MsgBox "Vous ne pouvez pas modifier la REFERENCE car elle existe déjà!": Exit Sub
    strsQL = "Update [" & Feuille2 & "] set [REFERENCE]='" & Trim(ComboBox1) & "',[DATE_AVIS]'" & Trim(Date) & "',[NUM_CLIENT]'" & Trim(TextBox12) & "',[AVIS_DGAE_DR_DZ]'" & Trim(Label1) & "',[MONTANT_VISA]'" & Trim(TextBox4) & "'[COMMENTAIRE_DGAE_DR_DZ]'" & Trim(TextBox13) & "'[CODE_INITIATEUR]'" & Trim(TextBox10.Value) & "'[CODE_VALIDEUR]'" & Trim(TextBox9) 'continues pour tous les champs"
    strsQL = strsQL & " where ucase(trim(REFERENCE)) ='" & UCase(Trim(ComboBox1.Value)) & "';"
    Cnx.Execute strsQL
    End If
    Rs.Close
    Set Rs = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Unload Me
    End Sub
    J'avais omis de completer la partie du code précédent par ceci :Ci-dessous la partie du code ou j'ai pu détecter l'omission. La correction y a été apporter mais toujours le même message d'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strsQL = "Update [" & Feuille2 & "] set [REFERENCE]='" & Trim(ComboBox1.Value) & "',[DATE_AVIS]'" & Trim(Date) & "',[NUM_CLIENT]'" & Trim(TextBox12.Value) & "',[AVIS_DGAE_DR_DZ]'" & Trim(Label1) & "',[MONTANT_VISA]'" & Trim(TextBox4.Value) & "'[COMMENTAIRE_DGAE_DR_DZ]'" & Trim(TextBox13.Value) & "'[CODE_INITIATEUR]'" & Trim(TextBox10.Value) & "'[CODE_VALIDEUR]'" & Trim(TextBox9.Value) & "');"
    Merci de m'aider

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    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
    If ValideFormulaire(Me) = False Then Exit Sub
    Dim strsQL As String
    Dim Rs
    Dim mytime
    mytime = Time
     OpenConnexion Fichier
    Sql = "select * from  [" & Feuille1 & "] where ucase(trim(REFERENCE)) ='" & Trim(TextBox18.Value) & "';"
    'sql = Replace(Me.TextBox1, "'", "''")
    Set Rs = CreateObject("adodb.recordset")
    Rs.Open Sql, Cnx
    If Rs.EOF = False Then
    If Rs("REFERENCE") <> Me.Tag Then
    MsgBox "Vous ne pouvez pas modifier la REFERENCE car elle existe déjà!"
    Rs.Close
    Set Rs = Nothing
    Cnx.Close
    Set Cnx = Nothing
    Exit Sub
    End If
    Rs.Close
    Set Rs = Nothing
    strsQL = "Update [" & Feuille2 & "] set [REFERENCE]='" & Trim(ComboBox1.Value) & "', "
    strsQL = strsQL & "[DATE_AVIS]='" & Trim(Date) & "'[NUM_CLIENT]='" & Trim(TextBox12.Value) & "', "
    strsQL = strsQL & "[AVIS_DGAE_DR_DZ]='" & Trim(Label1) & "',[MONTANT_VISA]='" & Trim(TextBox4.Value) & "', "
    strsQL = strsQL & "[COMMENTAIRE_DGAE_DR_DZ]='" & Trim(TextBox13.Value) & "',[CODE_INITIATEUR]='" & Trim(TextBox10.Value) & "', "
    strsQL = strsQL & "[CODE_VALIDEUR]='" & Trim(TextBox9.Value) & "'"
    strsQL = strsQL & " where ucase(trim(REFERENCE)) ='" & UCase(Trim(Me.Tag)) & "';"
    Cnx.Execute strsQL
    Cnx.Close
    Set Cnx = Nothing
    Unload Me

  5. #5
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Bonjour rdurupt

    Merci pour la réponse.
    Mes tests ne sont pas concluant.
    Je rencontre l'erreur suivante:
    Erreur de syntaxe (opérateur absent) dans l’expression « ‘20/09/2014’ [NUM_CLIENT]=’04012560002’
    Je vous joins les 2 fichiers pour appréciation pendant que de mon côté je regarde aussi.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Tu pouvais deviner une virgule d'oubliée juste avant [NUM_CLIENT]

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/03/2012, 09h37
  2. inserer les données d'une base de données dans une autres?
    Par enstein8 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/10/2011, 13h33
  3. Réponses: 9
    Dernier message: 18/06/2010, 11h26
  4. Réponses: 4
    Dernier message: 29/11/2004, 16h51
  5. les images dans une base de données
    Par houhou dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/06/2004, 14h27

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