Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Question à propos de valeurs négatives pour un SpinButton

Magic_Doctor

XLDnaute Barbatruc
Bonsoir,

J'ai un SpinButton dont les valeurs appartiennent à l'intervalle [-1 ; 10]. Le pas est d'une unité. Une cellule est affectée au SpinButton.
De 0 à 10, tout est logique, à savoir qu'au fur et à mesure de l'incrément s'affiche dans la cellule : 0, puis 1, puis 2, ... , 10
En revanche, pour -1 s'affiche 65535. Pourquoi ?
Merci d'éclairer ma lanterne.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Magic_Doctor ,

A priori, c'est une restriction d'Excel quand on utilise une cellule liée à la toupie. Les valeurs doivent être positives ou nulles.
On peut passer par une cellule intermédiaire.
  • La toupie va de 0 à 11 et elle est liée à une cellule (disons B1)
  • dans la cellule C1, on place la formule =B1-1
C1 évolue bien de -1 à 10.
 

Magic_Doctor

XLDnaute Barbatruc
Merci mapomme pour cette explication.
Pas tout compris dans les détails, en revanche il semblerait donc que l'incrément maximum d'un SpinButton soit 32767, pour des nombres positifs. Ça laisse quand même de la marge...
Mais c'est quand même bizarre.

J'en profite pour poser cette question : peut-on s'affranchir d'une cellule liée au SpinButton faire en sorte que tout se passe dans une macro ?
 

mapomme

XLDnaute Barbatruc
Supporter XLD
peut-on s'affranchir d'une cellule liée au SpinButton faire en sorte que tout se passe dans une macro ?
Voir les spinbuttons sur l'onglet Feuil2. Les codes sont dans le module de cet onglet.
Les limites des spinbuttons sont définies dans leurs propriétés (min et max). On voit qu'on s'affranchit des limites fixées par Excel.
 

Pièces jointes

  • Tiré par cheveux-v2.xlsm
    27.4 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
tiens une idée parmi tant d'autres avec macro
avec un spinbutton activX tu lui met ça dans son events

VB:
Private Sub SpinButton1_Change()
ActiveWorkbook.Names.Add Name:="getvalSpin", RefersTo:=SpinButton1.Value
End Sub

et dans la/les cellule(s) que tu veux tu met
=getvalspin
 

patricktoulon

XLDnaute Barbatruc
tien un exemple
avec un cellule liée tu change la cellue ca change le spinbutton
avec une cellule non liée non par contre on peut y remedier de cette facon
un spinbutton activX dans ta feuille
je le lie a la cellule B6
dans la cellule C6 je met =getvalspin

dans le module de la feuille

je met l'event du spinbutton
VB:
Private Sub SpinButton1_Change()
ActiveWorkbook.Names.Add Name:="getvalSpin", RefersTo:=SpinButton1.Value
If Not [c6].HasFormula Then [c6].Formula = "=getvalspin"
End Sub
tu l'aura remarqué j'implante la formule si elle n'y est pas en C6

ensuite j'ajoute l'event change dans le module de la feuille


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$6" Then Feuil1.SpinButton1 = Target.Value
End Sub

résultat elle ont toutes les deux le même comportement sauf que la C6 VA jusqu’à -1 par contre la B6 me donne 65535

démo
 

Magic_Doctor

XLDnaute Barbatruc
Re,
dans ce cas là la question ne se pose pas et ce fil n'a pas lieu d'etre
Bien au contraire ! Je suis sur ce forum depuis suffisamment longtemps pour connaître quelques règles de base. Je me demandais comment se débarrasser de ce 65535 qui m'énerve. La réponse de mapomme m'a donné la solution.
Quand on navigue dans l'intervalle [-1 ; 10] et qu'en fait Excel renvoie l'intervalle [65535 ; 10], on ne peut que se dire : "qu'est-ce que c'est encore cette connerie excelienne ?"
Bref, même si au final le résultat est strictement le même, personnellement je préfère écrire :
VB:
If inc = -1 Or inc = 10 Then Unload USF_DMS
plutôt que :
VB:
If inc = 65535 Or inc = 10 Then Unload USF_DMS
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…