XL 2019 Ralentissement bloqué la saisie mais pas la selection Répondre

cyr2il

XLDnaute Nouveau
Bonjour,
Je suis entrain de travailler sur un fichier pour gérer un stock. Afin d'éviter les erreurs de saisie, un stock négatif et que les operateurs supprime les formules j'ai donc décider de passer par un formulaire qui s'ouvre a l'appuie de la touche "entrée" quand on est sur une cellule. Jusque la tout vas bien. En revanche la saisie était possible sans passé par le formulaire. Pour contourner le problème j'ai commencé par simuler un Ctrl + Z avec SendKeys en revanche cette solution rentrée en confusion avec le pad numérique et le désactivait aléatoirement.
J'ai donc chercher une autre solution et j'ai trouvé ceci que j'ai mis dans un module et que j'appel depuis mes différentes feuilles :

Code:
Sub SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    Dim PlageStock As Range, PlageInventaire As Range
    Set PlageInventaire = [A5:B300]: Set PlageStock = [K5:VJ300]
    If Not Intersect(Target, PlageStock) Is Nothing Then
        ActiveSheet.Protect "1", Contents:=True, userInterfaceOnly:=True
        Intersect(Target, PlageStock).Select
    End If
    If Not Intersect(Target, PlageInventaire) Is Nothing Then
        ActiveSheet.Protect "1", Contents:=True, userInterfaceOnly:=True
        Intersect(Target, PlageInventaire).Select
    End If
End Sub

Le problème c'est que cette solution ralenti énormément la navigation a l'aide des flèche directionnelle ... Puisque si je comprend bien celle ci ôte la protection a chaque changement de sélection. (Je l'ai aussi essayer dans une feuille dans passé par un module mais aucune différence ...)
Ma protection est configuré comme ci-dessous :
image
J'ai aussi besoin de pouvoir utiliser les regroupements présent dans toutes mes feuilles, que j'ai autoriser a l'aide de ce code :

Code:
Private Sub Workbook_Open()
    Dim Feuille As Worksheet
    For Each Feuille In ThisWorkbook.Worksheets
        With Feuille
            .EnableAutoFilter = True
            .EnableOutlining = True
            .Protect "1", Contents:=False, userInterfaceOnly:=True
        End With
    Next
End Sub

Ma question est la suivante : Comment puis-je faire pour pouvoir permettre la sélection et l'utilisation des regroupements tout en verrouillant la modification manuel et surtout sans avoir de ralentissement ? Sachant que la touche "entrée" est obligatoire pour l'ouverture du formulaire en terme d'ergonomie d'utilisation ...

Par avance merci pour votre aide :)
 

TooFatBoy

XLDnaute Barbatruc
En même temps c'est de leur faute s'il ne faisait pas autant d'erreur de saisie je n'aurais pas besoin de leur faire un autre fichier ! 😂
Oui, je connais trop bien ce problème... si les gens utilisaient les feuilles normalement il n'y aurait pas besoin de développer des codes qui compliquent tout, simplement pour tenter de protéger des cellules contenant des formules et qui ne devraient donc pas être touchées !...

Je pense que le message d'alerte est au niveau de l'interface d'Excel et ne peut donc pas être géré normalement en VBA (à moins peut-être de faire une petite usine à gaz).
 
Dernière édition:

cyr2il

XLDnaute Nouveau
Oups pas vu le début de ta réponse avec le DisplayAlert, heuuu ... bah comme la valeur par défaut est à "True" je suis parti du principe qu'il n'était pas nécessaire, si ?

Je pense aussi ... J'ai mis un point d'arret sur chaque sub proposer Excel je rentre dans aucun lors de l'essaie de saisie hors form ... Tu aurais une idée de solution vers quoi me tournée autre que du VBA ? Genre le shell windows, le registre, ... ? Quitte a complètement supprimer l'existence de ce message dans n'importe qu'elle fichier excel !
 

TooFatBoy

XLDnaute Barbatruc
Oups pas vu le début de ta réponse avec le DisplayAlert, heuuu ... bah comme la valeur par défaut est à "True" je suis parti du principe qu'il n'était pas nécessaire, si ?
C'est de ma faute : j'ai édité le message pour ajouter les deux premières lignes... :(
Tu as peut-être raison. Je ne sais pas exactement.
Perso je préfère tout de même préciser pour être sûr. Mais si ça fonctionne comme ça, alors tant mieux. 👍


Je pense aussi ... J'ai mis un point d'arret sur chaque sub proposer Excel je rentre dans aucun lors de l'essaie de saisie hors form ... Tu aurais une idée de solution vers quoi me tournée autre que du VBA ? Genre le shell windows, le registre, ... ? Quitte a complètement supprimer l'existence de ce message dans n'importe qu'elle fichier excel !
Non, pas la moindre idée hélas. Mais nul doute que quelqu'un ici saura te répondre. ;)
 

cyr2il

XLDnaute Nouveau
Bonjour,

Je souhaité pouvoir sélectionner une cellule mais la modifié uniquement via un formulaire. La solution que j'avais crée ralentissait énormément mon fichier car le selection_change s'effectuer des que je changeais de cellule et était en contradiction avec ma fonction dans mon Wookbook_open. (Un autoriser la modif de contenu et l'autre non) donc en gros cela faisait enlever, remettre, enlever, ... !
J'ai donc supprimer mon selection_change et travailler uniquement avec mon Workbook_Open.
 

Discussions similaires

Statistiques des forums

Discussions
314 611
Messages
2 111 147
Membres
111 051
dernier inscrit
MANUREVALAND