Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Suppression conditionnelle de ligne / dans une plage nommée

2 réponses
Avatar
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 ...]

Merci
NOAN

2 réponses

Avatar
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


Avatar
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