Suppression conditionnelle de ligne / dans une plage nommée
2 réponses
noan59
Bonjour,
Promis juré, j'ai cherché - sans réussite :'(
En fait je souhaiterais que les utilisateurs puissent supprimer certaines
lignes mais uniquement si elles se situent dans une certaine place nommée.
Pour info, ces lignes sont protégées.
J'ai donc fait au préalable une macro qui déprotége / supprime la ligne
sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce système les
utilisateurs pourraient aussi supprimer d'autres lignes en dehors de leur
zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à rajouter
dans ma macro de type [Si la sélection précédente fait partie de la plage
nommée "saisie" alors ...]
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anonymousA
bonjour,
à rajouter au début dans ta proc de suppression de ligne .Permet les selections non contigues mais il faudra gérer les suppressions de ligne en rapport avec les cellules non contigues séelectionnées bien que cette dernière soit vraie aussi sans cette procédure. Ici la plage nommée se dénomme toto et est une plage nommée de niveau classeur.
flag = 1
For Each are In Selection.Areas For Each c In are.Columns(1).Cells If Not Intersect(c, Range("toto")) Is Nothing Then Else flag = 0 Exit For End If Next Next
If flag <> 0 Then Exit Sub Else 'ici faire ta procédure de suppression de lignes en question End If
A+
Bonjour, Promis juré, j'ai cherché - sans réussite :'(
En fait je souhaiterais que les utilisateurs puissent supprimer certaines lignes mais uniquement si elles se situent dans une certaine place nommée. Pour info, ces lignes sont protégées.
J'ai donc fait au préalable une macro qui déprotége / supprime la ligne sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce système les utilisateurs pourraient aussi supprimer d'autres lignes en dehors de leur zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à rajouter dans ma macro de type [Si la sélection précédente fait partie de la plage nommée "saisie" alors ...]
Merci NOAN
bonjour,
à rajouter au début dans ta proc de suppression de ligne .Permet les
selections non contigues mais il faudra gérer les suppressions de ligne
en rapport avec les cellules non contigues séelectionnées bien que cette
dernière soit vraie aussi sans cette procédure.
Ici la plage nommée se dénomme toto et est une plage nommée de niveau
classeur.
flag = 1
For Each are In Selection.Areas
For Each c In are.Columns(1).Cells
If Not Intersect(c, Range("toto")) Is Nothing Then
Else
flag = 0
Exit For
End If
Next
Next
If flag <> 0 Then
Exit Sub
Else
'ici faire ta procédure de suppression de lignes en question
End If
A+
Bonjour,
Promis juré, j'ai cherché - sans réussite :'(
En fait je souhaiterais que les utilisateurs puissent supprimer certaines
lignes mais uniquement si elles se situent dans une certaine place nommée.
Pour info, ces lignes sont protégées.
J'ai donc fait au préalable une macro qui déprotége / supprime la ligne
sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce système les
utilisateurs pourraient aussi supprimer d'autres lignes en dehors de leur
zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à rajouter
dans ma macro de type [Si la sélection précédente fait partie de la plage
nommée "saisie" alors ...]
à rajouter au début dans ta proc de suppression de ligne .Permet les selections non contigues mais il faudra gérer les suppressions de ligne en rapport avec les cellules non contigues séelectionnées bien que cette dernière soit vraie aussi sans cette procédure. Ici la plage nommée se dénomme toto et est une plage nommée de niveau classeur.
flag = 1
For Each are In Selection.Areas For Each c In are.Columns(1).Cells If Not Intersect(c, Range("toto")) Is Nothing Then Else flag = 0 Exit For End If Next Next
If flag <> 0 Then Exit Sub Else 'ici faire ta procédure de suppression de lignes en question End If
A+
Bonjour, Promis juré, j'ai cherché - sans réussite :'(
En fait je souhaiterais que les utilisateurs puissent supprimer certaines lignes mais uniquement si elles se situent dans une certaine place nommée. Pour info, ces lignes sont protégées.
J'ai donc fait au préalable une macro qui déprotége / supprime la ligne sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce système les utilisateurs pourraient aussi supprimer d'autres lignes en dehors de leur zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à rajouter dans ma macro de type [Si la sélection précédente fait partie de la plage nommée "saisie" alors ...]
Merci NOAN
anonymousA
erratum. il faut bien sur écrire If flag =0 au lieu de If flag <> 0
bonjour,
à rajouter au début dans ta proc de suppression de ligne .Permet les selections non contigues mais il faudra gérer les suppressions de ligne en rapport avec les cellules non contigues séelectionnées bien que cette dernière soit vraie aussi sans cette procédure. Ici la plage nommée se dénomme toto et est une plage nommée de niveau classeur.
flag = 1
For Each are In Selection.Areas For Each c In are.Columns(1).Cells If Not Intersect(c, Range("toto")) Is Nothing Then Else flag = 0 Exit For End If Next Next
If flag <> 0 Then Exit Sub Else 'ici faire ta procédure de suppression de lignes en question End If
A+
Bonjour, Promis juré, j'ai cherché - sans réussite :'( En fait je souhaiterais que les utilisateurs puissent supprimer certaines lignes mais uniquement si elles se situent dans une certaine place nommée. Pour info, ces lignes sont protégées. J'ai donc fait au préalable une macro qui déprotége / supprime la ligne sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce système les utilisateurs pourraient aussi supprimer d'autres lignes en dehors de leur zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à rajouter dans ma macro de type [Si la sélection précédente fait partie de la plage nommée "saisie" alors ...]
Merci NOAN
erratum. il faut bien sur écrire If flag =0 au lieu de If flag <> 0
bonjour,
à rajouter au début dans ta proc de suppression de ligne .Permet les
selections non contigues mais il faudra gérer les suppressions de ligne
en rapport avec les cellules non contigues séelectionnées bien que cette
dernière soit vraie aussi sans cette procédure.
Ici la plage nommée se dénomme toto et est une plage nommée de niveau
classeur.
flag = 1
For Each are In Selection.Areas
For Each c In are.Columns(1).Cells
If Not Intersect(c, Range("toto")) Is Nothing Then
Else
flag = 0
Exit For
End If
Next
Next
If flag <> 0 Then
Exit Sub
Else
'ici faire ta procédure de suppression de lignes en question
End If
A+
Bonjour,
Promis juré, j'ai cherché - sans réussite :'(
En fait je souhaiterais que les utilisateurs puissent supprimer
certaines lignes mais uniquement si elles se situent dans une certaine
place nommée.
Pour info, ces lignes sont protégées.
J'ai donc fait au préalable une macro qui déprotége / supprime la
ligne sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce
système les utilisateurs pourraient aussi supprimer d'autres lignes en
dehors de leur zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à
rajouter dans ma macro de type [Si la sélection précédente fait partie
de la plage nommée "saisie" alors ...]
erratum. il faut bien sur écrire If flag =0 au lieu de If flag <> 0
bonjour,
à rajouter au début dans ta proc de suppression de ligne .Permet les selections non contigues mais il faudra gérer les suppressions de ligne en rapport avec les cellules non contigues séelectionnées bien que cette dernière soit vraie aussi sans cette procédure. Ici la plage nommée se dénomme toto et est une plage nommée de niveau classeur.
flag = 1
For Each are In Selection.Areas For Each c In are.Columns(1).Cells If Not Intersect(c, Range("toto")) Is Nothing Then Else flag = 0 Exit For End If Next Next
If flag <> 0 Then Exit Sub Else 'ici faire ta procédure de suppression de lignes en question End If
A+
Bonjour, Promis juré, j'ai cherché - sans réussite :'( En fait je souhaiterais que les utilisateurs puissent supprimer certaines lignes mais uniquement si elles se situent dans une certaine place nommée. Pour info, ces lignes sont protégées. J'ai donc fait au préalable une macro qui déprotége / supprime la ligne sélectionnée / reprotège la feuille. Et le bug c'est qu'avec ce système les utilisateurs pourraient aussi supprimer d'autres lignes en dehors de leur zone de saisie et ça je ne le souhaite pas.
Quelqu'un aurait-il la solution ? Le top ce serait un code VBA à rajouter dans ma macro de type [Si la sélection précédente fait partie de la plage nommée "saisie" alors ...]