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 :

Interdire la suppression de mes feuilles Excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2017
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Interdire la suppression de mes feuilles Excel
    Bonjour à tous,

    J'ai developpé un petit outil qui permet aux utilisateurs de selectionner la feuille qui correspond à leur profil (par pays, métier, etc. Les utilisateurs doivent cocher des checkbox et selon leurs choix, des feuilles apparaissent ou disparaissent.

    Mon problème est que parfois les utilisateurs effacent par mauvaises habitudes les onglets qui ne les regardent pas.

    Je cherche à leur interdire la suppression de ces feuilles sans arreter la macro. En effet, j'ai essayé de protéger la structure de mon classeur, celà a fait bloquer ma macro.

    J'ai cherché un moyen pour griser la commande supprimer mais honnetement je sais pas faire ....


    Pouvez-vous m'aider svp?

    Cdt
    Iho

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5

  3. #3
    Membre à l'essai
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2017
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Interdire la suppression des feuilles dans EXCEL sans arréter la Macro...
    Bonsoir Joe et le Forum,

    J'ai essayé d'appliquer cette solution mais elle bloque ma macro, à savoir quand l'utilisateur coche sur la checkbox et qu'il appuit sur le bouton pour faire apparaitre la feuille adéquate et bien rien ne se passe.... :/

    Y a il une solution?

    Merci pour votre réflexion.

    CDT

  4. #4
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Points : 505
    Points
    505
    Par défaut
    Bonjour,

    Cela me semble étrange. Pourrait-on avoir le code de la macro "bloquée"?

    Cdt,
    Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas

  5. #5
    Membre à l'essai
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Octobre 2017
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2017
    Messages : 19
    Points : 19
    Points
    19
    Par défaut Interdire la suppression de mes feuilles Excel
    Oui bien sur! et Merci pour votre réactivité!

    Voilà le code:

    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
    41
    42
    43
    44
    45
    46
    Private Sub Btn_Template_Click()
     
    Dim Wks As Worksheet
    Dim cbx As CheckBox
     
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
     
     
    If cbx_FRA = True Then
    wks_FRA.Visible = xlSheetVisible
    Sheets("Comments_ACTUAL_FRA").Select
    Else
    wks_FRA.Visible = xlSheetVeryHidden
    End If
     
    If cbx_ITA = True Then
    wks_ITA.Visible = xlSheetVisible
    Sheets("Comments_ACTUAL_ITA").Select
    Else
    wks_ITA.Visible = xlSheetVeryHidden
    End If
     
    If cbx_GBR = True Then
    wks_GBR.Visible = xlSheetVisible
    Sheets("Comments_ACTUAL_GBR").Select
    Else
    wks_GBR.Visible = xlSheetVeryHidden
    End If
     
    If cbx_DEU = True Then
    wks_DEU.Visible = xlSheetVisible
    Sheets("Comments_ACTUAL_DEU").Select
    Else
    wks_DEU.Visible = xlSheetVeryHidden
    End If
     
    If cbx_NLD = True Then
    wks_NLD.Visible = xlSheetVisible
    Sheets("Comments_ACTUAL_NLD").Select
    Else
    wks_NLD.Visible = xlSheetVeryHidden
    End If
     
    Application.DisplayAlerts = True
    End Sub

  6. #6
    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
    Bonjour,

    Remet ton ScreenUpdating à True à la fin.
    Ça pourrait peut-être aider...
    MPi²

  7. #7
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2014
    Messages
    393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 393
    Points : 505
    Points
    505
    Par défaut
    Code corrigé d'après les dires de parmi (ce qui est tout à fait correct par ailleurs) :
    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
    41
    42
    43
    44
    45
    46
     
    Private Sub Btn_Template_Click()
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False
     
        Dim Wks As Worksheet
        Dim cbx As CheckBox
     
        If cbx_FRA = True Then
            wks_FRA.Visible = xlSheetVisible
            Sheets("Comments_ACTUAL_FRA").Select
        Else
            wks_FRA.Visible = xlSheetVeryHidden
        End If
     
        If cbx_ITA = True Then
            wks_ITA.Visible = xlSheetVisible
            Sheets("Comments_ACTUAL_ITA").Select
        Else
            wks_ITA.Visible = xlSheetVeryHidden
        End If
     
        If cbx_GBR = True Then
            wks_GBR.Visible = xlSheetVisible
            Sheets("Comments_ACTUAL_GBR").Select
        Else
            wks_GBR.Visible = xlSheetVeryHidden
        End If
     
        If cbx_DEU = True Then
            wks_DEU.Visible = xlSheetVisible
            Sheets("Comments_ACTUAL_DEU").Select
        Else
            wks_DEU.Visible = xlSheetVeryHidden
        End If
     
        If cbx_NLD = True Then
            wks_NLD.Visible = xlSheetVisible
            Sheets("Comments_ACTUAL_NLD").Select
        Else
            wks_NLD.Visible = xlSheetVeryHidden
        End If
     
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True
    End Sub
    Après, j'ai de petites questions pour aller un peu plus loin afin de t'aider :
    - Pourquoi utilises-tu des ".select" (quelle est ton intention en faisant cela) ? (J'ai peur que tu en fasses une mauvaise utilisation sans le vouloir)
    - Le nombre de Checkbox est-il amené à évoluer ? (Il pourrait être intéressant de généraliser le code pour qu'il fonctionne même avec des Checkbox en plus ou en moins)
    - Tes Checkbox sont-elles sur une feuille du classeur ou un UserForm ?
    Politesse, respect et humilité sont les 3 éléments nécessaires dans une bonne relation d'entraide. Nous faisons cela par plaisir d'aider, ne nous le retirez pas

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Bonjour,

    il existe un evenement Workbook_SheetBeforeDelete qui serte même si il ne permet pas d'annuler directement la suppression de la feuille peut avec un aménagement permettre d’empêcher la suppression d'une ou des feuilles

    L'idée est de protéger à la volé et sans mot de passe le classeur des que l'on détecte une tentative de suppression.

    Donc le code qui suit est à coller dans ThiWorkBook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_SheetBeforeDelete(ByVal Sh As Object)
        'ici tu ajoute la ou les conditions d'annulation de suppression de feuille
        ' du genre : si Sh.name n'appartient pas à utilisateur lambda alors
        ActiveWorkbook.Protect Structure:=True, Windows:=False 'cette ligne aura pour effet d’empêcher la suppression
    End Sub
     
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
        'ici on enlève la protection du classeur des qu'une autre feuille est sélectionnée
        ActiveWorkbook.Protect Structure:=False, Windows:=False
    End Sub
    On trouve sur le nette d'autre méthode qui utilise cet evenement et fonctionne par la copie de la feuille supprimée puis renommée avec le nom de la feuille supprimée.
    Cette méthode a pour inconvénient de détruire tous les liens de formule avec la feuille.
    la méthode que je propose n’affecte en rien les formules.

Discussions similaires

  1. [XL-2010] imprimer mes feuilles excel avec une Userforme
    Par diss10 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2016, 16h17
  2. [XL-2010] Imprimer mes feuilles Excel avec une userform
    Par diss10 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/07/2016, 21h37
  3. [AC-2010] Suppression d'une feuille Excel sans avertissement
    Par _C14_ dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/05/2012, 12h17
  4. [XL-2003] Interdir la suppression d'une feuille
    Par Brigand1936 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/01/2011, 14h25
  5. [XL-2007] Comment interdire la suppression d'une feuille ?
    Par mobiclick dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 01/07/2009, 08h37

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