Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Contrôles et VBA en Excel



  1. #1
    fderwelt

    Contrôles et VBA en Excel


    ------

    Bonjour,

    J'ai un classeur Excel qui me fait tous mes calculs comme je veux. Mais pour pouvoir jouer sur les données d'entrée, j'aimerais avoir des sliders qui ajusteraient les cases en "temps réel".

    Je sais créer des formulaires avec des contrôles (boutons, sliders, etc) mais... je ne sais pas comment récupérer la valeur d'un slider! Bien sûr, je connais assez de VBA pour faire la manip' si on m'explique gentiment.

    Alors si quelqu'un sait faire, merci d'avance.

    Un petit exemple avec une case qui reflète la valeur du slider quand on le bouge, ça me suffirait amplement.

    -- françois

    -----
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  2. Publicité
  3. #2
    mécano41

    Re : Contrôles et VBA en Excel

    Bonjour,

    Je ne suis pas très avancé en VBA néanmoins je te propose cela, mais je ne sais pas si c'est exactement ce que tu cherches :

    - on crée une boîte de dialogue (userform) que l'on nomme : BoîteDeDialogue1
    On y place :
    - une zone de texte que l'on nomme ListeDesNombres
    - une barre de défilement nommée ScrollBar1
    - une étiquette nommée Label1 à gauche de la zone texte
    - une étiquette nommée Label2 à droite de la zone texte


    Sur la feuille de calcul, on fait à partir de A1, une colonne des nombres à faire défiler (ici j'ai mis des entiers) par exemple de -125 à +125 de 1 en 1

    Dans Visual Basic, on met le code que je joins. Quand on lance :
    - la boîte de dialogue s'affiche
    - dans la zone de texte, le premier nombre s'inscrit
    - dans la première étiquette la valeur mini s'inscrit
    - dans la deuxième étiquette la valeur maxi s'inscrit
    - en cliquant sur les flèches, la valeur dans la zone de texte passe du mini au maxi par tous les intermédiaires
    - en glissant le curseur, on va plus vite mais je n'ai pas trouvé le moyen de faire défiler les valeurs au fur et à mesure. La mise à jour ne se fait qu'en relâchant le curseur (de même, je n'ai pas réussi à supprimer le clignotement de ce curseur)

    Il faut ajouter un bouton validation puis récupérer la valeur sélectionnée dans "ScrollBar1.Value"

    Cordialement
    Fichiers attachés Fichiers attachés

  4. #3
    fderwelt

    Re : Contrôles et VBA en Excel

    Bonsoir et merci à mécano41,

    Entretemps j'ai trouvé une solution sans passer par VBA, qui me suffit pour le moment.

    Afficher la barre d'outils "Formulaire", insérer une barre de défilement, la dimensionner et la placer comme on veut. Clic droit sur ladite barre, "Format de contrôle", onglet "Contrôle". Choisir les valeurs min et max, les incréments. Champ "Cellule liée", choisir une cellule.

    Alors miracle, en bougeant le slider la cellule affiche la valeur du slider en temps réel. Mais il faut relâcher le curseur pour que les cases dépendantes se mettent à jour. Pour l'instant ça ne me dérange pas.

    Cela dit, ta méhode m'a quand même permis d'y voir plus clair dans l'utilisation de VBA avec Excel, il faudra que je m'y mette vraiment, c'est quand même plus puissant.

    Encore merci,

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  5. #4
    mécano41

    Re : Contrôles et VBA en Excel

    Citation Envoyé par fderwelt Voir le message
    ... en bougeant le slider la cellule affiche la valeur du slider en temps réel. Mais il faut relâcher le curseur pour que les cases dépendantes se mettent à jour...
    Bonjour,

    J'ai essayé ce que tu indiques, ça marche parfaitement et c'est simple. En revanche pour moi, la mise à jour d'une autre cellule se fait bien en temps réel. En exemple, comme ce système n'accepte pas le négatif, j'ai mis une cellule qui recalcule un nouveau nombre à partir de la cellule liée, elle défile bien de -50 à +50 en même temps que cette dernière défile de 0 à 100

    Cordialement

  6. #5
    fderwelt

    Re : Contrôles et VBA en Excel

    Citation Envoyé par mécano41 Voir le message
    En revanche pour moi, la mise à jour d'une autre cellule se fait bien en temps réel.
    Bonjour,

    Tu as raison, ça se fait bien en temps réel. C'est juste que j'ai un cas un peu particulier: mes sliders sont dans une feuille à côté d'une courbe, dont les valeurs sont calculées dans une autre feuille. Les valeurs calculées sont bien mises à jour en temps réel, mais la courbe, elle, n'est recalculée qu'une fois le slider lâché.

    Faut être vicieux pour espérer que la courbe allait se déformer continûment quand on balade le slider...

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  7. A voir en vidéo sur Futura
  8. #6
    EspritTordu

    Re : Contrôles et VBA en Excel

    Bonjour,

    J'ai essayé dans Excel de mettre une barre de défilement, de faire incrémenter de 1 les valeurs d'un graphique associé à la plage de valeur sur une autre feuille (dont la dimension reste identique dans un premier temps), et en "temps réel"..., ma courbe change...

    Ma recette :

    On bascule en mode création sur une feuille 2 (barre d'outils de contrôle)
    On ajoute une barre de défilement sur la feuille2
    Sur la feuille 1 on rentre la plage de valeur, disons 20 valeurs sur la première colonne.
    On crée le graphique de cette plage de valeur, en précisant bien à la fin de l'assistant qu'on le veut non pas sur la feuille 1 mais sur la feuille2.
    On va dans le module de la feuille2 dans VBA
    On colle cette affaire :

    Private Sub ScrollBar1_Change()
    Dim i As Long

    For i = 1 To 20
    Sheets(1).Cells(i, 1).Value = Sheets(1).Cells(i, 1).Value + 1
    Next i
    End Sub

    Et le tour est joué ! Au passage l'objet en VBA correspondant au barre de défilement s'appelle pas slider mais scrollbar. On veux réagir à l'événement Change, c'est-à-dire quand l'objet détecte un changement sur son statut.

  9. Publicité
  10. #7
    fderwelt

    Re : Contrôles et VBA en Excel

    Citation Envoyé par EspritTordu Voir le message
    Au passage l'objet en VBA correspondant au barre de défilement s'appelle pas slider mais scrollbar. On veux réagir à l'événement Change, c'est-à-dire quand l'objet détecte un changement sur son statut.
    Bonjour,

    Bien vu!

    Pour le "slider", c'est un mot auquel je suis habitué dans d'autres toolkits, ja vais pas changer mes habitudes pour faire plaisir à Bill et puis une scrollbar ça doit scroller quelque chose, non?

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

Discussions similaires

  1. Problème conversion fichiers excel PC vers excel MAC
    Par Pallmall37 dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 14/11/2007, 21h31
  2. VBA Excel: appliquer une macro a plusieurs fichiers
    Par Igothigh dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 14/03/2007, 09h45
  3. problème utilisation VBA sur excel 2007
    Par Big Boy dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 16/02/2007, 00h00
  4. Publipostage en vba de excel vers word
    Par knecmotet dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 21/07/2004, 09h45
  5. Impression excel / vba
    Par Pierrot77 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 05/03/2004, 09h10
Découvrez nos comparatifs produits sur l'informatique et les technologies.