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 :

Fermer un fichier par VBA [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 62
    Par défaut Fermer un fichier par VBA
    Bonjour à tous,

    J'ai un problème pour fermer un fichier .xlsx sous VBA, voici comment est initialisé le programme :

    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
    Private Sub MaSub()
     
     Dim xlPath As String 'xlPath : chemin du fichier Excel
     Dim wsName As String 'wsName : nom de la feuille Excel qui contient les données à importer
     
     xlPath = "\Chemin...xlsx"
     wsName = "Feuil1"
     
       'déclaration des variables
        Dim app As Excel.Application
        Dim wkb As Excel.Workbook
        Dim wks As Excel.Worksheet
     
        'initialisation des variables
        Set app = New Excel.Application
        Set wkb = app.Workbooks.Open(xlPath)
        Set wks = wkb.Worksheets(wsName)
     
        Dim i As Integer, SQL As String
        i = 1
     
        'pour éviter les messages lors de l'ajout des enregistrements
        DoCmd.SetWarnings False
     
        With wks        
                     'Traitement des données
        End With
     
        'on réactive les messages d'erreurs
        DoCmd.SetWarnings True
     
        'libération variables
        Set wks = Nothing
        Set wkb = Nothing
        Set app = Nothing
     
        MsgBox "Import du fichier Excel réussi.", vbInformation + vbOKOnly, "Opération terminée..."
        wkb.Close False
     
    End Sub
    J'ai une erreur sur mon avant dernière ligne, si j'enlève cette ligne je n'ai aucun soucis et le code fonctionne, quand j'intègre cette ligne pour fermer le fichier excel mis en jeu, j'ai une erreur : Varaible du bloc With Non Definie. Comment palier à ce problème en sachant qu'elle en fait pas partie du bloc With.

    Merci à tous pour vos suggestions

    BH

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    tout à fait normal vu la ligne n°34 ‼

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 62
    Par défaut
    Ok, en fait, voilà mon soucis initial, après avoir traiter le fichier Excel, je ne peux ni l'ouvrir, ni le supprimer. Je pensais qu'en fermant le fichier dans le programme, cela résolurait le problème mais il n'en n'est rien. Auriez-vous déjà rencontrer ce problème ?

    Clt,

    B

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Question à poser sur le forum de l'application car ce programme n'est pas dans Excel ! …

  5. #5
    Invité
    Invité(e)
    Par défaut Bonjour,test ça
    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
    Private Sub MaSub()
     
     Dim xlPath As String 'xlPath : chemin du fichier Excel
     Dim wsName As String 'wsName : nom de la feuille Excel qui contient les données à importer
     
     xlPath = "\Chemin...xlsx"
     wsName = "Feuil1"
     
       'déclaration des variables
        Dim app As Excel.Application
        Dim wkb As Excel.Workbook
        Dim wks As Excel.Worksheet
     
        'initialisation des variables
        Set app = New Excel.Application
        Set wkb = app.Workbooks.Open(xlPath)
        Set wks = wkb.Worksheets(wsName)
     
        Dim i As Integer, SQL As String
        i = 1
     
        'pour éviter les messages lors de l'ajout des enregistrements
        DoCmd.SetWarnings False
     
        With wks
                     'Traitement des données
        End With
     'Si tu veux sauvegarder le fichier
     'wkb.Save
     'on ferme le fichier sans le sauvegarder
     wkb.Close False
     app.Quit
        'on réactive les messages d'erreurs
        DoCmd.SetWarnings True
     
        'libération variables pas à faire avant la fin du traitement {wkb.Save, wkb.Close False, app.Quit}
        Set wks = Nothing
        Set wkb = Nothing
        Set app = Nothing
     
        MsgBox "Import du fichier Excel réussi.", vbInformation + vbOKOnly, "Opération terminée..."
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 62
    Par défaut
    Malheuresement, j'ai une erreur 424 : Objet requis avec ce bloc de code supplémentaire (en ayant supprimé la libération des variables)

  7. #7
    Invité
    Invité(e)
    Par défaut
    oui j'avais pas fait attention, mais en même temps DoCmd est une instruction Access!
    Dernière modification par AlainTech ; 12/07/2014 à 19h26. Motif: Suppression de la citation inutile

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 62
    Par défaut
    Oui et du coup comment puis je procéder?

    Cdl,

    B

  9. #9
    Invité
    Invité(e)
    Par défaut
    il faut identifier les erreurs dans ton code!
    dans la mesure du possible je n’inhibe pas les message d'erreur {On Error Resume Next}

  10. #10
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 62
    Par défaut
    N'y aurait-il pas une référence à intégrer dans OUTILS > Références
    J'ai sélectionné :

    Visual Basic For Applications
    Microsoft Access 14.0 Object Library
    Microsoft Office 14.0 Access database engine Object
    Microsoft Excel 14.0 Object Library

  11. #11
    Invité
    Invité(e)
    Par défaut
    si mais tu utilises Access? et en plus tu l'utilise dans Excel vba

  12. #12
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2014
    Messages : 62
    Par défaut
    C'est bon j'ai trouvé !! merci beaucoup pour vos réponses.

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

Discussions similaires

  1. [WD-2000] Problème lors de l'ouverture d'un fichier par VBA word
    Par juju05 dans le forum VBA Word
    Réponses: 2
    Dernier message: 03/12/2010, 10h11
  2. [XL-2003] Fermer un fichier par clic sur cellule
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/11/2010, 10h20
  3. ouvrir un fichier par vba
    Par must04 dans le forum Général VBA
    Réponses: 3
    Dernier message: 28/09/2010, 12h55
  4. fermer un fichier en vba
    Par lepieux dans le forum Excel
    Réponses: 1
    Dernier message: 30/04/2010, 15h07
  5. changer l'extension d'un fichier par VBA
    Par loic20h28 dans le forum VBA Access
    Réponses: 13
    Dernier message: 21/06/2007, 11h58

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