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 :

Ouvrir un fichier excel depuis access en vba [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Par défaut Ouvrir un fichier excel depuis access en vba
    Bonjour à tous,

    Je rencontre un problème lorsque je souhaite ouvrir un fichier excel depuis access sur un click en vba

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private sub cmd_open_fich_click()
    Dim nomfichier as string, chemin as string
    Dis wbexcel as Workbook
     
    Nomfichier = "test.xlsm"
    Chemin = "c:\documents ans settings\pc\bureau\"
     
    Set wbexcel = workbooks.open(chemin & nomfichier)
     
    End sub

    Le probleme est que le fichier ne s'ouvre pas mais un processus excel est bien ouvert dans le gestionnaire des taches Windows

    Une idee??

    D'avance merci
    Blado_sap

  2. #2
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    Bonjour Blado_sap,

    Voici quelques lignes de code qui montrent une manière de d'ouvrir Excel depuis Access et de travailler sur le tableur.
    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
    Function ouvrirExcel()
     
    'Requires to define in Tools menu the reference to Microsoft Excel Object Library
    'Beware : this object library may be different from PC to PC : version 11 or 12 or..
    Dim objXL As Excel.Application
    Dim objWkbk As Workbook
    Dim objSht As Worksheet
    Dim i As Integer
     
    'ouvrir Excel
    'Si Excel est déjà ouvert sur le PC, GetObject suffit.
    On Local Error Resume Next
    Set objXL = GetObject(, "Excel.Application")
    'Par contre, si Excel n'est pas encore lancé sur le PC, alors il faut le faire par ce CreateObject
    If Nothing Is objXL Then
        Set objXL = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
     
    'ouvrir le fichier
    Set objWkbk = objXL.Workbooks.Open("C:\Temp\Book1.xls")
     
     
    'The sheet with our data is the first one
    Set objSht = objWkbk.Worksheets(1)
     
    objXL.Visible = True
     
    'Make this sheet the active one when we open the Spreadsheet
    objSht.Activate
     
     
    'Travailler sur le tableur Excel.  For example, set titles in grey.  Gris clair = color15  Gris foncé= 16
    With objSht
        'il y a 3 colonnes
        For i = 1 To 3
            .Cells(1, i).Interior.ColorIndex = 15
            .Cells(1, i).WrapText = True
        Next i
    End With
     
    'Fermer le fichier et le sauver
    objWkbk.Close True
     
    'libérer les pointeurs
    Set objWkbk = Nothing
    Set objXL = Nothing
     
    End Function

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 80
    Par défaut
    Bonjour

    Pipowil ce code est intéréssant,peut on l'appliquer pour ouvrir un fichier précis
    Par exemple j'ai 20 fichiers excel numérotés 1 à 20 puis je associer chacun de ces fichiers à un chiffre sur acces dans une liste déroulante qui lorsque je clic dessus ouvrirai le fichier excel correspondant

    Dans ce cas comment pourrais je lier la fonction qu'il y a dans ton code à ma liste?

  4. #4
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    Oui, biensûr. C'est très facile.
    Voici une marche à suivre. à toi de la modifier en function des tes besoins.

    1 J'ai créé une table avec les chemins des fichiers Excel à ouvrirPièce jointe 169089
    un petit conseil : éviter les chemins qui utilisent les lettres de drive comme H:\groupe\MonChemin\test.xls Si votre collègue a eu l'idée de configurer son PC et d'associer une autre lettre à ce serveur de fichiers, votre chemin ne fonctionnera plus. Préférez les chemins UNC.

    2. J'ai créé un formulaire avec une liste déroulante. J'y fait dérouler la table avec mes noms de fichiers :Pièce jointe 169090
    J'ai ajouté un évènement (j'ai choisi sur click) qui appelle du code VBA

    3 J'ai écrit ce code vba de 3 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub List0_Click()
    'ouvrir Excel pour le fichier choisi dans la listbox
    Dim strCheminFichier As String
     
    strCheminFichier = Me.List0
     
    ouvrirExcel (strCheminFichier)
     
    End Sub
    qui appelle le code que tu avais vu dans le post precedent.
    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
    Function ouvrirExcel(strCheminFichier)
     
    'Requires to define in Tools menu the reference to Microsoft Excel Object Library
    'Beware : this object library may be different from PC to PC : version 11 or 12 or..
    Dim objXL As Excel.Application
    Dim objWkbk As Workbook
    Dim objSht As Worksheet
    Dim i As Integer
     
    'ouvrir Excel
    'Si Excel est déjà ouvert sur le PC, GetObject suffit.
    On Local Error Resume Next
    Set objXL = GetObject(, "Excel.Application")
    'Par contre, si Excel n'est pas encore lancé sur le PC, alors il faut le faire par ce CreateObject
    If Nothing Is objXL Then
        Set objXL = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
     
    'ouvrir le fichier
    Set objWkbk = objXL.Workbooks.Open(strCheminFichier)
     
     
    'The sheet with our data is the first one
    Set objSht = objWkbk.Worksheets(1)
     
    objXL.Visible = True
     
    'Make this sheet the active one when we open the Spreadsheet
    objSht.Activate
     
     
    'Travailler sur le tableur Excel.  For example, set titles in grey.  Gris clair = color15  Gris foncé= 16
    With objSht
        'il y a 3 colonnes
        For i = 1 To 3
            .Cells(1, i).Interior.ColorIndex = 15
            .Cells(1, i).WrapText = True
        Next i
    End With
     
    'Fermer le fichier et le sauver
    objWkbk.Close True
     
    'libérer les pointeurs
    Set objWkbk = Nothing
    Set objXL = Nothing
     
    End Function
    où tu auras remarqué deux changements :
    La ligne est devenue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Function ouvrirExcel(strCheminFichier)
    parce que la function utilise le nom de fichier comme variable. Et cette variable est utilisée lors de l'ouverture du fichier ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'ouvrir le fichier
    Set objWkbk = objXL.Workbooks.Open(strCheminFichier)

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2014
    Messages : 80
    Par défaut
    Merci beaucoup Pipowil

    Tu m'as bien expliqué mais je ne sais pas pourquoi j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim objXL As Excel.Application
    me renvoie l'erreur type défini par l'utilisateur non défini

    Te serait il possible de m'envoyer l'exemple que tu m'a donné sous la forme d'une base de donnée avec le code pour que je le teste je me suis peut etre trompé quelque part

  6. #6
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    As-tu bien define tes references ?

    ==> Menu Tools / References ==> Cocher Microsoft Excel 12.0 library....

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 1
    Par défaut Problème à l'ouverture de classeurs utilisant des fonctions de Macros Complémentaires
    Citation Envoyé par PipoWIL Voir le message
    Bonjour Blado_sap,

    Voici quelques lignes de code qui montrent une manière de d'ouvrir Excel depuis Access et de travailler sur le tableur.
    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
    Function ouvrirExcel()
     
    'Requires to define in Tools menu the reference to Microsoft Excel Object Library
    'Beware : this object library may be different from PC to PC : version 11 or 12 or..
    Dim objXL As Excel.Application
    Dim objWkbk As Workbook
    Dim objSht As Worksheet
    Dim i As Integer
     
    'ouvrir Excel
    'Si Excel est déjà ouvert sur le PC, GetObject suffit.
    On Local Error Resume Next
    Set objXL = GetObject(, "Excel.Application")
    'Par contre, si Excel n'est pas encore lancé sur le PC, alors il faut le faire par ce CreateObject
    If Nothing Is objXL Then
        Set objXL = CreateObject("Excel.Application")
    End If
    On Error GoTo 0
     
    'ouvrir le fichier
    Set objWkbk = objXL.Workbooks.Open("C:\Temp\Book1.xls")
     
     
    'The sheet with our data is the first one
    Set objSht = objWkbk.Worksheets(1)
     
    objXL.Visible = True
     
    'Make this sheet the active one when we open the Spreadsheet
    objSht.Activate
     
     
    'Travailler sur le tableur Excel.  For example, set titles in grey.  Gris clair = color15  Gris foncé= 16
    With objSht
        'il y a 3 colonnes
        For i = 1 To 3
            .Cells(1, i).Interior.ColorIndex = 15
            .Cells(1, i).WrapText = True
        Next i
    End With
     
    'Fermer le fichier et le sauver
    objWkbk.Close True
     
    'libérer les pointeurs
    Set objWkbk = Nothing
    Set objXL = Nothing
     
    End Function
    Bonjour PipoWIL,

    Merci pour ce code qui fonctionne, chez moi, imparfaitement.

    J'ai modifié les actions à effectuer, sans refermer le fichier, car c'est pour faire des vérifs.

    Lorsqu’on demande l'ouverture d'un classeur utilisant des fonctions de Macros Complémentaires, Excel pose la question :
    Ce classeur contient des liaisons vers d'autres sources de données.
    - Cliquez sur Oui pour mettre à jour toutes les informations liées.
    - Cliquez sur Non pour conserver les informations existantes.

    Si on répond Oui, on peut demander l'ouverure de la source demandée, mais la macro bugue;
    si on répond Non, les cellules contenant ces fonctions ne sont pas mises à jour.

    J'ai résolu le problème en ouvrant deux fois le classeur et en répondant à toutes les questions demandées par Excel.

    Avez-vous une idée de la cause du problème ?

    Cordialement,

    Bronzo73

  8. #8
    Membre habitué
    Homme Profil pro
    Hobby man
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Hobby man

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Par défaut
    Bonjour,
    J'essaye de comprendre pourquoi le code de pipowil est présenté en "fonction" plutôt qu'en "sub".
    Il ne rapporte pourtant pas de valeur.

    Cordialement

  9. #9
    Membre chevronné
    Inscrit en
    Février 2011
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 469
    Par défaut
    Bonjour,
    J'ai utilisé une fonction parce que j'ai l'habitude d'utiliser des fonctions mais une Sub fonctionne aussi bien. Faites comme vous voulez, une Sub ou une fonction.

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 129
    Par défaut
    Citation Envoyé par Babelge Voir le message
    Bonjour,
    J'essaye de comprendre pourquoi le code de pipowil est présenté en "fonction" plutôt qu'en "sub".
    Il ne rapporte pourtant pas de valeur.

    Cordialement
    Bonjour,

    Il peut y avoir un intérêt à utiliser une fonction à la place d'un procédure qui ne renvoie rien.

    Qu'elle soit visible pour certains composants d'Access comme les propriétés de contrôle et les macros.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Hello,
    Citation Envoyé par loufab Voir le message
    Il peut y avoir un intérêt à utiliser une fonction à la place d'un procédure qui ne renvoie rien.

    Qu'elle soit visible pour certains composants d'Access comme les propriétés de contrôle et les macros.
    Option Private Module ?

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 129
    Par défaut
    BONJOUR @deedolith !

    Je n'ai pas saisi ton intervention.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    Citation Envoyé par loufab Voir le message
    BONJOUR @deedolith !

    Je n'ai pas saisi ton intervention.
    La directive Option Private Module masque le contenu du module a tout ce qui est externe au projet, cela inclue propriétés des formulaires.

  14. #14
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 129
    Par défaut
    Tu n'as pas compris mon intervention.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

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

Discussions similaires

  1. Ouvrir un fichier Excell depuis Access
    Par supertoms dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/04/2008, 15h53
  2. renommer une feuille d'un fichier excel depuis Access en VBA
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/08/2007, 17h55
  3. Réponses: 1
    Dernier message: 21/03/2007, 19h32
  4. [VBA Excel Débutant] Tri d'un fichier Excel depuis Access
    Par elgringo2007 dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 16h21
  5. Ouvrir un fichier excel depuis access
    Par ptitegrenouille dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/05/2005, 11h47

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