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 :

gestion de 2 scrollbars en simultané [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    concepteur R&D Mécanique
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : concepteur R&D Mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut gestion de 2 scrollbars en simultané
    bonjour,

    je cherche à géré 2 scrollbars lié l'une à l'autre,mais cela boucle 2 fois, avez-vous une solution afin de ne pas boucler sur la 2emme userform qui elle même pointe sur la première.

    dans la userform 2 scrollbar + 2 textbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ScrollBar1_Change()
                  Me.TextBox1.Value = Me.ScrollBar1.Value
                  Me.ScrollBar2.Value = 5
                  Me.TextBox2.Value = Me.ScrollBar2.Value
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub ScrollBar2_Change()
              Me.ScrollBar1.Value = 6 
                  Me.TextBox1.Value = Me.ScrollBar1.Value
                   Me.TextBox2.Value = Me.ScrollBar2.Value
    End Sub
    avez-vous une solution?

  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
    Bonjour
    Peut être il y a plus simple mais en utilisant une variable booléenne globale
    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
    29
    30
    31
    32
    Option Explicit
    Dim Manu As Boolean
     
    Private Sub ScrollBar1_Scroll()
     
    Manu = True
    End Sub
     
    Private Sub ScrollBar2_Scroll()
     
    Manu = True
    End Sub
     
    Private Sub ScrollBar1_Change()
     
    If Manu Then
        Manu = False
        Me.ScrollBar2.Value = 5
    End If
    Me.TextBox1.Value = Me.ScrollBar1.Value
    Me.TextBox2.Value = Me.ScrollBar2.Value
    End Sub
     
    Private Sub ScrollBar2_Change()
     
    If Manu Then
        Manu = False
        Me.ScrollBar1.Value = 6
    End If
    Me.TextBox1.Value = Me.ScrollBar1.Value
    Me.TextBox2.Value = Me.ScrollBar2.Value
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    concepteur R&D Mécanique
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : concepteur R&D Mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut oui et non
    Bonjour
    oui effectivement cela fonctionne mieux, sans que la boucle interfère,
    mais il n'y a pas de mouvement lors des clic à cote du scroll ou sur les flèches.
    j'ai rajouté le code suivant afin de palier l’inconvénient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Private Sub ScrollBar1_Enter()
        Manu = True
    End Sub
    Private Sub ScrollBar2_Enter()
        Manu = True
    End Sub
    cela est-il judicieux?
    cordialement

  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
    Et tu peux même supprimer les 2 sub ScrollBar1_Scroll et ScrollBar2_Scroll

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour mercatog et philippe 77

    pour ma part je n'utilise pratiquement plus le "scrollbar1_change"

    je préfère le scrollbar1_scroll ce qui rend la chose dynamique

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  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
    Bonjour Patrick
    Philippe_77
    mais il n'y a pas de mouvement lors des clic à cote du scroll ou sur les flèches.
    Et comment faire quand l’utilisateur clique sur les 2 flèches (qui déplacent l’ascenseur) ou à l'intérieur de scrollbar?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    concepteur R&D Mécanique
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : concepteur R&D Mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    Bonjour

    trouvez-ci joint le code avec 2 scrollbar et 2 textbox
    limite de scrollbars1 --> 0 à 10
    limite de scrollbars2 --> -10 à 0
    condition de fonctionnement
    si scrollbar1 = 5 --> textbox1 = 5 ; scrollbar2 = -5 ; textbox2 = -5
    si scrollbar2 = -6 --> textbox2 = -6 ; scrollbar1 = 6 ; textbox1 = 6
    si textbox1 = 2 --> scrollbar1 = 2 ; scrollbar2 = -2 ; textbox2 = -2
    si textbox2 = -8 --> scrollbar2 = -8 ; scrollbar1 = 8 ;textbox1 = 8
    et ainsi de suite:

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
     
    Option Explicit
    Dim Manu As Boolean
     Private Sub ScrollBar1_Enter()
         Manu = True
    End Sub
     
    Private Sub ScrollBar1_Scroll()
         Manu = True
    End Sub
     
    Private Sub ScrollBar2_Enter()
         Manu = True
    End Sub
    Private Sub ScrollBar2_Scroll()
        Manu = True
    End Sub
     
    Private Sub ScrollBar1_Change()
    If Manu Then
        Manu = False
        Me.ScrollBar2.Value = Me.ScrollBar1.Value * (-1)
    End If
    Me.TextBox2.Value = Me.ScrollBar2.Value
    Me.TextBox1.Value = Me.ScrollBar1.Value
    End Sub
     
    Private Sub ScrollBar2_Change()
    If Manu Then
        Manu = False
        Me.ScrollBar1.Value = Me.ScrollBar2.Value * (-1)
    End If
    Me.TextBox1.Value = Me.ScrollBar1.Value
    Me.TextBox2.Value = Me.ScrollBar2.Value
    End Sub
     
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If Me.TextBox1.Value < 0 Then Me.TextBox1.Value = 0
        If Me.TextBox1.Value > 10 Then Me.TextBox1.Value = 10
        Manu = True
        Me.ScrollBar1.Value = Me.TextBox1.Value
    End Sub
     
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If Me.TextBox2.Value < -10 Then Me.TextBox2.Value = -10
        If Me.TextBox2.Value > 0 Then Me.TextBox2.Value = 0
        Manu = True
        Me.ScrollBar2.Value = Me.TextBox2.Value
    End Sub
    le code fonctionne , sauf si l'on click 2 fois a coté du scroll ou sur les fléches:
    - Correcte le premier click
    - X click sur le coté ou les fléche du même crollbar, pas de fonctionabilitée.

    Avez-vous une solution?
    Hormis cette erreur, le code vous parait-il correct?
    Meci d'avance

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    donc si je comprend bien quand une crollbar est a 5 l'autre est a -5
    exactement l'inverse

    pour cela c'est tout simple
    la scrollbar2=la crollbar1-la crollbar1*2

    maintenant une scrollbar commence a zero il va te faloir jouer avec un calcul pour que la valeur 0 tombe au milieu de la scrollbar

    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    concepteur R&D Mécanique
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : concepteur R&D Mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    bonjour

    1-Une scrollbar peux commencer de -10 et jusqu'à 0 (faite l'essais svp)

    2- quand je déplace cette scrollbar elle m'affiche:
    -10; -9; -8; -7; -6; -5; -4; -3; -2; -1 ;0

    dans mon exemple le chiffre positif ce transforme en négatif
    le simple calcul * (-1) est suffissent pour rendre un chiffre négatif ou positif

    sinon effectivement la formule suivante fonctionne:
    5 --> 5-(2*5) --> -5
    et aussi
    -5--> -5 -(2*(-5)) --> 5
    donc x --> x-(2*x)--> -x

    sinon la question était :
    Comment faire fonctionner le code de 9H27 lorsqu'on click plusieurs fois sur la flèche.
    Le code fonctionne autant de fois que l'on veux, mais avec un seul click sur les flèches .

    à bientôt

  10. #10
    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
    Je ne sais pas ce que tu cherches à faire
    Avec 2 textbox et 2 scrollbar en interaction
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Private Sub UserForm_Initialize()
     
    With Me.ScrollBar1
        .Min = 0
        .Max = 10
        .LargeChange = 1
    End With
    With Me.ScrollBar2
        .Min = -10
        .Max = 0
        .LargeChange = 1
    End With
    End Sub
     
    Private Sub ScrollBar1_Change()
     
    Me.TextBox1 = Me.ScrollBar1
    Me.ScrollBar2 = -1 * Me.ScrollBar1
    End Sub
     
    Private Sub ScrollBar2_Change()
     
    Me.TextBox2 = Me.ScrollBar2
    Me.ScrollBar1 = -1 * Me.ScrollBar2
    End Sub
     
    Private Sub TextBox1_Change()
    Dim S As Integer
     
    S = Abs(Val(Me.TextBox1))
    S = IIf(S > 10, 10, S)
    Me.ScrollBar1 = S
    If S <> 0 Then Me.TextBox1 = S
    End Sub
     
    Private Sub TextBox2_Change()
    Dim S As Integer
     
    S = Abs(Val(Me.TextBox2))
    S = IIf(S > 10, -10, -1 * S)
    Me.ScrollBar2 = S
    If S <> 0 Then Me.TextBox2 = S
    End Sub

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    concepteur R&D Mécanique
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : concepteur R&D Mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    bonjour

    en fait l'exemple est relatif et est juste pour l'interaction des commandes

    je travail en fait sur la surface d'un triangle rectangle ou les donnée sont
    -1- l'angle droit a l'origine de abscisse et de l'ordonnée
    -2- en x maxi 2500mm , en Y Maxi 2500mm
    -3- en x mimi 300mm , en y mini 300mm
    si je règle x à 2500 --> y = 300
    si je règle y à 2500 --> x = 300
    si je règle x à 1000 y peux aller de 300 à 1800 sans modifier x et au dessus diminution de x
    avec d'autre critère en fait une usine à gaz.

    cela n'est pas très complexe mais ne sert pas à grand chose dans le code qui ne fonctionnais pas avec plusieurs clic sur les flèches.


    je pense que non erreur était "Me.ScrollBar1.Value" au lieu de "Me.ScrollBar1"
    comme quoi on enlève une petite écharde et tous va mieux.

    petite exception:
    une condition ne fonctionne pas dans le dernier code, car j'ai affaire à des "bourrains",remplissage des textbox par du texte.

    sinon génial, bien vu le coup du IIF

    à bientôt

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour philippe 77

    oui tu meme si on peut commencer a -10 on termine a zero

    ce qui t'obligera a faire le calcule comme je te l'ai indiqué

    de facon que la position zero ce trouve au milieu puisque tu veux aller de -5 a 5

    au plaisir quand au clic sur la fleche je ne vois pas ou est ton probleme
    et pour le clic sur la scroll mais pas sur le curseur

    bon si j'ai bien compris ce que tu cherche a faire
    essaie ceci dans un userform avec 2 scroll bar et 2 textboxs
    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
     
    'Dans les propriétés
    'mettre le max a 50 et le min a -50
    'metre la propriété "DELAY " a 10
     
    Private Sub ScrollBar1_Change()
        TextBox1 = ScrollBar1 / 10
        ScrollBar2 = -ScrollBar1
    End Sub
     
    Private Sub ScrollBar1_Scroll()
        TextBox1 = ScrollBar1 / 10
        ScrollBar2 = -ScrollBar1
     
    End Sub
     
    Private Sub ScrollBar2_Change()
        TextBox2 = ScrollBar2 / 10
        ScrollBar1 = -ScrollBar2
    End Sub
     
    Private Sub ScrollBar2_Scroll()
        TextBox2 = ScrollBar2 / 10
        ScrollBar1 = -ScrollBar2
     
    End Sub
    tu aura un step de 0.1 de -5 jusqu'a 5 dans les textboxs et les scrollbar seront dynamiquement inverse l'un a l'autre que ce soit la 1 ou la 2 que tu bouge
    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    concepteur R&D Mécanique
    Inscrit en
    Octobre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : concepteur R&D Mécanique
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2011
    Messages : 6
    Par défaut
    bonjour
    Trouvez ci-joint le code complet avec la gestion des textbox

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    Private Sub UserForm_Initialize()
        ScrollBar1.SmallChange = 2
        ScrollBar1.Min = 0
        ScrollBar1.Max = 10
        ScrollBar1.Value = 0
        ScrollBar2.SmallChange = 2
        ScrollBar2.Min = -10
        ScrollBar2.Max = 0
        ScrollBar2.Value = 0
        TextBox1 = 0
        TextBox2 = 0
    End Sub
     
    Private Sub ScrollBar1_Change()
        TextBox1 = ScrollBar1
        ScrollBar2 = -ScrollBar1.Value
    End Sub
     
    Private Sub ScrollBar1_Scroll()
        TextBox1 = ScrollBar1
        ScrollBar2 = -ScrollBar1.Value
     
    End Sub
     
    Private Sub ScrollBar2_Change()
        TextBox2 = ScrollBar2
        ScrollBar1 = -ScrollBar2
    End Sub
     
    Private Sub ScrollBar2_Scroll()
        TextBox2 = ScrollBar2
        ScrollBar1 = -ScrollBar2
     
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If TextBox1 < 0 Then TextBox1 = 0
        If TextBox1 > 10 Then TextBox1 = 10
     
      ScrollBar1 = TextBox1
      ScrollBar2 = -TextBox1
      TextBox2 = -TextBox1
     
    End Sub
     
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        If TextBox2 < -10 Then TextBox2 = -10
        If TextBox2 > 0 Then TextBox2 = 0
        Manu = True
        ScrollBar2 = TextBox2
        ScrollBar1 = -TextBox2
        TextBox1 = -TextBox2
    End Sub
    je remercie les 2 personnes qui m'ont bien aidé et si cela sert à d'autre un petit "merci" serait le bien venu

    je considère cela résolu

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

Discussions similaires

  1. Gestion d'une scrollbar
    Par pioupiou35 dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 30/12/2013, 15h13
  2. gestion de la scrollbar
    Par sebac dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/03/2010, 10h45
  3. [C#]Gestion simultanée des DetailsView et GridView
    Par Jé@Zoom dans le forum ASP.NET
    Réponses: 3
    Dernier message: 26/10/2006, 20h43
  4. gestion d'une scrollbar dans une div
    Par duge dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/08/2006, 13h54
  5. [VB.NET] Gestion du scrollbar
    Par vonbier dans le forum ASP.NET
    Réponses: 13
    Dernier message: 30/07/2005, 12h15

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