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. P>
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. P>
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. P>
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). p>
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. p>
3 Réponses :
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
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 KBD> - F11 KBD>) et double-cliquez sur la feuille que vous souhaitez avoir cette fonctionnalité. p> Coller ce code dans la fenêtre principale: p> fait! P> p>
Nous sommes arrivés à la conclusion que cela est impossible. (Notez la question posée comment empêcher em> 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.) P>
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 code> 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.
Avez-vous envisagé de définir le format sur
texte code>?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