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 !
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 ! )
Si vous pouvez m'aide j'en serai ravi et celà m'aiderai beaucoup !
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.
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.
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...
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).
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.
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)
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 !