Je travailles souvent avec des tableaux munis de filtres. Il m'arrive de
faire des glisser sur des valeurs filtrées et j'ai remarqué que le glissé
affecté parfois des cellules non affichées. Comment eviter ce genre de
désagréement ?
J'espère avoir été sufissamment clair dans mes explications.
Bonne soirée
Philippe
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
michdenis
Bonjour,
Pour t'inspirer...
Tu copies ceci dans le ThisWorkbook de ton projetVBA.
La procédure empêche d'utiliser le "Glisser.." des valeurs de toute la plage filtrée vers une autre destination.
Cependant, tu peux toujours effectuer un "glisser" d'une cellule à l'extérieur de la plage filtrée vers une cellule de la plage filtrée.
N.B - Dans la procédure, tu dois adapter le nom de la feuille où tu appliques le filtre. Dans mon exemple c'est "Feuil1"
'-------------------------------------------- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If UCase(Sh.Name) = UCase("Feuil1") Then If Feuil1.FilterMode = True Then If Not Intersect(Target, sh.AutoFilter.Range) Is Nothing Then Application.CellDragAndDrop = False Else Application.CellDragAndDrop = True End If Else Application.CellDragAndDrop = True End If End If End Sub '--------------------------------------------
Une autre variante plus limitatif :
Pour modifier un filtre élaboré, sélectionne d'abord une cellule qui n'est pas dans la plage filtrée et modifie le filtre désiré. Aucun "glisser" n'est permis avec la plage filtrée.
'----------------------------------------- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If UCase(Sh.Name) = UCase("Feuil1") Then If Feuil1.FilterMode = True Then If Not Intersect(Target, Sh.AutoFilter.Range) Is Nothing Then Sh.Cells.Locked = False Sh.AutoFilter.Range.Locked = True Sh.Protect UserInterfaceOnly:=True Else Sh.Unprotect Sh.Cells.Locked = True End If Else Sh.Unprotect Sh.Cells.Locked = True End If End If End Sub '-----------------------------------------
"Philou36" a écrit dans le message de groupe de discussion :
Bonjour les amis,
Je travailles souvent avec des tableaux munis de filtres. Il m'arrive de faire des glisser sur des valeurs filtrées et j'ai remarqué que le glissé affecté parfois des cellules non affichées. Comment eviter ce genre de désagréement ? J'espère avoir été sufissamment clair dans mes explications. Bonne soirée Philippe
Bonjour,
Pour t'inspirer...
Tu copies ceci dans le ThisWorkbook de ton projetVBA.
La procédure empêche d'utiliser le "Glisser.." des valeurs
de toute la plage filtrée vers une autre destination.
Cependant, tu peux toujours effectuer un "glisser" d'une
cellule à l'extérieur de la plage filtrée vers une cellule de
la plage filtrée.
N.B - Dans la procédure, tu dois adapter le nom de la feuille
où tu appliques le filtre. Dans mon exemple c'est "Feuil1"
'--------------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = UCase("Feuil1") Then
If Feuil1.FilterMode = True Then
If Not Intersect(Target, sh.AutoFilter.Range) Is Nothing Then
Application.CellDragAndDrop = False
Else
Application.CellDragAndDrop = True
End If
Else
Application.CellDragAndDrop = True
End If
End If
End Sub
'--------------------------------------------
Une autre variante plus limitatif :
Pour modifier un filtre élaboré, sélectionne d'abord
une cellule qui n'est pas dans la plage filtrée et modifie
le filtre désiré. Aucun "glisser" n'est permis avec la plage filtrée.
'-----------------------------------------
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If UCase(Sh.Name) = UCase("Feuil1") Then
If Feuil1.FilterMode = True Then
If Not Intersect(Target, Sh.AutoFilter.Range) Is Nothing Then
Sh.Cells.Locked = False
Sh.AutoFilter.Range.Locked = True
Sh.Protect UserInterfaceOnly:=True
Else
Sh.Unprotect
Sh.Cells.Locked = True
End If
Else
Sh.Unprotect
Sh.Cells.Locked = True
End If
End If
End Sub
'-----------------------------------------
"Philou36" <ws@trol.com> a écrit dans le message de groupe de discussion :
uCCzgaA3KHA.5196@TK2MSFTNGP05.phx.gbl...
Bonjour les amis,
Je travailles souvent avec des tableaux munis de filtres. Il m'arrive de
faire des glisser sur des valeurs filtrées et j'ai remarqué que le glissé
affecté parfois des cellules non affichées. Comment eviter ce genre de
désagréement ?
J'espère avoir été sufissamment clair dans mes explications.
Bonne soirée
Philippe
Tu copies ceci dans le ThisWorkbook de ton projetVBA.
La procédure empêche d'utiliser le "Glisser.." des valeurs de toute la plage filtrée vers une autre destination.
Cependant, tu peux toujours effectuer un "glisser" d'une cellule à l'extérieur de la plage filtrée vers une cellule de la plage filtrée.
N.B - Dans la procédure, tu dois adapter le nom de la feuille où tu appliques le filtre. Dans mon exemple c'est "Feuil1"
'-------------------------------------------- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If UCase(Sh.Name) = UCase("Feuil1") Then If Feuil1.FilterMode = True Then If Not Intersect(Target, sh.AutoFilter.Range) Is Nothing Then Application.CellDragAndDrop = False Else Application.CellDragAndDrop = True End If Else Application.CellDragAndDrop = True End If End If End Sub '--------------------------------------------
Une autre variante plus limitatif :
Pour modifier un filtre élaboré, sélectionne d'abord une cellule qui n'est pas dans la plage filtrée et modifie le filtre désiré. Aucun "glisser" n'est permis avec la plage filtrée.
'----------------------------------------- Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If UCase(Sh.Name) = UCase("Feuil1") Then If Feuil1.FilterMode = True Then If Not Intersect(Target, Sh.AutoFilter.Range) Is Nothing Then Sh.Cells.Locked = False Sh.AutoFilter.Range.Locked = True Sh.Protect UserInterfaceOnly:=True Else Sh.Unprotect Sh.Cells.Locked = True End If Else Sh.Unprotect Sh.Cells.Locked = True End If End If End Sub '-----------------------------------------
"Philou36" a écrit dans le message de groupe de discussion :
Bonjour les amis,
Je travailles souvent avec des tableaux munis de filtres. Il m'arrive de faire des glisser sur des valeurs filtrées et j'ai remarqué que le glissé affecté parfois des cellules non affichées. Comment eviter ce genre de désagréement ? J'espère avoir été sufissamment clair dans mes explications. Bonne soirée Philippe