1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    octobre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2012
    Messages : 45
    Points : 27
    Points
    27

    Par défaut Comment positionner le curseur d'un scrollbar

    Bonjour le forum,

    J'ai un USF dans lequel j'ai un scrollbar. Je sais définir des valeurs mini (1) et maxi (variable) pour ce scrollbar. Ce que je souhaite faire c'est pouvoir positionner le curseur dans une certaine position et non à la valeur 1 par défaut.
    J'ai bien essayé scrollbar1.value = la position que je souhaite, mais ça ne marche pas. Le curseur reste à 1.
    scrollbar1.ControlFormat.value = la position souhaitée n'est pas accepté.

    Bref, je n'ai rien trouvé de probant sur la toile qui me dise comment faire pour que le curseur se positionne comme je le souhaite.

    Est-que quelqu'un à une solution ?

    D'avance merci pour votre aide.

  2. #2
    Expert éminent
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    4 556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 4 556
    Points : 7 948
    Points
    7 948

    Par défaut

    Bonjour
    La propriété Value est celle à utiliser et la seule à utiliser.
    Après : tu es seul à savoir ce que tu entends très exactement par "position". S'il s'agit de l'éloignement (en quelle unité logique ?) par rapport à une origine (propriété Left de la scrollbar) --->> calcul arithmétique incluant la propriété Width de la ScrollBar ...
    cette phrase :
    la position souhaitée n'est pas accepté.
    est inquiétante. On parle ici de valeur et non de "position".
    Et cette valeur est nécessairement comprise entre celle minimum et celle maximum que TU as définies.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro). Ne m'en proposez donc pas.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    septembre 2013
    Messages
    567
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2013
    Messages : 567
    Points : 1 164
    Points
    1 164

    Par défaut

    Bonsoir,

    Exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub UserForm_Initialize()
      n = 5:  début = 1
      For b = 1 To n * 2: Set Lbl(b).GrLabel = Me("Label" & b): Next b
      Me.ScrollBar1.Min = début
      Me.ScrollBar1.Max = [liste].Count - n + 1
      Me.ScrollBar1 = 2     ' positionne en 2
      Affiche
    End Sub
    Boisgontier
    http://boisgontierjacques.free.fr
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    10 528
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Secteur : Bâtiment

    Informations forums :
    Inscription : avril 2009
    Messages : 10 528
    Points : 16 713
    Points
    16 713
    Billets dans le blog
    1

    Par défaut re

    re
    bonsoir

    la valeur MAX de la scrool vertical de ton userform c'est le top +height du control le plus bas
    et même principe pour la scrool horizontale left+width le plus a droite
    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 : résolu: ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éprouvé Avatar de mjpmjp
    Homme Profil pro
    Chôme Dur des Ambulances
    Inscrit en
    avril 2012
    Messages
    663
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chôme Dur des Ambulances
    Secteur : Santé

    Informations forums :
    Inscription : avril 2012
    Messages : 663
    Points : 1 067
    Points
    1 067

    Par défaut

    bonjour,
    dans ton "vbe", bouge ta scrollbar et regarde dans les proprietes : scrollLeft et scrollTop

    @+JP
    Mes contributions
    Form GRAPHIQUE, Gestion des boutons
    Form GRAPHIQUE, Liste Onglet dynamique
    Form GRAPHIQUE, Liste Multi-Colonne et ScrollBar Externe

    Les Gens "Instruit" ont passé leur temps à apprendre ce que les Gens "Intelligent" ont passé leur temps à trouver...(JP)

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    octobre 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : octobre 2012
    Messages : 45
    Points : 27
    Points
    27

    Par défaut

    @unparia :
    quand j'ai dit la position souhaitée n'est pas accepté, en fait j'aurais dû formuler la phrase autrement :
    scrollbar1.ControlFormat.value = "la position que je souhaite en valeur numérique" n'est pas acceptée en tant que commande par vba. Désolé pour ne pas avoir été assez précis.

    @boisgontierjacques :
    merci d'être intervenu. En fait, je me suis fortement inspiré du code de ChoixListBoxPhotoExterne2.xls que j'ai récupéré sur ton site qui est pour moi une référence en la matière. J'en profite pour te remercier mille fois pour l'excellent travail et pour la qualité des informations.

    Finalement, l'instruction .ScrollBar1 = "ma valeur" ou .ScrollBar1.Value = "ma valeur" fonctionne très bien, à condition de modifier l'ordre des instructions pour que la valeur soit attribuée avant les .min et .max.
    En effet, la définition des valeurs mini et maxi sollicitent le ScrollBar1_Change(). Or, dans le ScrollBar1_Change() il y a une ligne qui redéfinie "ma valeur" = .ScrollBar1 qui n'a pas encore de valeur attribuée. D'où le passage de "ma valeur" à 1. C'est pourquoi je n'arrivais pas à positionner le curseur. En plaçant la valeur de ScrollBar1 en premier, ça fonctionne. Voici mon code au complet :
    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    Dim début As Long, NbreAffich As Long, NomPh As String, NbreTrombi As Long
     
    Private Sub UserForm_Initialize()
        If Nouveau Then
            NomPh = USFAdherent.ChoixPrenom & "_" & Left(USFAdherent.ChoixNom, 1) & "*.jpg"
        Else
            NomPh = USFAdherent.BoxPrenom & "_" & Left(USFAdherent.BoxNom, 1) & "*.jpg"
        End If
        NomPh = OteAccents(LCase(NomPh)) 'suppression des accents et mise en minuscules (la fonction est ailleurs dans un module)
        début = 1
        NbreTrombi = GetFileList(RepTrombi & "*.jpg")
        NbreAffich = 6
        With Me
          .ScrollBar1 = début 'à mettre AVANT les .min et .max !
          .ScrollBar1.Min = 1
          .ScrollBar1.Max = NbreTrombi - NbreAffich + 1
        End With
    End Sub
     
    Sub affiche()
      Dim Nom As String, i As Integer
      For i = 1 To NbreAffich
        Nom = FileList(i + début - 1)
        Me("Image" & i).Picture = LoadPicture(RepTrombi & Nom)
        Me("Image" & i).ControlTipText = Nom
        Me("Image" & i).BorderStyle = 0
        Me("Label" & i).Caption = Left(Nom, Len(Nom) - 4)
      Next i
      Me.Repaint
    End Sub
     
    Private Sub ScrollBar1_Change()
      début = ScrollBar1
      affiche
    End Sub
     
    Private Sub Image1_Click()
      With USFAdherent
        .BoxFichierTrombi.Value = Me.Image1.ControlTipText
        .Trombi.Picture = LoadPicture(RepTrombi & Me.Image1.ControlTipText)
        .Repaint
      End With
      Unload Me
    End Sub
     
    Private Sub Image2_Click()
      With USFAdherent
        .BoxFichierTrombi.Value = Me.Image2.ControlTipText
        .Trombi.Picture = LoadPicture(RepTrombi & Me.Image2.ControlTipText)
        .Repaint
      End With
      Unload Me
    End Sub
     
    Private Sub Image3_Click()
      With USFAdherent
        .BoxFichierTrombi.Value = Me.Image3.ControlTipText
        .Trombi.Picture = LoadPicture(RepTrombi & Me.Image3.ControlTipText)
        .Repaint
      End With
      Unload Me
    End Sub
     
    Private Sub Image4_Click()
      With USFAdherent
        .BoxFichierTrombi.Value = Me.Image4.ControlTipText
        .Trombi.Picture = LoadPicture(RepTrombi & Me.Image4.ControlTipText)
        .Repaint
      End With
      Unload Me
    End Sub
     
    Private Sub Image5_Click()
      With USFAdherent
        .BoxFichierTrombi.Value = Me.Image5.ControlTipText
        .Trombi.Picture = LoadPicture(RepTrombi & Me.Image5.ControlTipText)
        .Repaint
      End With
      Unload Me
    End Sub
     
    Private Sub Image6_Click()
      With USFAdherent
        .BoxFichierTrombi.Value = Me.Image6.ControlTipText
        .Trombi.Picture = LoadPicture(RepTrombi & Me.Image6.ControlTipText)
        .Repaint
      End With
      Unload Me
    End Sub
     
    Function GetFileList(FileSpec As String) As Variant
     
    Dim Filecount As Integer
    Dim Filename As String
     
    Application.Volatile
     
    Filecount = 0
    Filename = Dir(FileSpec)
    ReDim FileList([TotalListe].Value + 1)
     
    If Filename = "" Then Exit Function
     
    Do While Filename <> ""
        Filecount = Filecount + 1
        FileList(Filecount) = Filename
        If Filename Like NomPh Then début = Filecount
        Filename = Dir()
    Loop
     
    If Filecount - début < 5 Then début = Filecount - 5
    GetFileList = Filecount
    End Function
    Problème résolu.
    Merci à tous.

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

Discussions similaires

  1. Comment positionner le curseur à l'aide d'une macro
    Par dede tabby dans le forum VBA Word
    Réponses: 3
    Dernier message: 15/11/2008, 20h22
  2. [Forms 6i] Positionnement du curseur dans une liste
    Par Veve44 dans le forum Oracle
    Réponses: 2
    Dernier message: 13/12/2005, 17h28
  3. [TChart] Comment utiliser le curseur sur une courbe ?
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 29/09/2005, 17h49
  4. Deplacemnt du curseur dans une ScrollBar
    Par crochepatte dans le forum MFC
    Réponses: 4
    Dernier message: 11/07/2005, 15h04
  5. Taille du curseur d'une scrollbar
    Par stof dans le forum MFC
    Réponses: 3
    Dernier message: 28/06/2005, 15h43

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