Controle de slider (assez haut niveau d'excel)

Deneb

XLDnaute Junior
Bonjour à tous !

Je me trouve actuellement devant une situation que je ne suis pas sûr de savoir gérer, étant donné que je ne sais absolument pas comment chercher ma réponse ! :confused:

Mon idée était de faire un fichier ( sans userform pour l'instant ) qu'on pourrait remplir à l'aide de sliders reliés à des cellules.

Voyant dans les propriétés des objets de controle slider, qu'il n'existe pas d'équivalent de "rowsource" ou autre de ce style, j'ai commencé à gérer cela par macro.

Voici le code de ma fonction :

Code:
Sub maj(column As String)

col = column & "11"

Sheets("Grille").Range(col) = Sheets("Grille").Slider1.Value

End Sub


et le code pour chaque slider :


Code:
Private Sub Slider1_Change()

Call maj("G")

End Sub


Pour l'instant tout va bien.

Cependant, le problème est que le nombre de ligne de mon fichier (que je ne peux pas envoyer complet pour raisons de confidentialité) est tout à fait variable. Du coup je voudrait pouvoir automatiser la mise en forme de la ligne avec le placement des sliders au bon endroit.

Voici mes deux problèmes :

-Comment mettre sous forme de fonction ma macro qui met à jour les valeurs de mes cellules correspondant aux valeurs des sliders avec comme argument le slider et la colone concernée ? j'ai déjà essayé de passer le slider en argument mais au lieu du nom du slider, ma variable objet prend la valeur de l'objet ...

-Comment repérer où placer le nouveau slider à la mise en forme de la ligne automatique ? (là je n'ai carrément pas d'idée ! :eek:)



Si vous pouvez m'aide j'en serai ravi et celà m'aiderai beaucoup !


Merci d'avance.
 

Pièces jointes

  • Grille de Cotation.zip
    20.9 KB · Affichages: 50
Dernière édition:

Odesta

XLDnaute Impliqué
Re : Controle de slider (assez haut niveau d'excel)

Si j'ai bien compris le premier problème :


J'ai une proposition, pas forcement très propre, ni surement la meilleure. Mais efficace.

Vous rajouter SOUS votre slider, un textbox de base.
Dans les propriétés d'un textbox (sous Excel, pas VBA) il y a "LinkedCell". Vous lui collez la bonne destination, ici G11.
Et ensuite, tout simplement, sous VBA vous rajoutez ceci :
Code:
Private Sub Slider1_Change()
TextBox1.Value = Slider1.Value
End Sub

Bon, c'est pas super joli, mais ça permet de rajouter des colonnes et des lignes, en gardant la mise en forme, et cela, sans développer quelque chose de compliqué.
Enfin, j'espère que cela répond au problème. Sinon, je ne vois comment le passer en fonction.

Cordialement

Olivier
 

Deneb

XLDnaute Junior
Re : Controle de slider (assez haut niveau d'excel)

Merci mais ça ne fait que rajouter un niveau, sans résoudre le problème. En effet on lie une textbox à une cellule, mais je ne sais toujours pas comment gérer la liaison textbox à slider... :s Le fait est que je ne peux toujours pas passer en fonction cette gestion de sliders.
Merci quand même pour vous être penché sur mon problème.
 

Deneb

XLDnaute Junior
Re : Controle de slider (assez haut niveau d'excel)

On déplace le curseur du slider à la main mais la valeur doit s'afficher et être traitée par formule par la suite. l'idée est que cela apporterai un support visuel beaucoup plus intuitif et rapide à remplir. Mais bien sûr ça complique mon fichier... :(
 
G

Guest

Guest
Re : Controle de slider (assez haut niveau d'excel)

Bonjour le fil,

-Comment repérer où placer le nouveau slider à la mise en forme de la ligne automatique ? (là je n'ai carrément pas d'idée ! :eek:)

Sans trop comprendre ce que cela veut dire, voici qui je l'espère pourra t'aider.

Code:
Private Sub Slider1_Change()
Call truc( Slider1)
End Sub
 
Sub truc(oSlider As Slider)
    'Afficher le numéro de colonne du slider et la valeur du slider
    MsgBox "Colonne: " & oSlider.TopLeftCell.column & vbCrLf & _
            "Valeur: " & oSlider.Value
                    
End Sub

Tu peux récupérer le numéro de ligne Par ActiveCell.Row en le combinant avec le numéro de colonne qui contient le slider (Slider.TopLeftCell.Column).

A+
 

Deneb

XLDnaute Junior
Re : Controle de slider (assez haut niveau d'excel)

Merci Odesta et Hasco.
Odesta c'est bien ce que j'avais compris mais cela ne fait que de rajouter un niveau de digrssion : tu peux très bien au lieu de lier la cellule à la textbox, lier le slider à la cellule par range("A1").value = Slider1.value mais celu ne m'avance pas plus...

Hasco ton idée m'intéresse pour rajouter une ligne, je prends.
Si le code que tu m'as donné fonctionne, je pourrai passer le nom du slider en paramettre, et ainsi résoudre mon problème. Je vous tiens au courant.

Merci encore à vous deux.
 

Deneb

XLDnaute Junior
Re : Controle de slider (assez haut niveau d'excel)

Bon mauvaise nouvelle, j'ai le même problème qu'avant :

message d'erreur sur la ligne en gras "propriété ou méthode non gérée par cet objet"

Code:
Sub maj(column As String, oSlider As Slider)

col = column & "11"

[B]Sheets("Grille").Range(col) = Sheets("Grille").oSlider.Value[/B]

End Sub

D'ailleurs quand je regarde la valeur de "oSlider" à cette erreur oSlider = 7 ce qui est la valeur du slider ... or je voudrai que oSlider ait pour valeur le nom du slider mais en type "slider" et non valeur (ça ne doit pas etre très clair)

oSlider = 7
Column = "G"
Col = "G11"
 
Dernière édition:
G

Guest

Guest
Re : Controle de slider (assez haut niveau d'excel)

bonjour Deneb,

Ne pas mettre le nom de la feuille devant oSlider:

Code:
Sheets("Grille").Range(col) = oSlider.Value

oSlider est une référence objet qui pointe vers l'objet lui-même. Autrement dit, il sait où il habite, pas la peine de lui redire (il aime pas).

A+
 

Deneb

XLDnaute Junior
Re : Controle de slider (assez haut niveau d'excel)

Merci beaucoup ! "Tout marche bien navette"

cela fonctionne parfaitement bien je vais pouvoir avancer !

voici mon code de function au cas où d'autres se poseraient la question :

Code:
Sub maj(column As String, ln As Integer, oSlider As Slider)

Application.ScreenUpdating = False

coord = column & ln

Sheets("Grille").Range(coord) = oSlider.Value


Application.ScreenUpdating = True

End Sub

et cela fonctionne parfaitement bien lorsque j'appelle la fonction !
 

Discussions similaires

Statistiques des forums

Discussions
312 895
Messages
2 093 384
Membres
105 714
dernier inscrit
POKITO