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 :

Importer un champ d'une table Access [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 512
    Par défaut Importer un champ d'une table Access
    Bonjour a tous,

    J'ai adapté le code suivant pour récupérer la table complete d'un fichier access, mais je ne voudrais pas importer la totalité de la table, mais juste le premier champ qu eje voudrais mettre dans un Combobox d'un Userform.

    Déjà avec le code d'import d'une table access je suis largué donc du coup je suis bloqué pour avancer sur le reste.

    Donc si quelqu'un veux bien me donner un coup de pouce, merci d'avance.

    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
     
    Sub ImportTableAccess()
    Dim Cn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    Dim Fld As ADODB.Field
    Dim Fichier As String
    Dim x As Integer
    Fichier = "C:\V10\AM Création\DB\mmatv10.mdb"
    Set Cn = New ADODB.Connection
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & _
    Fichier & ";"
    Set Rs = New ADODB.Recordset
    With Rs
    .ActiveConnection = Cn
    .Open "SELECT * FROM Materials", , adOpenStatic, adLockOptimistic, adCmdText
    End With
    ActiveSheet.Range("A2").CopyFromRecordset Rs
    Rs.Close
    Set Rs = Nothing
    Cn.Close
    Set Cn = Nothing
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    "SELECT NomDeTonChamps FROM Materials"

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Dans ton UserForm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & "C:\V10\AM Création\DB\mmatv10.mdb" & ";"
        Me.ComboBox1.List = Application.Transpose(.excute("Select distinct [champ1] from [Table] order by [Champ1]").GetRows)
        .Close
    End With
    End Sub

  4. #4
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 512
    Par défaut
    Merci a vous deux

    mercatog j'ai modifié mon code avec le code que tu m'as donné et ça fonctionne parfaitement je n'ai que le premier champ, par contre je galère un peu pour le récupérer dans ma combobox.

    dysorthographie j'ai essayé de tester ton code qui m'intéresse bien mais je n'ai pas réussi a afficher le contenu du champ dans la combobox.
    Voici le code utilisé:

    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
    Private Sub UserForm_Initialize()
        On Error Resume Next
        'affichage de la premiere ligne de le combo Reference
        Reference.Value = ""
        Reference.ListIndex = 0
        'Remplissage de la combo sensfil
        With SensFil
            .AddItem ("L")
            .AddItem ("T")
            .AddItem ("S")
        End With
     
        If Cells(2, 2).Interior.ColorIndex = 6 Then
              Select Case RecherchSensFil
                Case ""
                SensFil.ListIndex = 0
                Case "L"
                SensFil.ListIndex = 0
                Case "T"
                SensFil.ListIndex = 1
            End Select
        Else
              SensFil.ListIndex = 2
        End If
        With Dim_surcote_Long
            .AddItem ("20")
            .AddItem ("15")
            .AddItem ("10")
            .AddItem ("5")
            .AddItem ("0")
        End With
        With Dim_Surcote_larg
            .AddItem ("20")
            .AddItem ("15")
            .AddItem ("10")
            .AddItem ("5")
            .AddItem ("0")
        End With
     
        With CreateObject("ADODB.Connection")
        .Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & "C:\V10\AM Création\DB\mmatv10.mdb" & ";"
        Me.Code_Materiaux.List = Application.Transpose(.excute("Select distinct [MaterialsCode] from [Materials] order by [MaterialsCode]").GetRows)
        .Close
    End With
        Call Liste_Feuilles
    End Sub

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Faute d'orthographe comme le dit mon pseudo! pas coupable!

    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
    Private Sub UserForm_Initialize()
        On Error Resume Next
        ITM = Array("20", "15", "10", "5", "0")
        'affichage de la premiere ligne de le combo Reference
        Reference.Value = ""
        Reference.ListIndex = 0
        'Remplissage de la combo sensfil
        SensFil.List = Array("L", "T", "S")
        Dim_surcote_Long.List = ITM
        Dim_surcote_larg.List = ITM
        With CreateObject("ADODB.Connection")
            .Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & "C:\V10\AM Création\DB\mmatv10.mdb" & ";"
            Me.Code_Materiaux.List = Application.Transpose(.Execute("Select distinct [MaterialsCode] from [Materials] order by [MaterialsCode]").GetRows)
            .Close
        End With
        If Cells(2, 2).Interior.ColorIndex = 6 Then
            Select Case RecherchSensFil
                Case "": SensFil.ListIndex = 0
                Case "L": SensFil.ListIndex = 0
                Case "T": SensFil.ListIndex = 1
            End Select
        Else
            SensFil.ListIndex = 2
        End If
        Call Liste_Feuilles
    End Sub

  6. #6
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 512
    Par défaut
    OK chapeau bas dysorthographie ça marche nickel, et en plus tu as meme optimisé mon code tout entier .

    Déjà là c'est clair que je n'aurais pas pensé au tableau pour alimenter une liste de combobox, pourtant il parait que les tableaux sont très efficaces et très rapide dans le déroulement du code.

    Encore merci pour tout

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Dans ton cas l'optimisation ne fait pas gagner un temps précieux,mais en terme de lisibilité du code oui!

    C'est le même raisonnement pour la requête Access (du producteur au consommateur)!
    Puisque Getrows retourne le résultat de la requête sous forme de tableau qu'il faut transposer en colonnes.

    Et là le temps gagné est loin d'être négligeable!
    Dernière modification par Invité ; 12/02/2017 à 12h40.

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

Discussions similaires

  1. Importation de certains champs d'une table Access (Avec ADO)
    Par youness.el2010 dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/02/2013, 14h48
  2. [VB 2005 express] Afficher un champ d'une table Access 2007
    Par Xsara 167 cv dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/03/2007, 13h16
  3. MAJ d'un champ d'une table access
    Par kheyar dans le forum Access
    Réponses: 6
    Dernier message: 21/05/2006, 20h46
  4. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  5. Ajouter un champs dans une table (Access 2000)
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/10/2004, 13h02

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