Macro avec condition

Résolu
Bonjour,
J'ai besoin d'aide pour ma macro. Dans une macro j'ouvre un fichier que plusieurs personnes peuvent ouvrir. Si le fichier est en utilisation, j'aurai le message que le fichier est en utilisation par un autre utilisateur et je dois répondre à la question ouvrir en lecture seule et ma macro copie des données dans ce fichier, donc je ne dois pas être en lecture seule. Ce que je voudrais c'est que si le fichier est ouvert, il y aura un message dans la macro qui dit que le fichier est en utilisation, de réessayer plus tard et de mettre fin à la macro afin de ne pas entrer en débug.
Je vous remercie pour votre aide
Nilec

3 réponses

  1. Bonjour,
    Merci de relire encore une fois mon message.
    0
    1. Bonjour,
      Dois-je vous faire parvenir la macro à nouveau ?
      0
  2. Bonjour,
    Merci pour le code.
    Cependant vous avez un doublon ici et c'est sur ce dernier, ou vous êtes inscrite, que je posterai ma réponse.

    0
    1. Bonjour,
      Est-il possible de voir votre macro... ?

      0
      1. Bonjour,
        Voici la macro, c'est au moment ou j'ouvre le fichier Liste des numéros ch émis année fiscale 2015.xlsm" que je voudrais m'assurer que le fichier n'est pas ouvert. Si il est en utilisation par un autre utilisateur, je voudrais un message que le fichier est en utilisation et de sortir de la macro (Exit Sub )
        Merci beaucoup pour votre aide. Je cherche depuis longtemps et je ne réussis pas à mettre la bonne commande.

        Sub DonnéesCheque()

        [chèque!C295] = Application.UserName

        Dim Nom As String
        Dim NoEmployé As String
        Dim Période As String
        Dim Chèque As String
        Nom = InputBox("Inscrire Prénom et Nom Employé", "Saisie du Nom")
        Range("B2") = Nom
        NoEmployé = InputBox("Inscrire No Employé", "Saisie du NoEmployé")

        Range("F2") = NoEmployé

        Période = InputBox("Inscrire No Période 2015-?? ", "Saisie du Période")

        Range("G2") = Période

        Chèque = InputBox("Choisir 1 avec dépôt ou 2 sans dépôt", "Saisie du Chèque")

        Range("H2") = Chèque

        If Dir("U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm") <> "" Then
        If MsgBox("Fichier existe, voulez vous le remplacer", vbYesNo) <> vbYes Then Exit Sub
        Application.DisplayAlerts = False
        End If

        'Workbooks.Open Filename:= _
        "C:\Users\Nicole\Ch émis\Liste des numéros ch émis année fiscale 2015.xlsm"

        Workbooks.Open "U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm"

        'Dim Fichier As String
        'Dim Chemin As String, Commande As String
        'Chemin = "U:\Cheque Émis\Original\Nicole\Macro"

        'Dim Xl As Excel.Application, Wk As Workbook
        'Dim WB As Workbook 'Dim Wbk
        'On Error Resume Next
        'Set Wbk = Workbooks("U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm")
        'If Err <> 0 Then
        'pas ouvert -> on ouvre
        'Workbooks.Open "U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm"
        'Else: MsgBox "déjà ouvert"
        'Exit Sub

        'Dim Wk As Workbook
        'x = "Liste des numéros ch émis année fiscale 2015"
        'On Error Resume Next
        'Set Wk = Workbooks("Liste des numéros ch émis année fiscale 2015" & ".xlsm")
        'If IsFileOpen("U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm") Then
        'MsgBox "LE FICHIER EST EN COUR D'UTILISATION, RECOMMANCER DANS QUELQUES INSTANTS"
        'Exit Sub
        'Else
        'Workbooks.Open Filename:= _
        "U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm"
        'End If
        'If IsFileOpen("U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm") Then
        'MsgBox "LE FICHIER EST EN COUR D'UTILISATION, RECOMMANCER DANS QUELQUES INSTANTS"
        'Exit Sub

        ' Else
        'MsgBox "O.K"
        'Workbooks.Open "U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm"
        'End If

        'Workbooks.Open Filename:= _
        "U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm"

        'ChDir "U:\Cheque Émis\Original\Nicole\Macro"

        'Windows("Liste des numéros ch émis année fiscale 2015.xlsm").Activate
        Range("h12:i12").Select
        Selection.Copy
        Range("A1048576").End(xlUp).Offset(1, 0).Select
        ActiveCell.Offset(0, 10).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        ActiveCell.Select
        ActiveCell.Offset(0, -10).Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R2C7"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R2C6"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R2C2"
        ActiveCell.Offset(0, 4).Select
        ActiveCell.FormulaR1C1 = _
        "=IF('Louis Groleau 2015-01-21.xlsmcode'!R2C8=1,RC11+1,"""")"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = _
        "=IF('Louis Groleau 2015-01-21.xlsmcode'!R2C8=2,RC[3]+1,"""")"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R1C13"
        ActiveCell.Offset(0, 3).Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-5]="""",RC[-4],RC[-5])"
        Selection.Copy
        Windows("#0000 Louis Groleau 2015-01-21.xlsm").Activate
        Range("I2:K2").Select
        Selection.PasteSpecial Paste:=xlPasteAllMergingConditionalFormats, Operation _
        :=xlNone, SkipBlanks:=False, Transpose:=False
        Windows("Liste des numéros ch émis année fiscale 2015.xlsm").Activate
        Range("A1048576").End(xlUp).Offset(0, 0).Select
        ActiveCell.Range(Cells(1, "A"), Cells(1, "M")).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        ActiveCell.Range(Cells(1, "K"), Cells(1, "M")).Select
        Selection.ClearContents
        Range("A13").Select
        ActiveWorkbook.Save
        ActiveWorkbook.Close

        Windows("#0000 Louis Groleau 2015-01-21.xlsm").Activate
        Sheets("chèque").Select
        If Dir(Range("B300") & "\" & Range("b301") & ".xls") <> "" Then
        If MsgBox(" ATTENTION ATTENTION ATTENTION FICHIER EXISTANT, OUI = ÉCRASER NON =VÉRIFIER NO DE PROJET ET RECOMMENCER ", vbYesNo) <> vbYes Then Exit Sub
        Application.DisplayAlerts = False
        End If
        ActiveWorkbook.SaveAs (Range("B300") & "\" & Range("b301") & ".xls")
        Sheets("code").Select
        ActiveSheet.DrawingObjects.Delete
        Range("D4").Select
        'Windows("#0000 Louis Groleau 2015-01-21.xlsm").Activate
        'Workbooks.Open Filename:="G:\DSA-PAIE_ET_COMPTABILITE\PAIE\CHEQUE EMIS\Ch. émis 2015\Chèques émis 2015" & Range("b301") & ".xls"

        End Sub
        0
      2. Bonjour,
        Voici la macro, c'est au moment ou j'ouvre le fichier Liste des numéros ch émis année fiscale 2015.xlsm" que je voudrais m'assurer que le fichier n'est pas ouvert. Si il est en utilisation par un autre utilisateur, je voudrais un message que le fichier est en utilisation et de sortir de la macro (Exit Sub )
        Merci beaucoup pour votre aide. Je cherche depuis longtemps et je ne réussis pas à mettre la bonne commande. J'ai vraiment besoin d'aide.

        Merci encore
        Nilec

        Sub DonnéesCheque()

        [chèque!C295] = Application.UserName

        Dim Nom As String
        Dim NoEmployé As String
        Dim Période As String
        Dim Chèque As String
        Nom = InputBox("Inscrire Prénom et Nom Employé", "Saisie du Nom")
        Range("B2") = Nom
        NoEmployé = InputBox("Inscrire No Employé", "Saisie du NoEmployé")

        Range("F2") = NoEmployé

        Période = InputBox("Inscrire No Période 2015-?? ", "Saisie du Période")

        Range("G2") = Période

        Chèque = InputBox("Choisir 1 avec dépôt ou 2 sans dépôt", "Saisie du Chèque")

        Range("H2") = Chèque

        Workbooks.Open "U:\Cheque Émis\Original\Nicole\Macro\Liste des numéros ch émis année fiscale 2015.xlsm"

        Range("h12:i12").Select
        Selection.Copy
        Range("A1048576").End(xlUp).Offset(1, 0).Select
        ActiveCell.Offset(0, 10).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        ActiveCell.Select
        ActiveCell.Offset(0, -10).Select
        ActiveCell.FormulaR1C1 = "=TODAY()"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R2C7"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R2C6"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R2C2"
        ActiveCell.Offset(0, 4).Select
        ActiveCell.FormulaR1C1 = _
        "=IF('Louis Groleau 2015-01-21.xlsmcode'!R2C8=1,RC11+1,"""")"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = _
        "=IF('Louis Groleau 2015-01-21.xlsmcode'!R2C8=2,RC[3]+1,"""")"
        ActiveCell.Offset(0, 1).Select
        ActiveCell.FormulaR1C1 = "='Louis Groleau 2015-01-21.xlsmcode'!R1C13"
        ActiveCell.Offset(0, 3).Select
        ActiveCell.FormulaR1C1 = "=IF(RC[-5]="""",RC[-4],RC[-5])"
        Selection.Copy
        Windows("#0000 Louis Groleau 2015-01-21.xlsm").Activate
        Range("I2:K2").Select
        Selection.PasteSpecial Paste:=xlPasteAllMergingConditionalFormats, Operation _
        :=xlNone, SkipBlanks:=False, Transpose:=False
        Windows("Liste des numéros ch émis année fiscale 2015.xlsm").Activate
        Range("A1048576").End(xlUp).Offset(0, 0).Select
        ActiveCell.Range(Cells(1, "A"), Cells(1, "M")).Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        ActiveCell.Range(Cells(1, "K"), Cells(1, "M")).Select
        Selection.ClearContents
        Range("A13").Select
        ActiveWorkbook.Save
        ActiveWorkbook.Close

        Windows("#0000 Louis Groleau 2015-01-21.xlsm").Activate
        Sheets("chèque").Select
        If Dir(Range("B300") & "\" & Range("b301") & ".xls") <> "" Then

        If MsgBox(" ATTENTION ATTENTION ATTENTION FICHIER EXISTANT, OUI = ÉCRASER NON =VÉRIFIER NO DE PROJET ET RECOMMENCER ", vbYesNo) <> vbYes Then Exit Sub
        Application.DisplayAlerts = False
        End If
        ActiveWorkbook.SaveAs (Range("B300") & "\" & Range("b301") & ".xls")
        Sheets("code").Select
        ActiveSheet.DrawingObjects.Delete
        Range("D4").Select

        End Sub
        0