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 :

Modifier données dans fichier excel fermé: utilisation de SQL dans VBA Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut Modifier données dans fichier excel fermé: utilisation de SQL dans VBA Excel
    Bonjour,

    J'ai un soucis,
    Je souhaite pouvoir modifier des données dans ma base "excel"(version 2000 grâce à la macro suivante:

    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
    Sub modifEnregistrement(SqlStr As String, ParamArray PrmLst() As Variant)
    Dim Conn As Connection, Rst As New ADODB.Recordset
    Dim B As Integer, A As Integer, rg As Range, Fichier As String
     
    Fichier = "" & ThisWorkbook.Path & "\Base\Base.xls"
     
    Set Conn = New ADODB.Connection
    Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & Fichier & ";" & _
    "Extended Properties=""Excel 8.0;HDR=No;"""
     
    'Fusion entre la chaîne et les paramètres
    x = SqlStr
    For i = 0 To UBound(PrmLst)
        x = Replace(x, "%" & (i + 1) & "%", "" & PrmLst(i))
    Next i
     
    Rst.Open x, Conn, _
    adOpenKeyset, adLockOptimistic
     
    Rst.Update
    Rst.Close: Conn.Close
    Set Rst = Nothing
    Set Conn = Nothing
     
    End Sub
    mais quand je fais un test avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    modifEnregistrement "DELETE FROM [SALARIE$] WHERE id_salarie=%1%", 1
    ça ne fonctionne pas.

    J'obtiens le message d'erreur suivant: "erreur d'éxécution -2147217904(80040e10) Aucune valeur donnée pour un ou plusieurs des paramètres requis"

    Je ne comprends pas.

    Pouvez-vous m'aider??
    Merci d'avance.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Il ma semble qu'il manque quelque chose dans ta ligne mais le mieux est que tu regarde ici où SikyRoad explique comment travailler sur un fichier fermé

  3. #3
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    16
    Détails du profil
    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2005
    Messages : 16
    Par défaut
    La fonction s'appelle miseajourEnregistrement() mais tu testes avec une requête DELETE, est-ce normal ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Dans un premier temps essayes avec le * au lieu du % comme joker.

    De plus

    Dans le tuto de Silkyroad au chapitre II. Les limites d'Excel utilisé comme une base de données il est stipulé :
    Il n'est pas possible de supprimer les lignes complètes (enregistrements) dans un classeur fermé.
    vous obtiendrez un message d'erreur "La suppression des données dans un table attachée n'est pas géré par le pilote ISAM".
    Vous pouvez uniquement effacer le contenu des cellules.
    Starec

  5. #5
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 17
    Par défaut
    J'ai effectivement modifié mon code grâce à vos remarques. Cependant, je n'arrive pas toujours à modifier mes informations.Sur le tutoriel de silkyroad, il écrit une macro pour modifier les enregistrements qu'il nomme "miseAJour_Enregistrement" mais lorsque je teste, la macro en question ajoute les informations mais ne les modifie pas. Je souhaite vraiment faire de la modification d'information et non de l'ajout.
    Je n'arrive pas à débloquer ma situation...
    Help

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonsoir

    Sur le tutoriel de silkyroad, il écrit une macro pour modifier les enregistrements qu'il nomme "miseAJour_Enregistrement" mais lorsque je teste, la macro en question ajoute les informations mais ne les modifie pas. Je souhaite vraiment faire de la modification d'information et non de l'ajout.
    je viens de retester la procédure et je n'ai pas constaté cette anomalie.
    Tu as essayé exactement la même procédure ?


    bonne soirée
    michel

Discussions similaires

  1. utilisation symbole < et > dans fichier XML
    Par mimilemoose dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 14/08/2009, 10h05
  2. utiliser symbole < et > dans fichier XML
    Par mimilemoose dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 07/08/2009, 16h37
  3. Réponses: 1
    Dernier message: 26/09/2006, 12h55
  4. [VBA Excel] Copie d'une feuille dans un autre fichier
    Par nattyman dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/08/2006, 11h35
  5. Donnee excel pour requete sql dans fichier txt ou doc
    Par Yogi_01 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 13/04/2006, 11h04

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