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 :

Feuille excel figée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Par défaut Feuille excel figée
    Bonjour à tous

    J'obtiens un phénomène bien étrange sous excel
    Une application access sur un réseau: CCV database.mdb
    Une feuille excel sur chaque poste: biologie_CCV.xls
    J'active un code dans access qui exécute du code dans une feuille excel.

    Code dans access:
    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
     
    Private Sub activation_Click()
     
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
     
    'ouvre la feuille excel "biologie_CCV.xls" 
    Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True
     
    Set wbexcel = appexcel.Workbooks.Open("C:\Documents and Settings\t86REA1\Bureau\biologie_CCV")
     
    'execute du code dans un module excel "copie()"
    appexcel.Run ("copie")
     
    'renseigne quelques champs sur la feuille excel
    appexcel.Sheets("M_GDS").Select
    appexcel.Cells(2, 1) = Me![ID_Réanimation]
    appexcel.Sheets("GDS").Select
    appexcel.Cells(1, 2) = Forms!F_Rea_long!Nom_Patient & " " & Forms!F_Rea_long!Prénom.Value
    appexcel.Sheets("M_GDS").Select
    appexcel.Sheets("GDS").Select
     
     
    End Sub
    Code dans EXCEL:
    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
     
    Sub copie()
     
    Dim acImport
    Dim c, firstAddress As Variant
    Dim fichier As String
    Dim MaBase As Object
    Dim var As Integer
     
     
     
     
    Application.ScreenUpdating = False
        Sheets("M_GDS").Select
        Cells.Select
        Selection.Copy
        Sheets("F_GDS").Select
        Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Range("A1").Select
    With Worksheets("F_GDS").Range("a1:q156")
    var = 0
        Set c = .Find(var, LookIn:=xlValues, Lookat:=xlWhole)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                If c.Address(0, 0) = "Q156" Then Exit Do Else c.Value = ""
                Set c = .FindNext(c)
            On Error Resume Next
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
     
     
    'Défini ma base access et mon fichier excel
     
    Set MaBase = GetObject("\\Chu06nas1\n06ane2\CCV database_be.mdb")
    fichier = ActiveWorkbook.FullName
    'transfère les données vers la table access
    On Error GoTo Error_Export:
    MaBase.DoCmd.TransferSpreadsheet acImport, 8, "T_GDS", fichier, True, "F_GDS!"
     
    'un peu de nettoyage pour ne garder que la première colonne de GDS
        Sheets("GDS").Select
        Range("B1:EZ150").Select
        Selection.ClearContents
        Sheets("F_GDS").Select
        Cells.Select
        Selection.ClearContents
        Sheets("GDS").Select
        Range("B1").Select
     
    MsgBox "Exportation des données est effectuée correctement.", vbInformation, "Exportation": Exit Sub
     
     
     
    Error_Export:
    MsgBox "Attention, un problème est survenu pendant l'exportation, merci de vérifier les données.", vbExclamation, "ERREUR Exportation": Exit Sub
     
    End Sub
    Chaque code marche bien. Mais quand je l'exécute depuis access, la page excel est figée et je ne peux que la fermer avec la croix. Quand je réouvre la feuille excel, tout s'est bien déroulé. Si je rajoute dans access:
    la feuille excel se ferme aprés la confirmation de l'enregistrement.
    Existe-il une fonction actualisation ou requery dans excel ? Peut-être cela débloquerait excel
    Merci d'avance pour vos suggestions

    N.B: j'espère que le code n'est pas trop mal présenté !

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    Tu peux essayer d'ajouter à la fin de ta macro Copie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True
    N.B: j'espère que le code n'est pas trop mal présenté !
    Question de point de vue, si ca fonctionne et répond à ton besoin c'est déja pas mal mais ca peut sans doute etre amelioré. Ce qui me parait plus choquant en revanche c'est qu'une partie du traitement est faite par Access et une autre par Excel.

    Le point de départ étant Acces je trouverais plus logique d'y poursuivre le traitement jusqu'à son terme sans passer par la méthode Run d'Excel pour une simple question de pérennité et de maintenance, si tes besoins évoluent tu risque de devoir aller modifier la macro sur chaque poste.

    Cordialement,

    Tirex28/

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    bonjour,
    Ou peut-être une autre suggéstion,
    Après la confirmation du msgbox, au lieu de faire exist sub, mettre application.Close ou thisWokbook.close
    A+

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2005
    Messages
    525
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Août 2005
    Messages : 525
    Par défaut
    Merci pour vos réponse. Problème résolu avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
          appexcel.ScreenUpdating = True
    Je me demande toujours pourquoi la feuille excel retait figée mais le principal c'est que ça marche.
    Je vais essayer de tout faire par access mais "moi y en a petit débutant !"
    Merci encore pour votre aide rapide.

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

Discussions similaires

  1. [CR]Importer des données d'une feuille excel
    Par rolan dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/12/2004, 22h32
  2. imprimer feuille excel depuis access
    Par Jean Bonnisme dans le forum Access
    Réponses: 3
    Dernier message: 18/11/2004, 08h46
  3. [VBA-E]Type d'une feuille excel
    Par LitteulKevin dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/05/2004, 14h43
  4. [VB6]PB d'importation d'un feuille Excel dans une MSFlexGrid
    Par mystere l dans le forum VB 6 et antérieur
    Réponses: 18
    Dernier message: 20/04/2004, 15h59
  5. remplir feuille excel
    Par thibaud60 dans le forum Access
    Réponses: 2
    Dernier message: 24/11/2003, 10h21

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