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 :

Sauvegarder un classeur EXCEL à la même version que l'application


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Sauvegarder un classeur EXCEL à la même version que l'application
    Bonjour,

    Ma situation est la suivante je génère un fichier EXCEL à partir d'ACCESS 2000. Le classeur généré est curieusement généré au format EXCEL 95/97 alors que mon poste est tout équipé en Office 2000.

    J'ouvre ensuite ce classeur pour faire quelques modifications avec EXCEL piloté par ACCESS. J'aimerais sauvegarder au dernier format disponible sur le poste, donc en théorie dans mon cas EXCEL 2000.

    Quand je consulte le help de SaveAs : FileFormat la dernière valeur que je vois est xlExcel9795.

    De plus, j'aimerais que cette application soit indépendante de la version d'EXCEL.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Il faudrait que tu nous montre un bout de code où Access génère un fichier Excel. En général, on fait quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim XL as Object
    Set XL = CreatObject("Excel.Application")
    Ce qui devrait en théorie utiliser la version la plus récente d'Excel...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Le bout de code
    Et voici :
    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
     
    'exportation de la requête r_list_doc sous excel
    DoCmd.OutputTo acOutputQuery, "r_list_doc", acFormatXLS, cheminTemp, False
     
    'Ne pas oublier de cocher dans le menu Outil/Références, la bibliothèque Microsoft Excel X Object Library (avec x = 8 pour Excel 97, x = 9 pour Excel 2000, x = 10 pour Excel XP, x = 11 pour excès 2003).
     
    'Creation du fichier Excel :
     
    ' Test pour déterminer si une copie de Microsoft Excel
    ' est déjà en exécution.
    On Error Resume Next    ' Retarde la récupération d'erreur.
    ' La fonction Getobject appelée sans le premier
    ' argument renvoie une référence à une instance de
    ' l'application. Si l'application n'est pas en
    ' exécution, une erreur se produit.
    Set appexcel = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        ExcelWasNotRunning = True
        Set appexcel = CreateObject("Excel.Application")
    End If
    Err.Clear     ' Efface l'objet Err si une erreur s'est produite.
     
    ' Vérifie si Microsoft Excel est en exécution.
    ' Dans ce cas, l'ajoute à la table Running Object.
    DetectExcel
     
    'Ajout la feuille de formatage si le modèle existe
    fichierModel = Interaction.Environ("DATABASE_DIRECTORY") & "\DRAWING_LIST_Template.xls"
    Set wbexcel = appexcel.Workbooks.Open(FileName:=cheminTemp)
    Set wbexcel = GetObject(cheminTemp)
    appexcel.Visible = True
    appexcel.Parent.Windows(1).Visible = True
     
    If (Dir(fichierModel, vbNormal)) = "DRAWING_LIST_Template.xls" Then 'si le modèle existe
        Set wbModele = appexcel.Workbooks.Open(FileName:=fichierModel)
     
        appexcel.Sheets("Format").Select '###
        appexcel.Visible = True
        appexcel.Windows.Arrange ArrangeStyle:=xlTiled
     
        appexcel.Sheets("Format").Move After:=appexcel.Workbooks(nomFichierTemp).Sheets(1)
        appexcel.Windows("DRAWING_LIST_template.xls").Activate
        wbModele.Close False
     
    End If
     
    wbexcel.Save
    wbexcel.Close True

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 453
    Points : 520
    Points
    520
    Par défaut
    Dans l'éditeur VBA d'Access, tu dois aller au menu Outils (Tools) et sélectionner l'option Références...

    Dans cette fenêtre, il faut décocher la référence courrante au Excel et ensuite aller plus loin dans la liste pour trouver et cocher la référence à la version la plus récente. On ferme le tout avec "Ok" et ça devrait fonctionner, mais je ne peux rien garantir.

    Tu dois sauvegarder le projet par la suite.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Points : 25
    Points
    25
    Par défaut Aucune référence à "Microsoft Excel x.x Object Library"
    Dans Outils > Références, je ne fais justement aucune référence à "Microsoft Excel x.x Object Library" pour ne pas être dépendant de la version d'Excel.
    J'ai utilisé cette solution suite à la discussion Utilisation de "Microsoft Excel/Word 8.0 Object Libray" sur PC équipé d'Office 2000 j'ai utilisé le "late binding" comme expliqué dans Référence Excel depuis Access

Discussions similaires

  1. Quand je sauvegarde un classeur excel est lent
    Par Subkill dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 18/06/2015, 15h51
  2. [AC-2007] Sauvegarder un classeur excel qui change de nom
    Par Bernard67 dans le forum VBA Access
    Réponses: 4
    Dernier message: 04/02/2013, 09h13
  3. Sauvegarde de classeur excel par boite de dialogue excel
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 28/02/2012, 19h57
  4. Sauvegarder un classeur Excel actif
    Par silvin dans le forum VBScript
    Réponses: 6
    Dernier message: 09/09/2011, 18h28
  5. Réduire excel en même temps que l'userform
    Par e040098k dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/09/2008, 20h09

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