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

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2007
    Messages : 116
    Points : 46
    Points
    46
    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 confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    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 à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Saint Denis (Île de France)

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 80
    Points : 10
    Points
    10
    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 confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    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 à l'essai
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Seine Saint Denis (Île de France)

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 80
    Points : 10
    Points
    10
    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 confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    As-tu bien define tes references ?

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

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

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 80
    Points : 10
    Points
    10
    Par défaut
    Bien vu je me disait que j'avait oublié quelque chose

    Maintenant j'ai un problème pour l'ouverture du fichier cela l'ouvre et le referme aussitôt

  8. #8
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Mais oui, biensûr que ça ouvre et ça ferme aussitôt !
    As-tu lu le code ?
    Que fait-il ?
    1 On ouvre Excel
    2 on change la couleur des trois premières cellules
    3 on ferme Excel

    Il ne faut pas une éternité pour faire cela. C'est normal que cela se referme aussitôt.
    Le code que j'ai fourni est un code de démonstration : à toi de le faire évoluer en function de tes besoins.

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

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

    Informations forums :
    Inscription : Novembre 2014
    Messages : 80
    Points : 10
    Points
    10
    Par défaut
    D'accord ok ,en effet je n'avais pas lu le code j’étais focalisé sur le fait que cela ne marchait pas
    OK merci beaucoup sa marche maintenant que j'ai coché la case Excel Library

    Juste une dernière question dans ma table j'ai associé le fichier que je souhaite à un numéro de zone et je veux afficher ce numéro de zone en colonne 3

    Nom : Capture.PNG
Affichages : 6029
Taille : 8,1 Ko

    Dans ma liste déroulante ,j'ai bien ma zone 01,zone 02 et zone 03 qui s'affiche mais quand j'ai sélectionné ma zone ,il reste le chemin du fichier qui s'affiche

    Nom : Capture.PNG
Affichages : 6009
Taille : 1,8 Ko

    Puis je faire en sorte qu'il s'affiche le nom correspondant à ce fichier en l’occurrence Zone 01 ?

  10. #10
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 465
    Points : 549
    Points
    549
    Par défaut
    Bonjour,

    Pour afficher tes Zones dans le formulaire, tu dois ajuster ton formulaire pour montrer une colonne de plus dans ta liste déroulante.
    1 Ouvre ton formulaire en mode composition (design view)
    2 Sélectionne ta liste déroulante
    3 dans l'onglet data, Changer la source
    de :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [010 TBL Fichiers].[NumFich], [010 TBL Fichiers].[PathFile] FROM [010 TBL Fichiers] ORDER BY [NumFich];
    à :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [010 TBL Fichiers].[NumFich], [010 TBL Fichiers].[PathFile], [010 TBL Fichiers].[Champ1] FROM [010 TBL Fichiers] ORDER BY [NumFich];

    4 puis dans l'onglet format, changer le nombre de colonnes de 2 à 3
    5 ajuster leur largueur.Pièce jointe 169215

  11. #11
    Nouveau Candidat au Club
    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
    Points : 1
    Points
    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

+ 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