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 :

Problème communication Access - Excel


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Par défaut Problème communication Access - Excel
    Bonjour à tous


    Dans un formulaire Access, j'ai créé un bouton permettant de transférer les données de mon Excel vers ma table Access. Je suis confronté à deux problèmes.

    Problème 1: Je n'arrive pas à importer les données de mon excel en ciblant la bonne feuille. Quoi qu'il arrive ( meme en changeant le numero ou en écrivant le nom de la feuille correspondant : Set wsExcel = wbExcel.Worksheets(2) ) il importe les données sur la feuille où j'ai enregistré le document Excel. Exemple: si j'enregistre l'Excel en étant sur la feuille 5, il va importer les données de la feuille 5 et non la feuille 2.

    Problème 2 : une fois que j'ai importé toutes les données dans ma table, dans les processus de l'ordinateur, j'ai l'application Excel encore présente ( EXCEL.EXE *32). A chaque fois que j'importe les données, je suis donc obligé d'ouvrir le gestionnaire des tâches et d'arrêter le processus.

    J'espère que j'ai été suffisament clair.

    Merci d'avance


    Voici mon code :

    Code VBA : 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
    Private Sub Commande0_Click()
     
     
        Dim appExcel As Excel.Application
        Dim wbExcel As Excel.Workbook
        Dim wsExcel As Excel.Worksheet
     
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim r As Long
     
     
        ' Connexion à la base Access
     
        Set cn = New ADODB.Connection
        cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=C:xxxxxxxx.accdb"
     
        ' Ouvre un recordset
        Set rs = New ADODB.Recordset
        rs.Open "xxxxx", cn, adOpenKeyset, adLockOptimistic, adCmdTable
     
     
        Set appExcel = CreateObject("Excel.Application")
        Set wbExcel = appExcel.Workbooks.Open("C:xxxxxx")
        Set wsExcel = wbExcel.Worksheets(2)
     
     
     
     
    For r = 2 To Selection.SpecialCells(xlCellTypeLastCell).Row
        ' Réalise la boucle jusqu'à la dernière cellule de la plage utilisé
     
            If Range("A" & r) & "" = "" Then
               Exit For 'Sort si la 1ère colonne est vide
           End If
     
     
              With rs
     
                .AddNew ' Crée un nouvel enregistrement
                ' Renseigne les valeurs des champs
     
                .Fields("Référence") = Range("D" & r).Value
                                     etc....
     
     
     
                .Update ' MAJ du nouvel enregistrement
     
              End With
     
     
    Next r  'fin de la boucle For
     
     
        rs.Close
        Set rs = Nothing
        cn.Close
        Set cn = Nothing
        'fermeture du fichier et de la connection à la BD
     
    wbExcel.Close 'Fermeture du classeur Excel
    appExcel.Quit 'Fermeture de l'application Excel
     
     
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing
     
     End Sub

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    tous en images iCi

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 40
    Par défaut
    Bonjour,

    Merci de ta réponse. le problème est que j'aimerai utiliser mon code actuelle et éviter de passer par des requêtes.
    Ce n'est pas possible de régler mes problèmes avec mon code actuel ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans la vidéo je passe plusieurs fois du mode graphique au mode Sql, c'est bien le diable si tu n'arrives pas a copier coller ton scripts Sql dans ton module Vba!

    si je pouvais t'ajouter plusieurs je le ferai avec joie , je me suis bien diverti en lisant ton dernier poste!
    Dernière modification par Invité ; 08/06/2017 à 13h06.

Discussions similaires

  1. communication Access->Excel
    Par xtranaz dans le forum Access
    Réponses: 3
    Dernier message: 21/02/2007, 18h09
  2. communication access - excel
    Par tomo0013 dans le forum Access
    Réponses: 7
    Dernier message: 25/01/2007, 13h25
  3. Problème exportation Access -> Excel
    Par cando666 dans le forum Access
    Réponses: 4
    Dernier message: 11/07/2006, 16h01
  4. [VBA-A] Problème de communication Access-Excel
    Par finesse20 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/05/2006, 16h08
  5. Problème Automation Access --> Excel
    Par boubouh dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/01/2006, 09h34

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