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

VBA Access Discussion :

table liée à fichier excel [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Points
    89
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Par défaut table liée à fichier excel
    bonjour,
    y-a-t'il un moyen d'adapter le code ci-dessous pour lier une table à un onglet d'un fichier excel qui se trouve dans ?

    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
    Sub lier()
    Dim strMotPasse As String
    Dim strCheminBd As String
    Dim strNomTable As String
    Dim strConnect As String
    Dim oDb As DAO.Database
    Dim oTbl As DAO.TableDef
    'Définit mot passe, nom table, chemin base de données
    strMotPasse = "pass"
    strCheminBd = "c:\test.mdb"
    strNomTable = "Table1"
    'Instancie l'objet Database
    Set oDb = CurrentDb
    'Définit la chaine de connexion permettant la liaison
    strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=C:\test.mdb"
    'Crée la nouvelle table
    Set oTbl = oDb.CreateTableDef(strNomTable)
    With oTbl
        .Connect = strConnect
        .SourceTableName = strNomTable
    End With
    'Ajoute la table à la base de données
    oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh
    End Sub
    merci
    bonne soirée

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 108
    Points
    24 779
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 108
    Points : 24 779
    Par défaut
    Bonjour,
    Il te faut changer le contenu de la variable strConnect.

    Voici un petit exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Excel 8.0;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=C:\chemin\fichier.xls
    HDR c'est la ligne d'entête.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Points
    89
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Par défaut
    merci pour cette piste

    A quoi correspondent ces 2 variables ?

    peut-on gérer le choix d'un onglet du fichier par le nom de cet onglet ?

    merci par avance

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Points
    7 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Par défaut
    Bonsoir,

    La syntaxe pour le nom de la table source est : NomOnglet$PlageCellules
    PlageCellules est facultatif.
    Si on l'omet, on met juste le nom de l'onglet suivi de $

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        .SourceTableName = "Nom de l'onglet" & "$"
    A+

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Points
    89
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Par défaut
    merci pour votre et voici ma procédure adaptée pour ceux qui serait peut-être à un moment donné confronté au problème de recréer la liaison à des onglets de fichier excel:


    Tbl_liees retraçant toutes les tables liées de votre base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Tbl_liees ( Name, ForeignName, [Database] )
    SELECT DISTINCT MSysObjects.Name, MSysObjects.ForeignName, MSysObjects.Database
    FROM MSysObjects
    WHERE (((MSysObjects.Name) Not Like "~TMPCLP*") AND ((MSysObjects.Type)=6));
    Tbl_liees_SDL ne récupérant que les tables qui nous intéressent dans ce cas précis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO Tbl_liees_SDL ( Name, ForeignName, [Database] )
    SELECT DISTINCT Tbl_liees.Name, Tbl_liees.ForeignName, Tbl_liees.Database
    FROM Tbl_liees
    WHERE (((Tbl_liees.Database) Like "*SDL*"));
    ici est important pour la sélection future de l'onglet désiré dans le fichier excel


    Le Code permettant de recréer la liaison si le fichier change d'emplacement sur votre réseau ou disuqe local
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    Private Sub Commande37_Click()
    Dim strMotPasse As String
    Dim strCheminBd As String
    Dim strNomTable As String
    Dim strConnect As String
    Dim oDb As DAO.Database
    Dim oTbl As DAO.TableDef
    Dim oRs As DAO.Recordset
    Dim Sql As String
     
    DoCmd.SetWarnings False
     
     
    Sql = "delete from Tbl_liees_SDL"
    DoCmd.RunSQL Sql
     
    DoCmd.OpenQuery "Ajout_Tbl_liees_SDL", acNormal, acEdit
     
    'Définit  nom table, chemin fichier excel, nom onglet
     
    strCheminBd = Me.Texte38
     
    'Instance l'objet Database
    Set oDb = CurrentDb
    Set oRs = oDb.OpenRecordset("Tbl_liees_SDL")
     
    Do While Not oRs.EOF()
    strNomTable = oRs![Name]
    Delete_Table (strNomTable)
     
    strConnect = "Excel 8.0;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=" & strCheminBd
     
    Set oTbl = oDb.CreateTableDef(strNomTable)
    With oTbl
        .Connect = strConnect
        .SourceTableName = oRs![ForeignName]
    End With
    oDb.TableDefs.Append oTbl: oDb.TableDefs.Refresh
    oRs.MoveNext
    Loop
     
    oRs.Close
    oDb.Close
    Set oRs = Nothing
    Set oDb = Nothing
     
    Me.Texte42 = "Toutes les tables liées SDL - Validations par jours ont été rattachées à la nouvelle base"
     
    DoCmd.SetWarnings True
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strCheminBd = Me.Texte38
    Me.Texte38 récupère le chemin du nouveau fichier grace à la fonction OuvrirUnFichier
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    Option Compare Database
     
     
      'Déclaration de l'API
    Private Declare Sub PathStripPath Lib "shlwapi.dll" Alias "PathStripPathA" (ByVal pszPath As String)
    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
                       "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
     
     'Structure du fichier
    Private Type OPENFILENAME
        lStructSize As Long
        hWndOwner As Long
        hInstance As Long
        lpstrFilter As String
        lpstrCustomFilter As String
        nMaxCustFilter As Long
        nFilterIndex As Long
        lpstrFile As String
        nMaxFile As Long
        lpstrFileTitle As String
        nMaxFileTitle As Long
        lpstrInitialDir As String
        lpstrTitle As String
        flags As Long
        nFileOffset As Integer
        nFileExtension As Integer
        lpstrDefExt As String
        lCustData As Long
        lpfnHook As Long
        lpTemplateName As String
    End Type
     
     'Constantes
    Private Const OFN_READONLY = &H1
    Private Const OFN_OVERWRITEPROMPT = &H2
    Private Const OFN_HIDEREADONLY = &H4
    Private Const OFN_NOCHANGEDIR = &H8
    Private Const OFN_SHOWHELP = &H10
    Private Const OFN_ENABLEHOOK = &H20
    Private Const OFN_ENABLETEMPLATE = &H40
    Private Const OFN_ENABLETEMPLATEHANDLE = &H80
    Private Const OFN_NOVALIDATE = &H100
    Private Const OFN_ALLOWMULTISELECT = &H200
    Private Const OFN_EXTENSIONDIFFERENT = &H400
    Private Const OFN_PATHMUSTEXIST = &H800
    Private Const OFN_FILEMUSTEXIST = &H1000
    Private Const OFN_CREATEPROMPT = &H2000
    Private Const OFN_SHAREAWARE = &H4000
    Private Const OFN_NOREADONLYRETURN = &H8000
    Private Const OFN_NOTESTFILECREATE = &H10000
    Private Const OFN_SHAREFALLTHROUGH = 2
    Private Const OFN_SHARENOWARN = 1
    Private Const OFN_SHAREWARN = 0
     
     
    Public Function OuvrirUnFichier(Handle As Long, _
                                    Titre As String, _
                                    TypeRetour As Byte, _
                                    NomFichiers As String, _
                                    Optional TitreFiltre As String, _
                                    Optional TypeFichier As String, _
                                    Optional RepParDefaut As String) As String
     'OuvrirUnFichier est la fonction a utiliser dans votre formulaire pour ouvrir _
     'la boîte de dialogue de sélection d'un fichier.
     'Explication des paramètres
        'Handle = le handle de la fenêtre (Me.Hwnd)
        Titre = "choix du fichier à traiter..."
        'TypeRetour = 1
        '(Définit la valeur, de type String, renvoyée par la fonction)
            '1 = Chemin complet + Nom du fichier
            '2 = Nom fichier seulement
        'TitreFiltre = Titre du filtre
            'Exemple: Fichier Access
            'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
        'TypeFichier = XLS
            'Exemple: MDB
            'N'utilisez pas cet argument si vous ne voulez spécifier aucun filtre
        RepParDefaut = "D:\DATA\_DATA\"
            'Exemple: C:\windows\system32
            'Si vous laissé l'argument vide, par defaut il se place dans le répertoire de votre application
     
    Dim StructFile As OPENFILENAME
    Dim sFiltre As String
     
     'Construction du filtre en fonction des arguments spécifiés
    If Len(TitreFiltre) > 0 And Len(TypeFichier) > 0 Then
      sFiltre = TitreFiltre & " (" & TypeFichier & ")" & Chr$(0) & "*." & TypeFichier & Chr$(0)
    End If
    sFiltre = sFiltre & "Tous (*.*)" & Chr$(0) & "*.*" & Chr$(0)
     
     
     'Configuration de la boîte de dialogue
      With StructFile
        .lStructSize = Len(StructFile) 'Initialisation de la grosseur de la structure
        .hWndOwner = Handle 'Identification du handle de la fenêtre
        .lpstrFilter = sFiltre 'Application du filtre
        .lpstrFile = String$(254, vbNullChar) 'Initialisation du fichier '0' x 254
        .nMaxFile = 254 'Taille maximale du fichier
        .lpstrFileTitle = String$(254, vbNullChar) 'Initialisation du nom du fichier '0' x 254
        .nMaxFileTitle = 254  'Taille maximale du nom du fichier
        .lpstrTitle = Titre 'Titre de la boîte de dialogue
        .flags = OFN_HIDEREADONLY  'Option de la boite de dialogue
        If ((IsNull(RepParDefaut)) Or (RepParDefaut = "")) Then
            RepParDefaut = CurrentDb.Name
            PathStripPath (RepParDefaut)
            .lpstrInitialDir = Left(CurrentDb.Name, Len(CurrentDb.Name) - Len(Mid$(RepParDefaut, 1, _
    InStr(1, RepParDefaut, vbNullChar) - 1)))
            Else: .lpstrInitialDir = RepParDefaut
        End If
      End With
     
    If (GetOpenFileName(StructFile)) Then 'Si un fichier est sélectionné
        Select Case TypeRetour
          Case 1: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFile, InStr(1, StructFile.lpstrFile, vbNullChar) - 1))
          Case 2: OuvrirUnFichier = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
        End Select
     
      End If
    ' NomFichiers = Trim$(Left(StructFile.lpstrFileTitle, InStr(1, StructFile.lpstrFileTitle, vbNullChar) - 1))
    End Function
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function FichierInfos(pStr_NomFichier As String) As Variant
    Dim iStr_Infos()              As String
        WizHook.Key = 51488399
        ReDim iStr_Infos(3)
        WizHook.SplitPath pStr_NomFichier, iStr_Infos(0), iStr_Infos(1), iStr_Infos(2), iStr_Infos(3)
        FichierInfos = iStr_Infos
    End Function
    que l'on appelle grace à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande40_Click()
    Dim iStr_Info() As String
    Me.Texte38 = ""
    Me.Texte42 = ""
     
        Me.Texte38 = OuvrirUnFichier(Me.hwnd, "Parcourir", 1, "Fichier Excel", "xls")
        iStr_Info = FichierInfos(Me.Texte38)
    End Sub
    si cela peut aider et cela a été clair tant mieux

    bonne journée

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

Discussions similaires

  1. [AC-2002] table liée fichier Excel multi-utilisateur
    Par VTLE34 dans le forum Modélisation
    Réponses: 8
    Dernier message: 23/07/2012, 15h02
  2. [A-02] tables liées à fichier excell
    Par grabuge41 dans le forum IHM
    Réponses: 1
    Dernier message: 08/03/2009, 05h45
  3. Exportation table en fichier excel
    Par keks42 dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/12/2008, 23h05
  4. [DDE]Problème de table liée à fichier Excel
    Par modus57 dans le forum VBA Access
    Réponses: 2
    Dernier message: 13/04/2007, 18h55
  5. DTS : update table via fichier excel
    Par jbrasselet dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/07/2006, 10h38

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