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

[RESOLU ] : Sliding form

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MADAGASCAR

XLDnaute Occasionnel
Bonsoir forum
Bonsoir tout le monde
svp et si vous aurez de temps disponible j'espere simplement savoir est ce que c'est possible d'appliquer ce fichier sur deux userforms ou sur deux listbox a la places de ces deux frames
merci d'avance
cordialement
MADA
 

Pièces jointes

Dernière édition:
Re : Sliding form

Bonjour
Il n'y a qu'une chose impliquée dans ce mécanisme, et non pas deux.
Je ne vois pas bien ce que voulez dire quant à l'appliquer à un UserForm.
En revanche il devrait être possible de faire ça sur tous types de contrôles dans un UserForm, vu qu'il ont tous une propriété Left, même si l'intérêt m'échappe un peu. Attention à l'ordre des recouvrements.

P.S. Remarque: Tant qu'à faire, tel que je me connais, je ferais ça avec des cycloïdes :
VB:
Option Explicit
Const Pi = 245850922 / 78256779 '    Sin(Pi) = 1,22460635382238E-16
'         Tandis que: Sin(3.14159265358979) = 32,3108510433268 E-16
Const Pi×2 = 2 * Pi

Private Sub CommandButton1_Click()
Dim T0 As Single, T1 As Single, N&
T0 = VBA.Timer
For N = 1 To 50
   Frame2.Left = IntpoRal(N, 0, 266, 50, 6)
   Do: DoEvents: T1 = VBA.Timer: Loop Until T1 <> T0
   T0 = T1: Next N
End Sub
Private Sub CommandButton2_Click()
Dim T0 As Single, T1 As Single, N&
T0 = VBA.Timer
For N = 1 To 50
   Frame2.Left = IntpoAcc(N, 0, 6, 50, 266)
   Do: DoEvents: T1 = VBA.Timer: Loop Until T1 <> T0
   T0 = T1: Next N
End Sub
Private Sub UserForm_Initialize()
    Me.Width = 262
    Frame2.Left = 266
    Frame2.Top = 6
End Sub
'

Function IntpoCyc(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double) As Double
IntpoCyc = Y1 + (Y2 - Y1) * Cyclo((X - X1) / (X2 - X1))
End Function
Function Cyclo(ByVal X As Double) As Double:  Cyclo = Min(Max(0, X - Sin(X * Pi×2) / Pi×2), 1): End Function

Function IntpoRal(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double) As Double
IntpoRal = Y1 + (Y2 - Y1) * CycRal((X - X1) / (X2 - X1))
End Function
Function CycRal(ByVal X As Double) As Double: CycRal = Min(X * 2, X + Sin(X * Pi) / Pi, 1): End Function

Function IntpoAcc(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double) As Double
IntpoAcc = Y1 + (Y2 - Y1) * CycAcc((X - X1) / (X2 - X1))
End Function
Function CycAcc(ByVal X As Double) As Double: CycAcc = Max(0, X - Sin(X * Pi) / Pi, X * 2 - 1): End Function
'

Function Max(ByVal Vr As Variant, ParamArray Vs() As Variant) As Variant
Dim N As Long: For N = 0 To UBound(Vs): If Vs(N) > Vr Then Vr = Vs(N)
   Next N: Max = Vr: End Function
Function Min(ByVal Vr As Variant, ParamArray Vs() As Variant) As Variant
Dim N As Long: For N = 0 To UBound(Vs): If Vs(N) < Vr Then Vr = Vs(N)
   Next N: Min = Vr: End Function
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
352
Réponses
5
Affichages
743
Réponses
10
Affichages
848
Réponses
7
Affichages
995
Réponses
5
Affichages
422
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…