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
Problème : dans votre classeur il n'y a pas le début de commencement de codage du userform. Alors si c'est pour faire les choses à votre place, je passe mon chemin.
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
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
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
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
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
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.
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