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 :

Requête sur un Spreadsheet dans un Userform [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut Requête sur un Spreadsheet dans un Userform
    Bonsoir,

    j'essaye actuellement d'utiliser un contrôle Spreadsheet dans mon userform.

    J'arrive à remplir mon Spreadsheet avec les informations contenues dans ma base MySQL, en utilisant le Activesheet.CommandText et ConnectionString.

    Je cherche également à modifier les données pour ensuite mettre à jour la base, cela marche bien pour la première ligne mais pas pour les suivantes (alors que ça devrait être la même chose non ?)


    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ligne = 2
    Do Until ligne = 4
    Me.Spreadsheet1.ActiveSheet.CommandText = _
        "Insert Into table (Champ1, Champ2) Values('" & Spreadsheet1.ActiveSheet.Range("A" & ligne & "").Value & "','" & Spreadsheet1.ActiveSheet.Range("B" & ligne & "").Value & "')"
       MsgBox Me.Spreadsheet1.ActiveSheet.CommandText
       ligne = ligne + 1
    Loop
    Me.Spreadsheet1.ActiveSheet.ConnectionString = "dsn=testvba"
    Je mets le ConnectionString avant, car sinon il semble utiliser les informations contenues dans la base et non celles mises à jour dans le Spreadsheet.
    Que je le mette en dehors ou dans la boucle cela semble pareil (la deuxième commande d'Insert envoyée ne comporte que des champs vides)


    Au passage, je n'ai pas réussis à créer un Recordset des données contenues dans mon Spreadsheet, est ce possible ?
    Je n'arrive pas à faire de commande du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM [" & NomFeuille & "$]"

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut
    Bon j'ai plus ou moins réussis, j'arrive à lire les informations de mon Spreadsheet, et à les envoyer vers la base.

    Mais je ne sais toujours pas si je peux créer un "vrai" recordset des données de mon Spreadsheet.

    J'ai aussi un problème, lorsque mes valeurs contiennent un '. L'importation vers le Spreadsheet marche bien, mais l'insert dans la base de données bloque, je suis obligé d'agir ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim essai As String
    essai = " "" "
    Insert Into Base(Champ1, Champ2) Values('XXX',Trim(" & essai & "Technique d'information" & essai & "))"
    ça fait un peu usine à gaz mais ça marche, il y a surement plus simple, mais déjà j'ai contourné le problème ainsi.

    Et, en bidouillant je me suis posé la question.
    Si je garde le recordset importé dans le Spreadsheet, que je le laisse ouvert, et que chaque changement dans le Spreadsheet met à jour le recordset, que je renvoie ainsi modifié dans la base, cela est il possible ? Valable ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut
    Bon finalement mon "workaround" ne marche pas...

    Si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert Into Base(Champ1, Champ2) Values('XXX',Trim(" & essai & "Technique d'information" & essai & "))"
    ça marche

    Si maintenant j'essaye de transposer ça avec mes variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Insert Into Base(Champ1, Champ2) Values('" & Spreadsheet1.ActiveSheet.Range("A" & ligne & "").Value & "',Trim(" & essai & Spreadsheet1.ActiveSheet.Range("E" & ligne & "").Value & essai & ")"
    ça ne marche pas....
    Et pourtant dans mon Msgbox, je vois bien :

    ...Champ2 = Trim( " Essai d'apostrophe " ),...
    J'avoue avoir du mal à comprendre là, pourquoi ça marche "en dur" et pas avec mes variables.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 48
    Par défaut
    Bon, j'ai compris... parfois ça tient vraiment à peu de choses, et prendre du recul ça ne fait pas de mal.

    Donc en fait c'était simplement car il fallait que je fasse la même modification dans la partie Insert Into de mon code, alors que je ne l'avais faite que après le "On duplicate key update"...

    Et au passage j'ai mis Chr(34) autour des champs pouvant contenir des ', ça fait plus propre ainsi, et ça marche!

    Résolu, mais si jamais quelqu'un a une idée pour transformer un Spreadsheet d'un Userform en Recordset, je suis preneur, ça me permettrait peut être de farie quelque chose de plus propre (en modifiant les valeurs directement dans le recordset)

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

Discussions similaires

  1. Intercepter un click sur un Contrôle dans une UserForm
    Par RedColibri dans le forum VBA Word
    Réponses: 2
    Dernier message: 11/07/2008, 11h35
  2. Requête sur 2 tables dans 2 BDD différentes
    Par chciken92000 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 26/06/2008, 10h35
  3. Utiliser un "groupe" de labels sur clic souris dans un Userform
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/04/2008, 02h01
  4. Question sur le Multipage dans un userform
    Par unconnu dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/03/2008, 15h06
  5. Réponses: 3
    Dernier message: 25/09/2006, 20h35

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