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 :

Supprimer sauf la ligne 7 [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut Supprimer sauf la ligne 7
    Bonjour,

    Avec le code ci-dessous je supprime après sélection une ou plusieurs lignes qui se trouvent dans un tableau.

    Serait-il possible d'interdire à l'utilisateur de supprimer la ligne 7 de cette feuille ou de ce tableau en sachant que celui-ci comprend la zone B7:HW7 ?

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Supprimer_Clic()
    If MsgBox("Etes-vous certain de vouloir supprimer la ou les lignes sélectionnées ?", vbYesNo, "Demande de confirmation") = vbYes Then
    ActiveSheet.Unprotect "ab"
    Selection.EntireRow.Delete
    ActiveSheet.Protect "ab", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowFiltering:=True
    End If
    End Sub

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Si tu supprimes la ligne 5, la prochaine fois, la ligne 7 sera la ligne 6. donc ton critère "ne pas supprimer la ligne 7" devient biaisé.

  3. #3
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Bonjour Mercatog,

    Les lignes de 1 à 6 sont toujours verrouillées, les données de mon tableau commence en ligne 7 la ligne 6 contient les titres du tableau.

    Merci.

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Essaies cette proposition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Plage As Range
     
    If MsgBox("Etes-vous certain de vouloir supprimer la ou les lignes sélectionnées ?", vbYesNo, "Demande de confirmation") = vbYes Then
        Set Plage = Selection.EntireRow
        If Plage.Address <> "$7:$7" Then
            If Not Intersect(Plage, Rows(7)) Is Nothing And Plage.Row > 6 Then
                If Plage.Row = 7 Then Set Plage = Intersect(Plage, Plage.Offset(1))
            End If
            Plage.Delete
            Range("A7").Select
            Set Plage = Nothing
        End If
    End If

  5. #5
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Merci, j'ai ajouté le code pour déverrouiller et ça fonctionne, la ligne 7 n'est pas supprimée et mon curseur revient en B7, j'aurais bien voulu en informer l'utilisateur si possible avec un message du genre : vous avez sélectionnez la ligne 7 pour la supprimer cette action est impossible !

    Bon dimanche et encore merci.

    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
    Sub Supprimer_Clic()
    ActiveSheet.Unprotect ("ab")
    Dim Plage As Range
    Dim B As Long
     
    If MsgBox("Etes-vous certain de vouloir supprimer la ou les lignes sélectionnées ?", vbYesNo, "Demande de confirmation") = vbYes Then
        Set Plage = Selection.EntireRow
        If Plage.Address <> "$7:$7" Then
            If Not Intersect(Plage, Rows(7)) Is Nothing And Plage.Row > 6 Then
                B = 8 - Plage.Row
                If B > 0 Then Set Plage = Intersect(Plage, Plage.Offset(B))
            End If
            Plage.Delete
            Range("B7").Select
            Set Plage = Nothing
        End If
    End If
    ActiveSheet.Protect ("ab")
    End Sub

  6. #6
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    juste après la ligne 15 de ton code, ajoute ces 2 lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Else
            MsgBox "vous avez sélectionné la ligne 7 pour la supprimer. Cette action est impossible !"

  7. #7
    Membre régulier Avatar de Nounours1
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 439
    Points : 116
    Points
    116
    Par défaut
    Merci beaucoup c'est parfait.

    Bonne soirée

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 12/02/2012, 21h23
  2. supprimer toutes les lignes d'un flexgrid sauf la ligne de titre
    Par cari dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 11/08/2006, 10h39
  3. Supprimer toutes les lignes et colonnes d'un tableau
    Par pekka77 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/12/2005, 11h26
  4. [HTML] Supprimer le multi ligne d'une zone de text
    Par Furius dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 29/11/2005, 14h49
  5. Supprimer la premiere ligne d'un fichier
    Par Kahiba dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2003, 10h18

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