6
votes

Prévenir le changement automatique au format de général à par exemple. pourcentage

Ma feuille de calcul est verrouillée de sorte que les utilisateurs puissent éditer des valeurs mais ne modifient pas le format des cellules. Les cellules ont du type «général» mais une validation de données permet de garantir que l'entrée est numérique.

Malgré le verrouillage, il est possible de modifier le format de la cellule en entrant des valeurs particulières. Par exemple, entrer 4% change le format en pourcentage, entrant 4 £ modifie le type à la devise, etc.

Je veux empêcher cela parce que a) la valeur stockée de la cellule peut avoir changé, par ex. 0,04 au lieu de 4 et b) Il est maintenant impossible pour l'utilisateur de changer le format de retour.

Je pourrais l'empêcher de définir le type de cellule sur numérique plutôt que général. Cependant, cela est également indésirable car il me lie à afficher un nombre fixe de décimales. Je veux que les deux "4" et "4.256" soient affichés comme tels, et il ne semble pas y avoir un moyen de le faire sans ajouter de zéros traînant à l'ancien (4.00) ou arrondi ce dernier (4.26).

S'il vous plaît quelqu'un pourrait-il me dire comment empêcher le changement automatique de formatage ou faire défaut de définir un format numérique qui fait ce que je veux.


3 commentaires

Avez-vous envisagé de définir le format sur texte ?


Vous pouvez utiliser une macro pour corriger le format après-le-fait.


Vous pouvez utiliser le type de cellule défini .. avec GUI Excel / par programme


3 Réponses :


0
votes

Utilisez cette macro dans votre feuille de calcul Manutention:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ChangedCells As Range
Dim NextChangedCell As Range
Dim Temp As String

Set ChangedCells = Intersect(Target, Range("A1:A5")) ' or you can specify any other range to be monitored for changes

If Not ChangedCells Is Nothing Then
Application.EnableEvents = False
For Each NextChangedCell In ChangedCells
    Temp = NextChangedCell.Formula
    NextChangedCell.NumberFormat = "General" ' or you can specify any other format to be forced on cells
    NextChangedCell.Value = Temp
Next NextChangedCell
Application.EnableEvents = True
End If

End Sub


0 commentaires

1
votes

imo, le seul moyen d'y parvenir d'utiliser une macro qui réinitialise le format à l'état d'origine.

Ouvrez l'éditeur VBA ( TOUT - F11 ) et double-cliquez sur la feuille que vous souhaitez avoir cette fonctionnalité.

Coller ce code dans la fenêtre principale: xxx

fait!


0 commentaires

1
votes

Nous sommes arrivés à la conclusion que cela est impossible. (Notez la question posée comment empêcher ce comportement, ne pas revenir au changement immédiatement après l'utilisation de l'utilisateur. Exécution d'une macro linge la pile d'annulation, donc ce n'est pas une solution de contournement viable.)


2 commentaires

Je suppose que le mieux que vous puissiez aller, c'est avoir une macro qui donne une msgbox, à la peur de ne pas effacer la pile d'annulation et que les gens seront moins susceptibles de le faire par accident


quelque chose comme si pas application.Itersect (mycell, plage (cible.address)) est alors que détecte pour un changement de cellule, vous pouvez faire si le format de numéro <> général puis msgbox quelque chose et la pile d'annulation restera intact.