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 :

ouvrir un classeur excel via un code sql


Sujet :

Access

Vue hybride

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 39
    Par défaut ouvrir un classeur excel via un code sql
    Bonjour a tous

    voila je voudrais savoir s il etait possible d ecrire un code sql me permettant
    - d ouvrir un classeur excel
    - de modifier le contenu de la cellule A65000 de la feuille(4) (genre mettre "a")
    - de refermer ce meme classeur

    Au fait g ecrit une macro sur ce classeur qui se declenche des qu une cellule de la feuille(4) est modifiée.
    j exporte a partir de ma base de donnée une requete vers ce classeur, mais cette exportation ne declenche pas ma macro (le classeur excel etant fermé pour permettre l exportation). j essaie de trouver un moyen de la declencher sans ouvrir ce classeur...

    merci beaucoup

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Va voir le Tuto de SylkiRoad sur les classeurs fermés, il parle de connection avec un classeur par ADO, si cela peut t'aider

    Starec

  3. #3
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    DAO sait très bien le faire aussi :
    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
    Sub DAOUpdateExcelFile(ByVal strFullPath As String, _
                           ByVal strTab As String, _
                           ByVal RowIndex As Long, _
                           ByVal ColumnIndex As Long, _
                           ByVal setValue As Variant)
     
        ' Ajoutez la référence DAO
        Dim db As DAO.Database
        Dim rec As DAO.Recordset
     
        ' on ouvre le fichier excel en tant que base de données DAO
        Set db = OpenDatabase(strFullPath, False, False, "Excel 8.0;")
        DoEvents
        ' on ouvre un recordset sur un onglet comme on le ferait
        '   sur une table Access
        ' En DAO, les tables sont les onglets avec un $ final
        Set rec = db.OpenRecordset(strTab & "$", DAO.dbOpenDynaset)
     
        ' on se déplace sur l'enregistrement souhaité
        rec.Move RowIndex - 1
        ' on édite l'enregistrement
        rec.Edit
            rec.Fields(ColumnIndex - 1).Value = setValue
        rec.Update
        ' on sauvegarde
     
        ' fermez les objets
        rec.Close
        db.Close
     
        ' libérez les objets !
        Set db = Nothing
        Set rec = Nothing
     
    End Sub
    Un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    daoupdateexcelfile "c:\temp\db.xls","Feuil1",12,5,999
    Permet de passer la valeur de la cellule E12 de l'onglet "Feuil1" à 999

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Tiens j'ai remarqué que ça ne marchait pas s'il y a une formule dans la cellule ...

  5. #5
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    Tu dois utiliser les object WorkBooks (classeur) WorkSheets (Feuille) et Cells(Cellule).

    Ca resemble à ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim MonApp As Object
    Dim MonClasseur As WorlBook
    Dim MaFeuille As WorkSheets
     
        Set MonApp = CreateObject("Excel.Application")
        oApp.Visible = True
     
        Set MonClasseur=MonApp.WorkBooks("Ton Fichier").OpenDocument
        Set MaFeuille=MonClasseur.WorkSheets("Ta Feuille").Selected
    Utilise F1 pour corriger et compléter le code

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut DMBoup

    Je me permets quelques corrections de ton code, car approximatif (sûrement donné à la hâte...). Ne le prends pas mal, c'est pour la bonne cause...

    Tu donnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim MonApp As Object
    Dim MonClasseur As WorlBook
    Dim MaFeuille As WorkSheets
    Cela devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim MonApp As Object
    Dim MonClasseur As WorkBook
    Dim MaFeuille As WorkSheet
    Avec WorkBook et sans s à Worksheet

    Puis tu donnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set MonClasseur=MonApp.WorkBooks("Ton Fichier").OpenDocument
    Set MaFeuille=MonClasseur.WorkSheets("Ta Feuille").Selected
    Cela devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set MonClasseur = Workbooks.Open("MonFichier")
    Set MaFeuille = MonClasseur.Worksheets("MaFeuille")
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Localisation : Sénégal

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 229
    Par défaut
    C'est certainement mieux. J'ai saisi à la volet comme ca.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Excuse-moi DMboup, mais là c'est de l'automation, hors chamus demande du SQL, et ce n'est qu'avec DAO comme l'écrit Caféine ou ADO que l'on peut faire du SQL

    Starec

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/10/2012, 15h02
  2. Réponses: 2
    Dernier message: 11/06/2008, 14h38
  3. ouvrir un classeur excel à partir d'un nom variable
    Par abu143 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/10/2006, 21h53
  4. [vba-excel] ouvrir des classeurs excel
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/10/2006, 15h28
  5. [vb6]ouvrir un classeur excel
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 28/09/2006, 10h33

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