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 :

Vérifier la S'assurer de la disponibilité de 2 fichiers ouverts sur bureau. [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Vérifier la S'assurer de la disponibilité de 2 fichiers ouverts sur bureau.
    Bonsoir Forum !
    Ceci est ma première discussion,et sûrement pas la dernière !
    Je réalise un projet et au grès de mes blocages , je suis novice évidemment , je ferai appel à vos suggestions.Cool.

    J'ai créér un US Fpour lequel un des boutons (CommandButton1) déclenche une macro.Cette macro récupère des données de 2 fichiers qui doivent être ouverts sur le bureau.Lorsque c'est le cas , ça roule .Je sais faire(parce que c'est simple..).
    Par contre , si l'un des 2 fichiers ou les deux ne sont pas ouverts, je souhaiterais éviter le popup VBA qui invite à un débogage.Cette piste doit être remplacée par un contrôle préalable de la disponibilité de ces fichiers ouverts sur le bureau et si ce n'est pas le cas , ne pas lancer la macro et alerter l'utilisateur en l'invitant à ouvrir ces deux fichiers sur son bureau.
    Pouvez vous me décrire un "machin" qui peut réaliser celà? (j'insiste sur la partie décrire , qui me permet de comprendre et de progresser,enfin , j'espère !).
    Meci par avance.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Bienvenue sur le forum.

    En parcourant les classeurs ouverts (Workbooks), il est possible de voir si parmi ces classeurs,
    figure le nom des fichiers attendus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Public Function AreRequestedWbOpen(wb1 As String, wb2 As String) As Boolean
        Dim wb As Workbook
        Dim FoundWb As Integer
        FoundWb = 0
        For Each wb In Workbooks ' parcours les classeurs ouverts
            If wb.Name = wb1 Or wb.Name = wb2 Then
                FoundWb = FoundWb + 1
            End If
        Next wb
     
        AreRequestedWbOpen = (FoundWb = 2)
    End Function

  3. #3
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Tout d'abord merci de cette réponse rapide !

    je crois comprendre que je dois remplacer wb1 et wb2 de ce code par les noms des classeurs que je recherche.
    Mais j'avoue que je vois pas du tout comment récupérer le résultat de ce code pour
    "...ne pas lancer la macro et alerter l'utilisateur en l'invitant à ouvrir ces deux fichiers sur son bureau...."
    Pouvez vous développer ?
    Cdlt

  4. #4
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 272
    Points
    11 272
    Par défaut
    Salut, une autre méthode, à adapter à ton contexte http://excel.developpez.com/faq/?pag...ClasseurOuvert
    en ajoutant une gestion pour Err.Number = 53

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Re.

    Mais j'avoue que je vois pas du tout comment récupérer le résultat de ce code pour
    "...ne pas lancer la macro et alerter l'utilisateur en l'invitant à ouvrir ces deux fichiers sur son bureau...."
    La méthode pour détecter et avertir qu'un fichier n'est pas ouvert.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function CheckAndNotifyIsOpenWb(wbName As String) As Boolean
        Dim wb As Workbook
        CheckAndNotifyIsOpenWb = False
        For Each wb In Workbooks ' parcours les classeurs ouverts
            If wb.Name = wbName Then
                CheckAndNotifyIsOpenWb = True
            End If
        Next wb
     
        If Not CheckAndNotifyIsOpenWb Then  ' notifie que le fichier recherché n'est pas ouvert
            Call MsgBox("Fichier " & wbName & " non ouvert", vbExclamation + vbOKOnly, "Erreur")
        End If
     
    End Function
    Au début de la macro à exécuter, on teste l'ouverture de fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub CBStartMacro_Click()
     
        If Not (CheckAndNotifyIsOpenWb("Classeur1")) Or Not (CheckAndNotifyIsOpenWb("Classeur2")) Then
            Call MsgBox("Le traitement va être interrompu. Ouvrez les fichiers sur le bureau", _
                        vbExclamation + vbOKOnly, "Erreur")
            Exit Sub  ' Met fin à la macro.
        End If
     
        ' effectue le traitement normal
        '...
    End Sub

  6. #6
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut MERCI super Forum !
    BlueMonkey ,kiki29
    merci , je vais mettre en oeuvre !
    Vous tiendrai informés d'ici quelques jours ...
    Pour une première utilisation de ce forum , quelle efficacité !
    Bravo à tous/toutes et encore merci.

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bonjour,

    Plutôt que renvoyer un message d'erreur à l'utilisateur, pourquoi ne pas ouvrir les fichiers dans la macro?

  8. #8
    Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Janvier 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2012
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Discussion "réglée !!!!"
    Bonsoir Forum !
    Alain Tch : je ne désire pas ouvrir les fichier par la macro,merci !
    BlueMonkey : ne pas tenir compte du mail Perso... j'ai trouvé mon erreur et biensûr ton code est nickel !!!

    Merci à tous.

    ((je reviendrai !!)

  9. #9
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Points : 2 502
    Points
    2 502
    Par défaut
    Bonsoir,

    Citation Envoyé par Katoch
    Bonsoir !
    Où dois je insérer exactement le code ??

    La macro commençant par

    Sub Macro6()
    Range("A6").Select
    Range(Selection, Selection.End(xlDown)).Select
    ....................etc
    End Sub
    Et bien là par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro6()
       If Not (CheckAndNotifyIsOpenWb("Classeur1")) Or Not (CheckAndNotifyIsOpenWb("Classeur2")) Then
            Call MsgBox("Le traitement va être interrompu. Ouvrez les fichiers sur le bureau", _
                        vbExclamation + vbOKOnly, "Erreur")
            Exit Sub  ' Met fin à la macro.
        End If
     
        Range("A6").Select
        Range(Selection, Selection.End(xlDown)).Select
     ....................etc
    End Sub
    Mais je suis d'accord avec AlainTech : plutôt que de dire à l'utilisateur d'aller ouvrir les fichiers,
    autant les ouvrir depuis la macro.
    _______________________________________
    PS.
    Le mieux est d'utiliser le forum pour les questions.
    De cette manière tout le monde peut réagir, et apporter ses idées pour
    faire progresser le sujet.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/10/2011, 13h19
  2. Vérifier si un fichier existe sur un ftp
    Par 2berte dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/04/2009, 15h44
  3. s'assurer de la présence d'un fichier
    Par alainpinpin dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/01/2009, 15h02
  4. Vérifier si un fichier existe sur une machine distante
    Par tukutt dans le forum Programmation et administration système
    Réponses: 1
    Dernier message: 10/06/2008, 11h49
  5. Réponses: 4
    Dernier message: 18/01/2006, 09h49

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