IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Inititier valeur initiale d'un scrollbar en fonction d'une textbox ( valeur en %)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut Inititier valeur initiale d'un scrollbar en fonction d'une textbox ( valeur en %)
    Bonjour;

    Est-il possible d'initier la valeur d'une textbox par un scrollbar ( sans en réferer à une valeur min et max) , et de faire évoluer ainsi la valeur du textbox

    Ma TextBox9.value a des valeurs en %

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub UserForm_Click()
     
    TextBox9 = ScrollBar1.Value
     
          With ScrollBar1
     
            .SmallChange = 0.0005
     
          End With
     
    End Sub

    Cdt

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ScrollBar1_Change()
     
    TextBox9.Value = ScrollBar1.Value / 2000
     
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    bonjour mercatog

    Merci pour ta réponse, j'ai un souci j'aimerais qu'il garde en mémoire ma valeur dans ma textbox9, et que suite à l'action du scrollbar, elle soit modifiée

    Cdt

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut Erreur
    En fait le code proposé ne fonctionnait pas comme il fallait
    une proposition qui fonctionne (Edit: en fait partiellement, fonctionne seulement si le scroll se déplace pas à pas dans les 2sens)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ScrollBar1_change()
    Dim m As Long
    If TextBox1.Value <> "" Then
        m = CDbl(TextBox1.Value)
        TextBox1.Value = m + ScrollBar1.Value / 2000
    End If
    End Sub
    Edit2:
    Voilà un code fonctionnel; 2 variables publiques
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Public m As Long
    Public n As Long
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub ScrollBar1_change()
    If TextBox1.Value <> "" Then
        m = CDbl(TextBox1.Value)
        TextBox1.Value = m - n + ScrollBar1.Value / 2000
    End If
    n = ScrollBar1.Value / 2000
    End Sub

  5. #5
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    Bonjour Mercatog

    Merci pour ta réponse, j'ai un souci au sujet du scrollbar.Il fonctionne seulement dans le sens de l'incrémentation ( quelque soit la fléche actionnée, il incrémente ).

    As tu une solution pour adapter le code pour le faire agir dans "l'autre sens" et le borner de 0% et 100%.

    ? question subsidiaire, la fonction Cdbl ne fonctionne pas chez moi

    Merci pour ton aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ScrollBar1_Change()
    Dim m As Double, n As Double
    If TextBox9.Value <> "" Then
        m = VBA.Format(TextBox9.Value, "0.0000")
        TextBox9.Value = m - n + ScrollBar1.Value / 100
    End If
         n = ScrollBar1.Value / 100
         TextBox9.Value = VBA.Format((TextBox9.Value), "0.00%")
         TextBox4.Value = (m * TextBox3.Value)
    End Sub

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu lisais bien, j'ai déclaré m et n comme étant des variables publiques
    je remets le code en ajoutant les valeurs min et max
    PS: j'ai testé les codes et ça marche (dans les 2 sens)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Option Explicit
    Public m As Long
    Public n As Long
     
    Private Sub ScrollBar1_change()
    If TextBox1.Value <> "" Then
        m = TextBox1.Value
    Else
        m = 0
    End If
        TextBox1.Value = m - n + ScrollBar1.Value / 2000
    n = ScrollBar1.Value / 2000
    End Sub
     
    Private Sub UserForm_Initialize()
    ScrollBar1.Min = 0
    ScrollBar1.Max = 2000
    End Sub

  7. #7
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    Merci pour ta patience, cela fonctionne bien avec un bémol

    il me prend pour valeur initiale ( ce qui est logique la valeur de la textbox)
    par csqut , je ne peux aller en-deça ( pas grave, je ferais avec sauf si tu as une astuce,ainsi quer le bornage à 100% )

    effcevtivement ! lacune chez moi, de la déclaration de la valeur en public

    Merci pour ton aide

  8. #8
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai modifié le code et ça fonctionne tant que la valeur initiale du TextBox9<=99
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Option Explicit
    Public m As Long
    Public n As Long
     
    Private Sub ScrollBar1_change()
    If TextBox9.Value <> "" Then
        m = CDbl(TextBox9.Value)
    Else
        m = 0
    End If
        TextBox9.Value = m - n + ScrollBar1.Value / 2000
    n = ScrollBar1.Value / 2000
    End Sub
     
    Private Sub TextBox9_AfterUpdate()
    If TextBox9.Value <> "" Then
        ScrollBar1.Max = 200000 - 2000 * TextBox9.Value
    Else
        ScrollBar1.Max = 200000
    End If
     
    End Sub
     
    Private Sub UserForm_Initialize()
    ScrollBar1.Min = 0
    ScrollBar1.Max = 200000
    End Sub
    Edit: Ou bien, une autre proposition sans la contrainte du 99
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Option Explicit
    Public m As Long
    Public n As Long
     
    Private Sub ScrollBar1_change()
    If TextBox9.Value <> "" Then
        m = CDbl(TextBox9.Value)
    Else
        m = 0
    End If
        TextBox9.Value = m - n + ScrollBar1.Value / 2000
    n = ScrollBar1.Value / 2000
    End Sub
     
    Private Sub TextBox9_Change()
     
    If TextBox9.Value <> "" Then
        If TextBox9.Value > 100 Then
            TextBox9.Value = 100
            ScrollBar1.Value = ScrollBar1.Max
        End If
    End If
    End Sub
     
    Private Sub UserForm_Initialize()
    ScrollBar1.Min = 0
    ScrollBar1.Max = 200000
    End Sub

  9. #9
    Membre averti
    Inscrit en
    Avril 2009
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 46
    Par défaut
    Bonjour Mercatog

    Dsl, pour la réponse tardive,la 2 solution fonctionne !!

    Encore Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Afficher des valeurs en fonction d'une autre valeur
    Par flobos dans le forum Access
    Réponses: 2
    Dernier message: 15/06/2015, 08h03
  2. [XL-2010] Rechercher des valeurs en fonction d'une autre valeur
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/02/2015, 16h10
  3. Réponses: 7
    Dernier message: 09/02/2015, 13h36
  4. Recherche de date en fonction d'une seule valeur
    Par rousskoff dans le forum Excel
    Réponses: 3
    Dernier message: 06/03/2012, 21h51
  5. Liste dynamique en fonction d'une textbox
    Par harry le ravi dans le forum VBA Access
    Réponses: 3
    Dernier message: 18/06/2009, 11h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo