XL 2019 Afficher le résultat des cellules dans TextBox modifiable avec des toupilles

Yann71

XLDnaute Occasionnel
Bonjour la com, j'espère que vous allez bien malgré la situation qui nous préoccupe tous.
J''ai un User avec des toupilles qui incrémente des nombres sur mon classeur. Le soucis
c'est que lorsque j'ouvre l'user lorsque je veux modifier le résultat de ne s'affiche pas et
il repart directement depuis le nombre "1". Ce que je souhaite c'est qu'il continue à incrémenté
depuis le nombre affiché.
En pièce joint mon fichier
 

Pièces jointes

  • Classeur1.xlsm
    125.5 KB · Affichages: 19

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Oui, désolé, en double cliquant sur votre user forme, l'éditeur affichait les lignes vides du bas de votre user forme.

Sinon, à votre place, si les valeurs sont comprises entre 0 et 100 (min et max des spinbutton) je ne m'occuperait que de modifier les valeurs des spinbuttons à l' initialisation du userform :
VB:
Private Sub UserForm_Initialize()
   With Sheets("MODIF DES AGES")
   SpinButton2.Value = .Range("I2").Value
   SpinButton9.Value = .Range("I3").Value
   SpinButton15.Value = .Range("I4").Value
   End With
End Sub

Et sur changement des valeurs de spinbutton, afficher leur valeur dans les textBox :
Code:
Private Sub SpinButton2_Change()
TextBox2.Value = SpinButton2.Value
End Sub

Private Sub SpinButton9_Change()
TextBox8.Value = SpinButton9.Value
End Sub

A l'enregistrement, vous n'aurez qu'à enregistrer les valeurs courantes des spinbuttons dans les cellules, sans vous préocuper des textbox, ces derniers étants Locked = true

cordialement

[Aparté] hello @mapomme :) [/Aparté]
 

Yann71

XLDnaute Occasionnel
Bonjour @Yann71, @Roblochon,

Utilisez la procédure Private Sub UserForm_Initialize

Un exemple pour initialiser les deux premiers TextBox. A vous de compléter pour les autres 16 TextBox
VB:
Private Sub UserForm_Initialize()
   TextBox1 = Range("h2")
   TextBox2 = Range("i2")
End Sub
Bonjour mapomme, merci pour ton intervention. J'ai fait le fichier avec ton code, mais il y a un problème. Attends avant d'ouvrir l'user clique sur les cellules de la colonne "H" et tu verra que dans
les cellules 2,3,4,9,10,11,12,15,16,17 de celle-ci il y a des formules et lorsque tu ouvres l'user ces formules disparaissent. Comment y remédier. Je joint le fichier avec ton code
 

Pièces jointes

  • Classeur2.xlsm
    128.2 KB · Affichages: 1

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Dans le fichier joint vous trouverez une façon de faire en nommant et indexant (1 à 6) vos controles (seuls ceux des 2 premiers frame):
TbMin1,...TbMin6 puis TbMax1,...,TbMax6 et encore Sp1,..., Sp6
Et le code suivant

VB:
Dim Lignes(1 to 6) ' conservera les numéros de lignes de cellules idoines au spinbutton et textbox
Private Sub Sp1_Change(): ChangeMax (1): End Sub
Private Sub Sp2_Change(): ChangeMax (2): End Sub
Private Sub Sp3_Change(): ChangeMax (3): End Sub
Private Sub Sp4_Change(): ChangeMax (4): End Sub
Private Sub Sp5_Change(): ChangeMax (5): End Sub
Private Sub Sp6_Change(): ChangeMax (6): End Sub

Private Sub ChangeMax(index As Integer)
    Me.Controls("TbMax" & index) = Me.Controls("Sp" & index)
End Sub

Private Sub UserForm_Initialize()
   Dim i As Integer
   
   With Sheets("MODIF DES AGES")
        For i = 1 To 6
            Lignes(i) = Array(2, 3, 4, 9, 10, 11)(i - 1)
            Me.Controls("Sp" & i).Value = .Range("I" & Lignes(i))
            Me.Controls("TbMin" & i).Value = .Range("H" & Lignes(i))
        Next i
   End With
End Sub

Cordialement
 

Pièces jointes

  • SpinEtTextBox.xlsm
    127 KB · Affichages: 8

Yann71

XLDnaute Occasionnel
Re,

Dans le fichier joint vous trouverez une façon de faire en nommant et indexant (1 à 6) vos controles (seuls ceux des 2 premiers frame):
TbMin1,...TbMin6 puis TbMax1,...,TbMax6 et encore Sp1,..., Sp6
Et le code suivant

VB:
Dim Lignes(1 to 6) ' conservera les numéros de lignes de cellules idoines au spinbutton et textbox
Private Sub Sp1_Change(): ChangeMax (1): End Sub
Private Sub Sp2_Change(): ChangeMax (2): End Sub
Private Sub Sp3_Change(): ChangeMax (3): End Sub
Private Sub Sp4_Change(): ChangeMax (4): End Sub
Private Sub Sp5_Change(): ChangeMax (5): End Sub
Private Sub Sp6_Change(): ChangeMax (6): End Sub

Private Sub ChangeMax(index As Integer)
    Me.Controls("TbMax" & index) = Me.Controls("Sp" & index)
End Sub

Private Sub UserForm_Initialize()
   Dim i As Integer
  
   With Sheets("MODIF DES AGES")
        For i = 1 To 6
            Lignes(i) = Array(2, 3, 4, 9, 10, 11)(i - 1)
            Me.Controls("Sp" & i).Value = .Range("I" & Lignes(i))
            Me.Controls("TbMin" & i).Value = .Range("H" & Lignes(i))
        Next i
   End With
End Sub

Cordialement
Merci pour ta réponse mais lorsque j'ouvre le fichier cela ne fonctionne pas. Je peux modifier sur l'user mais les modifications n'apparaissent pas sur la feuille
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

J'ai répondu à la demande telle que formulée. Alors la prochaine fois soyez plus précis dans vos questions.

Si c'est de la modification en direct que vous voulez alors :
VB:
Private Sub UserForm_Initialize()
   Dim i As Integer
   
   With Sheets("MODIF DES AGES")
        For i = 1 To 6
            Lignes(i) = Array(2, 3, 4, 9, 10, 11)(i - 1)
            Me.Controls("Sp" & i).ControlSource = "'MODIF DES AGES'!" & .Range("I" & Lignes(i)).Address
            Me.Controls("TbMax" & i).ControlSource = "'MODIF DES AGES'!" & .Range("I" & Lignes(i)).Address
            Me.Controls("TbMin" & i).Value = .Range("H" & Lignes(i)).Value
        Next i
   End With
End Sub

Je vous laisse analyser tout ça.
M'est avis qu'il vous faudra contrôler que les valeurs ne dépassent pas les minis de la colonne H.
 

Yann71

XLDnaute Occasionnel
Re,

J'ai répondu à la demande telle que formulée. Alors la prochaine fois soyez plus précis dans vos questions.

Si c'est de la modification en direct que vous voulez alors :
VB:
Private Sub UserForm_Initialize()
   Dim i As Integer
  
   With Sheets("MODIF DES AGES")
        For i = 1 To 6
            Lignes(i) = Array(2, 3, 4, 9, 10, 11)(i - 1)
            Me.Controls("Sp" & i).ControlSource = "'MODIF DES AGES'!" & .Range("I" & Lignes(i)).Address
            Me.Controls("TbMax" & i).ControlSource = "'MODIF DES AGES'!" & .Range("I" & Lignes(i)).Address
            Me.Controls("TbMin" & i).Value = .Range("H" & Lignes(i)).Value
        Next i
   End With
End Sub

Je vous laisse analyser tout ça.
M'est avis qu'il vous faudra contrôler que les valeurs ne dépassent pas les minis de la colonne H.
Dsl, et merci pour votre aide. J'essayerai de me montrer plus précis. Vous m'avez bien aidé pour ce projet et je vous en remercie. Je vous souhaite ainsi qu'à la com une bonne après-midi
 

Yann71

XLDnaute Occasionnel
Bonjour @Yann71, @Roblochon,

Utilisez la procédure Private Sub UserForm_Initialize

Un exemple pour initialiser les deux premiers TextBox. A vous de compléter pour les autres 16 TextBox
VB:
Private Sub UserForm_Initialize()
   TextBox1 = Range("h2")
   TextBox2 = Range("i2")
End Sub
Merci mapomme pour ton aide, Roblochon à trouvé la solution, mais je te remercie pour ton intervention. Bonne après-midi.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 939
Membres
101 844
dernier inscrit
pktla