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 :

Code vba pour empêcher la suppression de ligne [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire de camping
    Inscrit en
    Septembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Gestionnaire de camping
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2014
    Messages : 23
    Par défaut Code vba pour empêcher la suppression de ligne
    Bonsoir à tous,
    des heures que je cherche et personne n'a visiblement eu besoin de cela.
    J'ai écris un code dans thisworkbook qui empêche de supprimer une ligne. Ca je l'ai fait, ça marche en mettant count>10, car je n'ai pas réussi à trouver comment dire que c'est une ligne dont je veux empêcher la suppression. Là déjà, si quelqu'un peut m'aider, c'est bien.
    Ensuite je voudrais que cela soit quand même possible si c'est une macro qui demande la suppression de ligne. Un code qui dit : si "demandé par macro" then exit sub else "empêche le suppression" etc...
    Je veux donc forcer l'utilisateur à utiliser mes procédures dans mes userform, plutôt que supprimer n'importe quoi sans les vérifications que j'ai incluses dans mes userform.
    Le code ci-dessous fonctionne, sauf si une procédure du userform est lancée et qui bug. Ensuite, le code dans thisworkbook ne fonctionne plus, dans tous les cas, il faut ré-ouvrir le classeur pour que ça re-fonctionne. Là aussi j'aimerai en savoir plus.

    Merci à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal target As Range)
     
     
       If target.Count > 10 Then
            With Application
                .EnableEvents = False
                .Undo
                .EnableEvents = True
            End With
        MsgBox "Ne jamais supprimer de ligne sans les formulaires !"
        End If
    End Sub
    A votre bon coeur.

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    en protégeant ta feuille et utilisant le paramètre userinterfaceonly tu protèges la feuille uniquement des actions de l'utilisateurs, et pas celles d'une procédure VBA

    je te laisse régler les bons paramètres de protection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Thisworworkbook.Worksheets("MaFeuille").Protect Password:="MotDePasse", userinterfaceonly:=True

  3. #3
    Membre averti
    Homme Profil pro
    Gestionnaire de camping
    Inscrit en
    Septembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Gestionnaire de camping
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2014
    Messages : 23
    Par défaut
    joe.levrai PRESIDENT !

    Un grand merci, je ne connaissais pas cette action et ne l'ai pas trouvé dans les tutos et forums.

    J'essaye de suite et je reviens si problème.

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tu pourrais aussi contrôler la largeur de la sélection avant de virer la personne, 10 cellules peuvent être en colonne.
    Quant à contrôler si c'est bien 1 ligne c'est plus délicat, tu ne peux pas laisser passer s'il t'en supprime 5 d'un coup

    Pour autoriser les macro tu peux aussi utiliser une variable Public suppLigOn as Boolean (dans un module standard) que tu testes au début.
    Que tu mets à True avant l'appel, rétablir à False ensuite.
    Si jamais la protection de la feuille te bloque des fonctionnalités nécessaires.
    eric

  5. #5
    Membre averti
    Homme Profil pro
    Gestionnaire de camping
    Inscrit en
    Septembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Gestionnaire de camping
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2014
    Messages : 23
    Par défaut Malheureusement...
    Citation Envoyé par serpiccio Voir le message
    joe.levrai PRESIDENT !

    Un grand merci, je ne connaissais pas cette action et ne l'ai pas trouvé dans les tutos et forums.

    J'essaye de suite et je reviens si problème.
    Voilà, j'ai essayé, et j'ai travaillé dur pour réussir à m'adapter. Je sais tout sur protect et unprotect.
    Mais malgré tous mes efforts, force est de constater que UserInterfacOnly ne fonctionne pas. En tout cas pas pour tout. Pas possible de modifier des mises en forme conditionnelles, pas possible de copier coller si une cellule destination comporte une validation, pas possible de plein d'autre choses qui pourtant dans les paramètres de la fonction protect étaient autorisées.
    A près des heures de galères, j'abandonne. Chez moi, je sais pas pourquoi, ça ne marche pas. Que se soit en plaçant le code dans thisworkbook ou thisworksheet, ou en jouant un max sur tout un tas de paramètres, on arrive toujours à une impossibilité.
    Merci pour vos réponses, je me suis remis en question grâce à vous, j'ai appris, et c'est l'essentiel.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    joli vent, pourtant ça semblait répondre à tes soucis...

  7. #7
    Membre averti
    Homme Profil pro
    Gestionnaire de camping
    Inscrit en
    Septembre 2014
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Gestionnaire de camping
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2014
    Messages : 23
    Par défaut
    Citation Envoyé par eriiic Voir le message
    joli vent, pourtant ça semblait répondre à tes soucis...
    Oui, sur papier, ça répond. Mais en pratique non.
    J'ai changé d'optique. Je galère maintenant à placer dans thisworbook un code qui copie-colle une ligne supprimée dans une feuille cachée. Que se soit avec userform ou interface utilisateur.
    Et là, comme d'hab, quand on cherche dans les forums une aide de code, on trouve tout sauf ce qu'on veut .
    Je ne trouve pas la fonction simple : si "une ligne est supprimée" then etc...
    Alors je m'oriente sur :
    compte le nombr de ligne
    si "le nombre de ligne est supprimée" then.

    Et bien ça me parait tellement simple que je n'y arrive pas.

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

Discussions similaires

  1. Code VBA pour empêcher utilisateur de supprimer une ligne
    Par serpiccio dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 10/01/2018, 11h06
  2. Ligne de Code VBA pour actualiser des données sous PPT
    Par harald78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2016, 09h27
  3. Code vba pour la suppression des lignes d'un tableau excel
    Par yosra_jemai dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/04/2013, 09h11
  4. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  5. Code VbA pour effacer ligne d'un tableau
    Par carottemémé dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/01/2011, 07h09

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