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 :

Si fichier ouvert rien sinon ouvre le


Sujet :

Macros et VBA Excel

  1. #21
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Citation Envoyé par Marc-L Voir le message

    Merci Patrick !

    J'ai besoin de la gestion d'erreur : as-tu testé avec un nom de classeur qui n'est pas ouvert ?
    De mon côté dans un tel cas et sans gestion une erreur 9 est renvoyée …
    Idem pour moi.

  2. #22
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    oui vous avez raison tous les deux

    je suis aller voir un peu de ce coté il semblerait que la gestion soit une obligation avec la manipulation de cet object

    je vais creuser

  3. #23
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Re
    je creuse encore pour le isobject mais ca me parait obscure puisque tout les exemples que j'ai trouvé non pas le problème d'erreur sur l'existence de l'instance du classeur nommé en argument

    en attendant j'ai trouvé autre chose

    tester dans une autre instance de l'application Excel l'ouverture du fichier et voir si le readonly est a true ou false
    un peu alambiqué mais intéressant tout de même
    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
     
    Function ClasseurEstOuvert(strNomFichierComplet As String) As Boolean
      Set objExcel = New Excel.Application
      With objExcel
        ' L'instance d'Excel qui porte le fichier ne doit pas être visible
        .Visible = False
        .Workbooks.Open (strNomFichierComplet)
        ' Si le classeur est déjà ouvert cette propriété sera à True
        ClasseurEstOuvert = .Workbooks(1).ReadOnly
        .Quit
      End With
       ' Ne pas oublier de supprimer la référence à Excel
      ' sinon une autre instance fantôme hantera le système...
      Set objExcel = Nothing
     End Function

  4. #24
    Expert éminent sénior
    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
    Points : 18 674
    Points
    18 674
    Par défaut

    Je ne vois pas ce qui te gêne Patrick, l'instruction On Error Resume Next n'est active que dans la mini fonction,
    elle ne s'applique pas à la procédure principale …

    Une autre manière dans un message de février et encore une autre cette fois sans gestion d'erreur
    si le nom de la feuille est aussi connu dans un autre d'avril

  5. #25
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut RE
    Re
    rien ne me gène MarcL
    mais je part du principe que si on peut l'éviter on l'évite

    alors je creuse aussi pour ma culture personnelle
    et il n'est pas nécessaire de dire que je suis tenace

  6. #26
    Invité
    Invité(e)
    Par défaut Bonjour
    Si la gestion des erreur est obligatoire, autant faire comme si le fichier était ouvert!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function IsOpen(Name) As Boolean
    dim Wb
    IsOpen=true
    on error resume next
    set wb= Workbooks(Name)
    if err<>0 then  IsOpen=false
    err.clear
    set wb=nothing
    on error goto 0
    End Function
    autre solution
    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
    Type FOpen
        wb As Workbook
        msg As String
        IsOpen As Boolean
    End Type
    Sub test()
    Dim F As FOpen
     F = IsOpen("C:\MyTest", "Nouveau Feuille Microsoft Office Excel.xls")
    MsgBox F.msg
    End Sub
    Function IsOpen(Rep As String, striName As String) As FOpen
    Dim F As FOpen
    IsOpen.IsOpen = True
    If Right(Rep, 1) <> "\" Then Rep = Rep & "\"
    On Error Resume Next
    Set IsOpen.wb = Workbooks(striName)
    If Err = 0 Then IsOpen.msg = "Fichier déjà ouvert!": On Error GoTo 0: Exit Function
    Err.Clear
    Set IsOpen.wb = Workbooks.Open(Rep & striName)
    If Err = 0 Then IsOpen.msg = "Fichier a été ouvert!": On Error GoTo 0: Exit Function
    Err.Clear
    Set IsOpen.wb = Nothing
    IsOpen.msg = "Fichier introuvable!": IsOpen.IsOpen = False: On Error GoTo 0
    End Function
    Dernière modification par Invité ; 12/05/2014 à 10h34.

  7. #27
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    ohlala !
    que de solutions !!
    j'ai repris la première solution que vous m'avez apporté avec un test If tel que :

    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
    If Box_BE_bud.Value = True Then
     ThisWorkbook.Activate
       Sheets("Commandes").Select
    fichierBEbud = Range("B6").Value & ".xlsm"
    cheminBEbud = Range("D6").Value
    ouvreBEbud = cheminBEbud & "\" & fichierBEbud
    MsgBox ThisWorkbook.Name
    For Each wb In Application.Workbooks
    If wb.Name = fichierBEbud Then ordre = "oui"
    Next wb
    If ordre = "oui" Then
    MsgBox "le classeur est deja ouvert"
    Else
    MsgBox "le classeur n'est pas ouvert"
    'action a faire (reste de ta macro )
    ChDir cheminBEbud
        Workbooks.Open Filename:=ouvreBEbud
    End If
    End If
    mes problématiques restantes :
    - la gestion de l'erreur si le fichier n'existe pas ou n'est pas bien nommé...
    vous m'avez conseillé d'éviter la gestion de l'erreur dans la macro. je pense que je vais laisser la macro seule déclencher l'erreur. en cliquant sur fin, l'utilisateur arrêtera l’exécution de la macro.
    - je vais réaliser une boucle pour tester l'existence de plusieurs classeurs. en réalité, je passe par un UF pour l'ouverture des fichiers. dans le UF il y a 5 boutons incluant 4 boutons (check box) associés à un fichier et 1 bouton pour "tous". je veux que quand bouton1 est vraie, on teste l'ouverture du fichier et/ou on l'ouvre, puis on test si bouton2 est vraie... je vais me pencher désormais là dessus !

    merci à tous pour votre collaboration. il est vrai que mon niveau excel est bien inférieur au votre et que j'ai du mal à suivre toutes les conversations ! mais merci bcp !!!

  8. #28
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Modifie ceci
    If ordre = "oui" Then
    MsgBox "le classeur est deja ouvert"
    Else
    MsgBox "le classeur n'est pas ouvert"
    'action a faire (reste de ta macro )
    ChDir cheminBEbud
    Workbooks.Open Filename:=ouvreBEbud
    End If
    comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If ordre = "oui" Then
        Windows("ouvreBEbud").activate
    Else
        ChDir cheminBEbud
        Workbooks.Open Filename:=ouvreBEbud
    End If

  9. #29
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    en effet, c'est plus logique ! ^^

  10. #30
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 617
    Points : 5 912
    Points
    5 912
    Par défaut
    Pour vérifier l'existence du fichier

    If Dir(cheminBEbud & "\" & fichierBEbud, vbArchive) <> "" then 'Le fichier existe

  11. #31
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    youpiiii ! c'est parfait pour moi !!
    merci beaucoup

  12. #32
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Avril 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de Gestion
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Avril 2014
    Messages : 45
    Points : 39
    Points
    39
    Par défaut
    je suis dans la création de ma boucle...
    ci dessous le code que j'ai créé. il y a une erreur de compilation au niveau du "nombox" - qualificateur incorrecte.
    comment dois-je nommer ce nombox si je veux qu'il correspondent au bouton du UF en changeant de nom. (c'est une variable qui est défini par les cellules de A6 à A9 dans ma feuille "commandes". le nom des boutons dans UF est identique à la valeur de la cellule A6 à A9...
    est-ce un range, string, object ??

    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
    Dim cell, plage As Range
    Dim nombox As String
    Dim i As Integer
    Dim chemin, nomfichier, ouvrefichier As String
     
    Set plage = Range("A6:A9")
    For Each cell In plage
    i = cell.Row
     
    nombox = "Box_" & cell.Value
     
    If nombox.Value = True Then 'nombox.value est le nom de mon checkbox 1, puis checkbox2 défini en colonne A6 à A9 et prend une valeur différente...
    ThisWorkbook.Activate
    Sheets("Commandes").Select
    nomfichier = Range("B:" & i).Value & ".xlsm"
    chemin = Range("D:" & i).Value
    ouvrefichier = chemin & "\" & nomfichier
     
    MsgBox ThisWorkbook.Name
    For Each wb In Application.Workbooks
    If wb.Name = nomfichier Then ordre = "oui"
    Next wb
    If ordre = "oui" Then
    Windows("nomfichier").Activate
    Else
    MsgBox "le classeur n'est pas ouvert"
    If Dir(chemin & "\" & nomfichier, vbArchive) <> "" Then 'Le fichier existe
    MsgBox "le fichier existe dc on ouvre"
    ChDir chemin
       Workbooks.Open Filename:=ouvrefichier
    Else
    MsgBox "Le fichier " & nomfichier & " est introuvable ou n'existe pas !" & Chr(10) _
        & "Veuillez vérifier l'existence du fichier, son nom et son chemin d'accès dans la feuille Commandes." _
        , vbOKOnly + vbCritical, "ERREUR OUVERTURE FICHIER"
     
    End If
    End If
    End If
     
    Next cell

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2007] Fichier ouvert ? sinon sortir !
    Par DJ FA dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/12/2012, 22h49
  2. Réponses: 1
    Dernier message: 07/06/2012, 21h20
  3. Réponses: 5
    Dernier message: 13/05/2005, 12h26
  4. Nombre maximum de fichiers ouverts par processus
    Par galinoo dans le forum Windows
    Réponses: 3
    Dernier message: 27/10/2004, 17h47
  5. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47

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