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 :

Requete INSERT INTO / UPDATE en VBA [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut Requete INSERT INTO / UPDATE en VBA
    Bonjour,

    J'ai créé une connection ODBC et j'ai reussi a créée une macro contenant une requete d'exportation.

    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
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array(Array( _
            "ODBC;DSN=dataP;DBQ=K:\********\Base de données.xlsx;DefaultDir=K:\*******" _
            ), Array( _
            "RAA\Fichiers;DriverId=1046;FIL=excel 12.0;MaxBufferSize=2048;PageTimeout=5;")) _
            , Destination:=Range("$A$1")).QueryTable
            .CommandText = Array("SELECT DISTINCT `_xlnm#_FilterDatabase`.Désignation,`_xlnm#_FilterDatabase`.Nom,  `_xlnm#_FilterDatabase`.ville" & Chr(13) & "" & Chr(10) & "FROM `_xlnm#_FilterDatabase` `_xlnm#_FilterDatabase`" & Chr(13) & "" & Chr(10) & "WHERE (`_xlnm#_FilterDatabase`.No", "m='JEAN')" & Chr(13) & "" & Chr(10) & "ORDER BY `_xlnm#_FilterDatabase`.Désignation")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = "Tableau_Lancer_la_requête_à_partir_de_dataP6"
            .Refresh BackgroundQuery:=False
        End With

    Est il possible de créer des requete de type INSERT ou UPdate toujours via des macro excel merci.

    Cordialement

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, à consulter même s'il s'agit d'ADODB : Lire et écrire dans les classeurs Excel fermés
    sinon pour le Recordset ADO

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Rebonjour,
    Donc dans un premier tempsje dois convertir ma base de données excel fichier *.xlsx en fichier *.mdb.
    Apres je dois refondre les différentes requete select, update, insert ...

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Re, non pas forcément, voir dans le 1er lien , tous les exemples sont à adapter pour 2007.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Un grand merci le premier ne s'ouvrai pas correctement le nouveau fonctionne tres bien, j'ai beaucoup de lecture pour appliquer cela mais au final c a peu pres ce que je souhaiter, la fonction recherchev sous excel ou les boucle en VBA c'est tres bien mais cela a ses limites sur une base de donnée a plusieurs colones et beaucoup de lignes.
    Un grand MERCI.

    Je vais peut etre abuser un peu mais est il possible de charger un combobox en macro excel via un select distinct (je sais le faire en VBnet mais pas en VBA classique).Merci encore pour le lien.

  6. #6
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, pour le lien c'est corrigé, à priori je dirais oui pour la ComboBox, voir ici, l'ayant fait jadis en VB6.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Bon j'ai commencé par le début et en fait la ligne
    bloque et me met : type défini par l'utilisateur non défini.

    Il me manque un driver ou une option complémentaire ???

    Bon j'ai résolu la chose, mais j'ai eu une autre erreur qui m'a forcé à changer le format de ma base de données et passer du format *.xlsx au format *.xls.
    C'est pas que cela me dérange obligatoirement mais le résultat, c'est que ma base a triplé de volume avec la conversion ...

  8. #8
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, pour l'erreur c'est une référence à cocher, il faut développer en Early Binding et déployer en Late Binding, surtout en environnement hétérogène, voir Early ou Late Binding
    Tu n'as pas vu ceci 2007 pour la connection ?
    Pour le triplement ou autre du volume c'est normal les fichiers XLS* sont en fait des fichiers zippés : à preuve sur une copie d'un fichier XLSX, XLSB, XLSM remplace cette extension par ZIP , dézippe ce fichier et tu verras l'aspect de ton fichier Excel et sa taille.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Un gros LOL en effet j'ai dezippé mon fichier qui a la base fait 273Ko il est devenu 1.3 Mo ... un gros lol de la part de MS en fait ça prend moins de place mais demande plus de mémoire au final.

    Sinon n'y a-t-il pas moyen de passer la macro direct en *.xlsx ou je vais devoir travailler en *.xls

    Merci pour les infos en tout cas.

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut,
    Tu n'as pas vu ceci 2007 pour la connection ?
    PS : évite le gabuzomeu style sms

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Bonjour,
    C'est j'ai reussi je peu exporter les données et les afficher il va falloir que je regarde les modifications et les nouveaux enregistrements.
    Cependant est il possible d'afficher le resultats de la requete directement dans un controle listview sur un userform.

    Merci des différents renseignements.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    consultant BTP
    Inscrit en
    Février 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant BTP
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2012
    Messages : 51
    Points : 28
    Points
    28
    Par défaut
    Bonjour,
    J'ai toujours quelques probleme et je n'arrive pas a charger directement un controle listview par ma requete, je suis obliger de passer par une feuille excel ce qui ralenti considerablement mon programme.

    PS : il est vrai que mon écriture gabuzomeu laisse à desirer ... vive les shadocks

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

Discussions similaires

  1. [AC-2007] Problème syntaxe requete INSERT INTO VBA
    Par afrogwada dans le forum VBA Access
    Réponses: 2
    Dernier message: 25/07/2013, 09h44
  2. [AC-2007] Problème de requete INSERT INTO en VBA
    Par Azomix dans le forum VBA Access
    Réponses: 4
    Dernier message: 02/02/2012, 16h57
  3. Requete INSERT INTO
    Par cheers94wow dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/05/2006, 11h13
  4. petite aide sur une requete INSERT INTO
    Par bonneti dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/03/2005, 15h17
  5. Erreur lors d'une requete insert into.. select
    Par Mr N. dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 04/11/2004, 17h32

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