Comment programmer la valeur maximale toupie soit la valeur du K1en VBA?
h
Bonsoir Forum,
Svp comment modifier ce code vba excel dans l'activation feuil PROG_passe mettre à jour le code spécialement pour que la valeur maximale toupie pour que la valeur max soit la valeur de la cellule K1 ;mot de passe : taper 3 fois espace
Merci Bq.
Private Sub Worksheet_Activate()
Dim wsBase As Worksheet
Dim wsProg As Worksheet
Dim lastRow As Long
Dim rangeToCopy As Range
Dim i As Long
Dim maxValue As Double
Dim spinner As Object
Dim ctrl As Object
' Définir les feuilles
Set wsBase = ThisWorkbook.Sheets("Base_passe")
Set wsProg = ThisWorkbook.Sheets("PROG_passe")
' Trouver la dernière ligne avec des données dans la colonne A de la feuille Base_passe
lastRow = wsBase.Cells(wsBase.Rows.Count, "A").End(xlUp).Row
wsProg.Range("J1:J" & wsProg.Cells(wsProg.Rows.Count, "J").End(xlUp).Row).ClearContents
wsProg.Range("i1:J" & wsProg.Cells(wsProg.Rows.Count, "i").End(xlUp).Row).ClearContents
' Définir la plage à copier (de A2 à la dernière ligne de la colonne A)
Set rangeToCopy = wsBase.Range("A2:A" & lastRow)
' Copier la plage
rangeToCopy.Copy
' Coller dans la feuille PROG_passe à partir de la cellule J1
wsProg.Range("J1").PasteSpecial Paste:=xlPasteValues
' Ajouter des numéros d'ordre dans la colonne I de PROG_passe, à partir de I1
For i = 1 To lastRow - 1 ' Commence à partir de 1 et va jusqu'à la dernière ligne des données copiées
wsProg.Cells(i, "I").Value = i ' Remplit les cellules de I1 à In avec les numéros
Next i
' Mettre à jour la valeur du contrôle de formulaire "toupie"
' Vérifier si la cellule K1 contient une valeur numérique
If IsNumeric(wsProg.Range("K1").Value) Then
maxValue = wsProg.Range("K1").Value ' Valeur maximale basée sur K1
Else
MsgBox "La cellule K1 doit contenir une valeur numérique.", vbExclamation, "Erreur"
Exit Sub
End If
' Trouver le contrôle SpinButton nommé "Compteur 5" dans la feuille PROG_passe
On Error Resume Next
For Each ctrl In wsProg.Shapes
If ctrl.Type = msoFormControl Then
If ctrl.Name = "Compteur 5" Then ' Utilisation du nom exact "Compteur5_QuandChangement"
Set spinner = ctrl.ControlFormat
Exit For
End If
End If
Next ctrl
On Error GoTo 0
' Si le contrôle toupie est trouvé, on met à jour la valeur maximale
If Not spinner Is Nothing Then
spinner.Max = maxValue
Else
MsgBox "Aucun contrôle toupie nommé 'Compteur 5' n'a été trouvé dans la feuille PROG_passe.", vbExclamation, "Erreur"
End If
' Désactiver le mode copie
Application.CutCopyMode = False
' Afficher le MsgBox
MsgBox "Mise à jour du Liste personnel", vbInformation, "HICHAM"
End Subh
Bonsoir Forum,
Après une longue recherche, j’ai trouvé la solution, et j’ai aimé partager la solution avec les membres du site et du forum, peut-être que l’un d’entre eux en aura grandement besoin
Private Sub Worksheet_Change(ByVal Target As Range)
' Vérifiez si la cellule K1 dans la feuille "PROG_passe" a changé
If Not Intersect(Target, Sheets("PROG_passe").Range("K1")) Is Nothing Then
SpinButton1.Max = Sheets("PROG_passe").Range("K1").Value
End If
End SubRendre la valeur du SpinButton1.Max dynamique et liée à une cellule spécifique
Bonjour,
je n'ai pas pu tester car ton code est verrouillé mais à mon avis tu gagnerais du temps à le faire d'office.
Test + Intersect pour ne pas faire le .Max prendra plus de temps que de le faire directement.
eric