Activer les macros à l'ouverture d'un fichier

Bonjour GGautier,

les 2 fonctionnent très bien. j'ai assez facilement incorporer la première dans mon code, pour l'autre je sèche je sais pas trop où l’insérer. je suis pas très doué

merci pour ton aide précieuse.

Alors si tu prend le code ci-dessous et tu le met dans ThisWorbook tout simplement Après il ne te reste plus qu'a écrie un petit message sur la Feuil1 pour demander aux utilisateurs d'activer les macros, sauf si cela et déjà il ne verront pas cette feuil ! (Supprime la ligne 'If .Saved = False Then .Save' qui n'est pas utile)

Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
    Application.ScreenUpdating = False
    With ThisWorkbook
        For Each ws In .Worksheets
            ws.Visible = xlSheetVisible
        Next ws
        .Worksheets(1).Visible = 2
    End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
    Application.ScreenUpdating = False
    With ThisWorkbook
        .Worksheets(1).Visible = -1
        For i = 2 To .Worksheets.Count
            .Worksheets(i).Visible = 2
        Next i
        If .Saved = False Then .Save
    End With
End Sub

Bon, voilà ce que j'ai essayé, bien entendu çà ne marche pas

Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
    Application.ScreenUpdating = False
    With ThisWorkbook
        For Each ws In .Worksheets
            ws.Visible = xlSheetVisible
        Next ws
        .Worksheets(5).Visible = 2
    End With

    If Worksheets("Enquête").Range("J2") = "N° XXX" Then
        MsgBox "ATTENTION FICHIER ORIGINAL" _
        & vbNewLine & vbNewLine _
        & "vous devez être un utilisateur autorisé, " _
        & "pour pouvoir le modifier. ", vbOKOnly + vbExclamation, "Enquête pale principale 365 N4 Original"

    End If
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim Utilisateur As String

    Utilisateur = InputBoxDK("Indiquez votre nom d'utilisateur !", "Authentification utilisateur")

    Select Case Utilisateur

        Case "CN13723", "Nom2", "Nom3", "Nom4"  '<--- les noms pour lesquels l'enregistrement est autorisé

        Case Else

            MsgBox "Vous n'êtes pas autorisé à enregistrer les modifications que vous avez apporté ! " _
            & vbNewLine & vbNewLine _
            & "Ce fichier et EXCEL vont être fermer. ", vbOKOnly + vbCritical, "Fermeture d'enquête pale principale 365 N4"

            Cancel = True

            Windows.Application.Quit

    End Select

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Long
    Application.ScreenUpdating = False
    With ThisWorkbook
        .Worksheets(5).Visible = -1
        For i = 2 To .Worksheets.Count
            .Worksheets(i).Visible = 2
        Next i

    End With
End Sub

Qu'est ce qui ne marche pas ? tu as un message d'erreur ? Je ne suis pas une tête en VBA du coups il me faut des infos pour essayer de trouver

Excuse moi

bien rien ne marche:

toutes les feuilles sont visibles. j'ai modifié le (1) par (5) ma feuille "Accueil" étant la 5.

je ne sais si c'est suffisant comme explication

j'ai aussi mis une partie du code au début et l'autre à la fin

Je pense qu'effectivement le problème vient du 1 changé en 5, le code à été conçus pour que ce soit la Feuil1 qui soit la feuil "Accueil", je te met le fichier en PJ télécharge le et dit moi ce qu'il en est ! De mon coté ça marche nickel même avec ton code en plus !

13test.xlsm (20.88 Ko)

En faite non

en fait çà ne marche pas vraiment les feuilles 3 à 5 sont toujours visibles. si tu prends le code que tu m'as fourni seul la feuille accueil est visible

Voilà un fichier qui marche, le code fonction bien si c'est ta première feuille qui est celle "Accueil", de plus j'ai du remplacer "InputBoxDK" par "InputBox" car moi j'avais un message d'erreur su ça ...

14test2.xlsm (18.73 Ko)

Le mieux pour toi c'est d'échanger ta feuille 5 et ta feuille 1, c'est plus simple de déplacer des cellules que de modifier du code (à mon goût)

Impossible, excel numérote les feuilles comme il veux pour preuve ma feuille Accueil est en première position mais sous VBA c'est la 5

Oui c'est ce que je dit indirectement dans mon message précédent Repère quelle est la véritable Feuil1 et utilise la pour écrie ton message de demande d'activation de macro ! As tu vu le poste que j'ai mis juste avant avec le fichier Excel Test2 déjà ?

Bonjour,

Pour le principe :

Option Explicit

Private Sub Workbook_Open()
Dim ws As Worksheet
    Application.ScreenUpdating = False
    With ThisWorkbook
        For Each ws In .Worksheets
            ws.Visible = xlSheetVisible
        Next ws
        .Worksheets("Accueil").Visible = 2
    End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ws As Worksheet
    Application.ScreenUpdating = False
    With ThisWorkbook
        .Worksheets("Accueil").Visible = -1
        For Each ws In .Worksheets
            If ws.Name <> "Accueil" Then
                ws.Visible = 2
            End If
        Next i
        'If .Saved = False Then .Save
    End With
End Sub

Merci de l'aide Jean-Eric Pourquoi faire simple quand ont peux faire compliqué ?!

En faite désolé mais le code ne fonctionne pas Pourrais tu adapter ton idée à ce fichier stp ?

10test2.xlsm (18.73 Ko)

Re,

Un erreur ? un message ?

Tu ne me fais pas un coup à la dhany ?

Cdlt.

Voilà le problème, si je supprime i avec il me dit end with sans with

err1

Re,

Remplacer i par ws…

Cdlt.

C'est tout bon merci à toi !! Je met le fichier complété avec le code de pskyl

20testok.xlsm (19.98 Ko)
Rechercher des sujets similaires à "activer macros ouverture fichier"