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 lors de l'importation d'une table access dans feuille excel/VBA [AC-2007]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Electronique, télécommunication, informatique
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electronique, télécommunication, informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Problème lors de l'importation d'une table access dans feuille excel/VBA
    Bonjour,

    Je suis étudiante en télécommunication et informatique et réalise un stage actuellement dans une entreprise depuis le mois de juin pour améliorer la base de données (sous ACCESS 2007). D'une formation C et C++ en informatique, je me suis rapidement mise au VBA grace aux FAQs de ce forum (je n'en maitrise pas encore bien la logique et les subtilités).

    Néanmoins aujourd'hui j'ai beau lire et relire les FAQs et les différentes discussions, je ne trouve pas évocations du problème que je rencontre. Je m'explique :

    Je cherche à copier des données de ma table access ( nommée "tmp_aco") dans une feuille excel (excel 2003), une trame qui existe, jusque là pas de problème. J'applique un filtre sur la première colonne pour que les dates soit triées par ordre décroissant et là aussi tout va bien.

    Le problème arrive lorsque je veux que mes données, copiées de access dans excel, prennent un format date du type mmm-aa (ces données sont aux formats JJ/MM/AAAA), et là le changement de format ne se fait pas sur les données récemment copiées, mais une fois que je double clique sur ces données ou que j'enlève "l'espace imaginaire" sous excel, là elles se placent au bon format.

    J'ai joint une aquisition de ma feuille excel en haut les dates préalables copiées et triées mais le format ne se change pas comme sur les lignes d'en dessous (ex:"mai-12")

    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
    Private Sub Commande3_Click()
    On Error GoTo Err_Commande3_Click
     
    Dim appexcel As Excel.APPLICATION
    Dim wbexcel As Excel.Workbook
    Dim Rs As Recordset
    Dim objFSO As FileSystemObject
    Dim nomcompresseur As String
    Dim i As Single
     
     
    DoCmd.OpenQuery "qry_aco_fiche_acoustique_de_bis"
    DoCmd.OpenQuery "qry_aco_numac_date"
     
     
    Set Rs = CurrentDb.OpenRecordset("tmp_aco_controle_qualite")
    If Not Rs.EOF Then
    Rs.MoveLast
    nomcompresseur = Rs("COMPRESSEUR")
    End If
    Rs.Close
    Set Rs = Nothing
     
    Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True 'mettre false pour que excel ne s'ouvre pas
    Set wbexcel = appexcel.Workbooks.Open("H:\USERS\COMMUN\ACOUSTIQUE RAPPORT\Contrôle qualité\" & nomcompresseur & ".xls")
     
     
    appexcel.Sheets("Feuil1").Select
    i = 1
    Do
        i = i + 1
    Loop While Not (IsEmpty(appexcel.Cells(i, 1)))
     
    Set Rs = CurrentDb.OpenRecordset("tmp_aco_controle_qualite")
    appexcel.Cells(i, 1).CopyFromRecordset Rs 'copie de la table dans excel
    Set Rs = Nothing
     
    appexcel.Workbooks(nomcompresseur & ".xls").Save
    Sleep 200
    appexcel.Workbooks(nomcompresseur & ".xls").Close
     
    Set wbexcel = appexcel.Workbooks.Open("H:\USERS\COMMUN\ACOUSTIQUE RAPPORT\Contrôle qualité\" & nomcompresseur & ".xls")
    appexcel.Sheets("Feuil1").Select
    For i = 1 To 500
    appexcel.Range("A" & i).NumberFormat = ("mmmm-yy")
    Next  
     
     
    appexcel.Range("A1:A300").Sort Key1:=appexcel.Range("A2"), Order1:=xlDescending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
     
    appexcel.Workbooks(nomcompresseur & ".xls").Save
     
     
    Exit_Commande3_Click:
        Exit Sub
    Err_Commande3_Click:
        MsgBox Err.Description
        Resume Exit_Commande3_Click
    End Sub
    Voilà je ne comprend pas pourquoi le format ne se modifie pas sur ces lignes comme sur celle préalablement enregistrées sur ma feuille excel. On dirait que excel attend une validation de ma part de ces données... Peut etre est il possible de "reproduire le double clique, la validation" sous excel depuis access ?
    Avez vous déjà rencontré ce problème ? Avez vous des pistes de résolutions ?
    Je vous ai joint mon code évidemment c'est un morceau d'un tout donc si il y a des interrogations n'hésitez pas.

    Enfin si je peux l'améliorer( esthétique ou syntaxe ) signalez le moi

    Je vous remercie par avance.

    Bien cordialement,

    Em.
    Images attachées Images attachées  

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Peut-être pourrais-tu demander un recalcul du Excel.

    Aussi j'ai remarqué que tu faisais une boucle de 1 à 500 mais plus bas tu défini une plage de tri sur "A1:A300". Est-ce normal ?

    A+

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Electronique, télécommunication, informatique
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electronique, télécommunication, informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    D'accord je vais regarder por le recalcul d'excel.
    En ce qui concerne les plages de A1:A300 et la boucle sur 500 ce sont juste des tests mis " au hasard" j'ai une centaine d'enregistrement pour le moment dans ma feuille mais ce nombre va augmenter au fur et à mesure des années...

    Merci pour cette nouvelle piste de recherche.

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Electronique, télécommunication, informatique
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electronique, télécommunication, informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Bon et bien le recalcul n'est pas ma solution j'ai ajouté, dans mon code, le et le problème reste inchangé : je dois toujours double cliquer sur ma cellule pour "valider" le copier coller et que le format s'adapte à la cellule cible.

    Je continu mes tests si d'autres idées vous viennent n'hésitez pas

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Electronique, télécommunication, informatique
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electronique, télécommunication, informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    En faites avec mes recherches je crois que ce que j'aimerai c'est l'équivalent du "copier avec respect de la mise en forme de destination" sous excel en vba. Peut etre faut il alors déplacer cette discussion ?

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Mais tu précises le format que tu veux donc cela ne devrait pas jouer.

    Est-ce que si après ton transfert, tu sauvegardes, tu sors et tu réouvres tes données sont formatées comme il faut ?

    A+

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Electronique, télécommunication, informatique
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electronique, télécommunication, informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Non, si après la procédure, j'enregistre et je ferme, lorsque je réouvre rien ne change les nouvelles dates copiés sont toujours du coté gauche de la cellule en format JJ/MM/AAAA et si j'accède à la cellule, là le format se change.

    Ce que je ne comprend pas c'est que ces cellules nouvellement copiées sont bien pris en compte lors du tri, mais le changement de format ne s'applique pas...

    Je vois essayer de copier d'abord ma table access dans un documents .txt et ensuite de copier ce document sous excel ( mais j'ai peur que cela ne se gère pas aisément depuis access).

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Electronique, télécommunication, informatique
    Inscrit en
    Août 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electronique, télécommunication, informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Mon problème venait du fait que ma "valeur" de date ACCESS était au format texte (ce dont j'ai besoin sous access) et non au format date. Pour contourner le problème j'ai donc utilisé une zone de texte et l'utilisateur saisit la date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Do
        appexcel.Cells(i, 1) = Madatesaisiedansunezonedetexte.value
        i = i + 1
    Loop While Not (IsEmpty(appexcel.Cells(i, 1)))
    Voilà je n'ai pas trouvé mieux mais j'arrive au résultat souhaité.

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

Discussions similaires

  1. Importation d'une table access dans excel avec Macro
    Par wamkey dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/01/2014, 22h44
  2. [OL-2003] Importation d'une table access dans le calendrier outlook
    Par ls8ls8 dans le forum VBA Outlook
    Réponses: 0
    Dernier message: 09/07/2009, 19h22
  3. Probléme lors de l'importation d'une table
    Par mavean dans le forum Modélisation
    Réponses: 1
    Dernier message: 15/01/2008, 14h49
  4. Problème lors de l'import d'une dll native.
    Par -Jolan- dans le forum C++/CLI
    Réponses: 4
    Dernier message: 21/02/2007, 12h18
  5. Problème lors de l'exportation d'une table
    Par romrai dans le forum Access
    Réponses: 4
    Dernier message: 04/07/2006, 14h35

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