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 :

Macro excel qui ferme tous les fichiers .xls


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut Macro excel qui ferme tous les fichiers .xls
    Bonsoir,

    je souhaiterais avoir dans une macro excel un
    code qui vérifie que les fichiers .xls soient bien fermés,
    car ma macro ouvre les fichiers excel du répertoire, donc
    cela éviterait de les ouvrir en double.

    Quelqu'un peut il me suggérer une solution?

    Merci

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Ce code vérifie si un classeur est ouvert ou non et demande s'il faut l'ouvrir s'il est fermé. Tu peux peut-être l'adapter ?
    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
     
    Private Function EstDansCollection(Coln As Object, Item As String) As Boolean
    Dim obj As Object
    On Error Resume Next
    Set obj = Coln(Item)
    EstDansCollection = Not obj Is Nothing
    End Function
     
    Private Sub CommandButton1_Click()
    Dim Reponse
        If EstDansCollection(Workbooks, "Classeur2.xls") = True Then
            MsgBox "Le classeur est déjà ouvert !"
        Exit Sub
    End If
     
    If EstDansCollection(Workbooks, "Classeur2.xls") = False Then
        Reponse = MsgBox("Le classeur n'est pas ouvert, voulez-vous l'ouvrir ?", vbInformation + vbYesNo)
        If (Reponse = vbNo) Then
        Exit Sub
    Else
            Workbooks.Open ("Classeur2.xls")
        End If
    End If
    End Sub
    jpleroisse

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    ok je te remercie, mais à mon avis il doit y avoir plus simple,
    je crois avoir vu une solution proposée dejà ici; il va falloir
    quue je regarde!

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Re,
    Cette macro ferme tous les classeur ouvert, mis à part le classeur Actif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub FermerTousClasseurs()
    Dim Classeur As Workbook
    For Each Classeur In Workbooks
        If Classeur.Name <> ThisWorkbook.Name Then
            Classeur.Close SaveChanges:=True
        End If
    Next Classeur
    End Sub
    jpleroisse

  5. #5
    Membre régulier Avatar de calimero91
    Inscrit en
    Décembre 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Décembre 2005
    Messages : 183
    Points : 106
    Points
    106
    Par défaut
    je ne sait pas si cela est valable en VBA mais je pense qu'un excel.quit devrais suffir.etant donne que de cette maniere tu ferme completement l'application excel tout les classeur devrais etre fermer.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    Je te remercie; il faudrait une application qui aille voir
    tous les classeurs ouverts et qui les ferme, sauf celui que tu
    utilises.
    Tu peux me dire comment on fait dans ce cas la, car je ne vois
    pas comment ta fonction peut fonctionner!

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 79
    Points : 35
    Points
    35
    Par défaut
    ok merci j'ai testé ca marche, il suffit de rentrer le code;
    je pensais qu'il fallait appeler la fonction ultérieurement!

  8. #8
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Je connais mal l'utilisation d'Excel (je n'ai plus pratiqué depuis très longtemps).

    Je ne sais donc pas si ce qui suit, trouvé dans l'aide en ligne, correspond réellement à des besoins :

    Les objets sont les éléments fondamentaux de Visual Basic. En effet, la quasi totalité des opérations que vous effectuez dans Visual Basic impliquent leur utilisation. Chaque élément de Microsoft Excel (classeurs, feuilles de calcul, graphiques, cellules, etc.) peut être représenté par un objet dans Visual Basic. En créant des procédures qui appliquent les méthodes et contrôlent les propriétés de ces objets, vous pouvez automatiser des tâches dans Microsoft Excel.

    Qu'est-ce qu'un objet?

    Un objet représente un élément de Microsoft Excel, tel qu'un classeur, une feuille de calcul, un graphique ou une plage de cellules. Dans le code Visual Basic, vous devez identifier un objet avant de pouvoir lui appliquer une de ses méthodes ou changer la valeur de l'une de ses propriétés.

    Qu'est-ce qu'une collection?

    Une collection est un objet qui contient plusieurs autres objets qui sont, en règle générale, du même type. Par exemple, la collection Workbooks contient tous les objets Workbook ouverts.
    Utilisez la méthode Workbooks pour renvoyer un membre particulier de la collection Workbooks. Vous travaillez avec une collection comme vous le feriez avec un tableau. Ainsi, vous pouvez identifier un élément au sein d'une collection en délimitant un nom ou un numéro à l'aide de parenthèses. Par exemple, dans la procédure suivante, Workbooks(1) identifie le premier objet Workbook ouvert, puis la méthode Close le ferme.

    Sub FermerPremier()
    Workbooks(1).Close
    End Sub

    La procédure suivante utilise un nom (spécifié sous forme de chaîne) pour identifier un objet Workbook.

    Sub FermerClass()
    Workbooks("MonClass.xls").Close
    End Sub

    Remarque Vous devez utiliser les méthodes Workbooks et Worksheets pour identifier un classeur ou une feuille de calcul. N'utilisez jamais le mot «Workbook» ou «Worksheet» dans Visual Basic pour désigner un objet Workbook ou Worksheet particulier.

    Vous pouvez également manipuler la totalité d'une collection d'objets. Par exemple, la procédure suivante ferme tous les classeurs ouverts.

    Sub FermerTout()
    Workbooks.Close
    End Sub

    Parcours de la hiérarchie pour accéder à un objet

    Pour renvoyer un objet, vous devez parcourir vers le bas la hiérarchie des objets Microsoft Excel. Par exemple, la procédure suivante supprime la première feuille de calcul contenue dans le classeur nommé CLASS6.XLS.

    Sub SupprimerPremier()
    Application.Workbooks("Class6.xls").Worksheets(1).Delete
    End Sub

    La propriété Application renvoie l'objet Application. La méthode Workbooks de l'objet Application renvoie l'objet classeur unique qui fait référence à CLASS6.XLS. Ensuite, la méthode Worksheets de l'objet Workbook renvoie le premier objet Worksheet du classeur CLASS6.XLS. Enfin, la méthode Delete est appliquée à l'objet Worksheet.
    Comme vous pouvez le constater, vous utilisez toujours une méthode ou une propriété pour descendre dans la hiérarchie vers un objet. Cela signifie que vous renvoyez un objet en appliquant une méthode ou une propriété à un objet se trouvant au-dessus de lui dans la hiérarchie des objets. Après avoir renvoyé l'objet souhaité, vous pouvez appliquer les méthodes et contrôler les propriétés de cet objet. Pour passer en revue la hiérarchie des objets, reportez-vous à la rubrique Objets Microsoft Excel. Pour plus d'informations sur l'utilisation des méthodes et des propriétés pour parcourir la hiérarchie des objets afin d'accéder à l'objet souhaité, reportez-vous à la section «Renvoi d'objets à l'aide de méthodes et de propriétés», plus loin dans cette rubrique.

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

Discussions similaires

  1. Steam : un bug qui supprime tous les fichiers de l'utilisateur
    Par Amine Horseman dans le forum Développement 2D, 3D et Jeux
    Réponses: 19
    Dernier message: 24/01/2015, 13h52
  2. Appliquer un sub à tous les fichiers .xls d'un dossier
    Par VBuzze dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/07/2014, 12h25
  3. [WD16] Récupérer les noms de tous les fichiers xls ouverts à l'écran
    Par CHARLI BONGO dans le forum WinDev
    Réponses: 1
    Dernier message: 12/11/2013, 09h44
  4. Réponses: 16
    Dernier message: 30/07/2013, 00h05
  5. [XL-2003] Comment rendre une macro VBA accessible à tous les fichiers .xls
    Par Toto_le_héros38 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/01/2011, 21h23

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