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

VBA Discussion :

ListBox1 & MouseMove


Sujet :

VBA

  1. #21
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    et c'est ce qui va être fait, du moins par moi, tant que, n'ayant toujours pas fait l'effort demandé (montrer que tu sais la signification exacte de ce que tu copies/colles), tu n'auras pas répondu aux questions posées.
    A toi de voir, donc ...

    Unparia, je suis décontenancé .... Que vous répondre de plus à ce que je vous ai déjà répondu ?
    Incompétent en VBA ? Pas vraiment, mais petit joueur surement !! Vu la complexité du langage, j'en découvre tous les jours ... et je me dis qu'il doit falloir une soilde formation pour tout écrire !!
    Naif à copier/coller tout ce qui me tombe sous la main ? j'ai la capacité d'analyser et de comprendre ce que je lis dans les forums tels que celui-là. Si cela peut répondre à ma demande, je récupère et l'adapte à mes besoins. Comme cette fichue ligne qui est entre vous et moi. Sinon poubelle. Que je n'en comprenne pas toute la profondeur ou l'impact que cela peut avoir, oui sans aucun doute ! Qu'il y aurait certainement mieux à faire, oui sans aucun pb !!! Trop perfectionniste je passe souvent des heures, des jours pour faire mieux et me satisfait lorsque cela marche comme je le veux. Si je vous confiais mon application Exploitation ou à Patrick, je ne la reconnaitrais plus à son retour !!. Je suis autodidacte dans plein de domaines : musical, sportif, bricolage y compris dans ce qui fut mon domaine professionnel !! Je fais de mon mieux.
    Bien évidemment, des défauts y en a dans chacun d'eux !! J'ai rarement fait appel à de l'aide extérieur mais comme il faut vivre avec son temps, je fouille sur internet par facilité. Et comme je vous l'avais écrit dans un message précédent, j'en suis à ma seconde demande sur ce site ..... la dernière ?
    Pour terminer, je joue au golf depuis 25 ans ... Une chose que l'on apprend au début, mais que l'on met longtemps, trop même, à admettre est que la perfection n'existe pas, puis une seconde au cours des années : l'humilité.

    Il me faut répondre à Patrick sur sa proposition de mesure de hauteur d'un label. La moindre des choses est de le faire Ca le satisfera et moi en certainement moins bête !
    Kirtap

  2. #22
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    Réponse à Patrick
    j'ai effectué le test de hauteur de font. Parfait. J'ai découvert au passage AutoSize ..... je ne sais pas ce que je vais en faire mais je sais maintenant son effet !
    J'ai souri à lire que vous ne saviez pas que Font était un Objet !! Oh !!!
    Vous citez dans un message la fonction Timer. J'ai travaillé dans cette voie là, avec ou sans GetCursorPos mais sans succès. Je n ai pas trouvé la logique pour obtenir le résultat voulu. Et c'est là, je crois que j'ai abandonné piteusement et suis allé sur ce site ...
    Je poursuis mes lecture ....

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Re-moi et je vais te donner une dernière chance, celle de faire au moins un algorithme (donc sans code informatique) sur ces bases élémentaires :
    1) la propriété topindex d'une listbox détermine l'index de l'article affiché en tête de la listbox à un instant t quelconque (donc à quelque état que ce soit du déroulement de la listbox)
    2) les paramètres X et Y de la procédure Move sont l'abscisse et l'ordonnée du curseur de la souris par rapport à l'angle supérieur gauche de la listbox
    3) écris ici l'algo (pas le code) qui te permettrait de savoir quelle ligne (donc quel index) de la listbox est survolé si tu connaissais la hauteur h de chaque ligne de la listbox

    En te faisant observer que l'écriture d'un tel algorithme ne nécessite aucune connaissance autre de celle d'arithmétique niveau CM2

    En d'autres termes : devoir arithmétique simple . Hors informatique (on pourrait aussi bien parler de règle graduée, de corde à noeuds, etc ... et d'un coulisseau en lieu et place de listbox et de curseur de souris.
    J'ai une règle graduée verticale dont la première graduation (tout en haut) est de valeur 20. j'ai déplacé mon curseur et il se trouve à la distance Y de cette graduation-là. Je connais la hauteur h qui sépare deux graduations. A quelle graduation de ma règle correspond la position de mon curseur ? (devoir de CM2)

    Et cet effort-là, au moins, tu vas le faire oui ? (une simple série d'opérations arithmétiques élémentaires, en les commentant!). Quand-même !!!
    Montre-le moi et je le traduirai alors volontiers en code informatique (VBA).

    Pour être clair : partager les connaissances est une chose (et c'est ce que j'accepte de faire). Donner ou demander un produit tout fait en est une autre, n'ayant rien à voir avec un "partage de connaissances")
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  4. #24
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    Unparia,
    Je crois que malheureusement nous sommes dans une impasse ....
    Le code je l'ai. Modifié depuis pour être plus dans la conformité VBA avec l'aide de Patrick
    "Donner ou demander un produit tout fait en est une autre"
    Avez vous lu quelque chose de moi qui ressemble à la demande d'une procédure ou autre toute faite ? .. Je ne crois pas.
    Je n'ai fait que demander s'il existait un moyen de survoler de l'ItemX à l'itemXX d'une Listbox en occultant les actions sur les Item intermédiaires car non concernées.
    Vous l'avez écrit "en 2 coups de cuillères à pot" pour vous citer. Moi à pleines louches je n'y suis pas parvenu. On ne joue pas dans la même catégorie !!
    Je ne sais pas faire. Point. Et là, j'ai tout dit
    J'ai 65 ans. Jai un peu passé l'âge de vouloir attraper la queue du Mickey en se levant de la voiture du manège et qu'on remonte toujours un plus haut à chaque passage.
    Je me suis inscrit sur un site d'"entraide" pas d'"aumône".
    Il n'appartient qu'à vous de me fournir ce code si cela vous fait plaisir, m'en donner également, et d'en tirer satisfaction, ou pas.
    Je vous laisse prendre la décision que vous jugerez la meilleure pour vous.
    Kirtap

  5. #25
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    J'ai 65 ans.
    Oui, jeunot ? Et alors ? (tu deviens maintenant irrespectueux à ton insu à l'égard de tes plus qu'aînés).
    Allez !
    Bonne chance. (je t'avais donné une dernière opportunité de montrer ton implication réelle, en vain) --->> j'efface de ce pas le travail que j'avais (en t'attendant en vain) fait pour toi seul.
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  6. #26
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    Unparia,
    Au moins un des 2 sortira satisfait de tous ces échanges, et en toute dignité !!
    J'aurais aimé une meilleure fin .... mais c'est ainsi. Cela ne m'empêchera pas d'écouter ma musique .... qui est surement bien plus enrichissante que qques codes de VBA !!
    Bien à vous
    Kirtap

  7. #27
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    t'inqiet kirtap
    c'est la personalité de jacques il fait pareil avec moi et tout les autres grace a dieu il n'a pas de gourdin
    mon exemple fonctoonne parfaitement bien
    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

  8. #28
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    Bonsoir Patrick
    Merci de votre message.
    Jacques, puisque tel est son prénom, a une ligne de conduite qui aboutit à un choix. Y a pas mort d'homme. Dans d'autres circonstances il y en a eu par décision humaine !!
    J'ai lu, répondu avec beaucoup de respect, de vérité et de calme .. Je ne me reproche pas grand chose.
    Vous vous connaissez tous les 2 et je ne voudrais pas que ces échanges ne vous brouille. (Je suis où ? sur un site de développeur ou sur un site de cœurs brisés )
    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
    Private Sub LB_Premier_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    H = Label1.Height
    With LB_Premier
        yy = Round((Y / H) + .TopIndex)
        If Y < 3 And yy > 0 Then yy = yy - 1
        If Y > .Height - 3 Then yy = yy + 1
        If yy > .ListCount - 1 Then yy = .ListCount - 1
        .ListIndex = yy
    End With
    End Sub
     
    Private Sub UserForm_Activate()
    'With LB_Premier
    '    .List = Split(Application.Rept("toto,", 50), ",")
    'End With
    With Label1
        .BorderStyle = 0
        .AutoSize = True
        .Caption = "Aa"
         Set .Font = LB_Premier.Font
    '     H = .Height
    End With
    End Sub
    J'ai adapté votre code sur la fonctionnalité PlayListe de mon application. Elle fonctionne très bien, même si je n'ai pas tout compris comme 'If Y < 3' pourquoi 3?. Je n'ai pas testé en modifiant cette valeur pour en voir les effets. A l'occasion je le ferai.
    Je vous en remercie.
    C'est l'illustration parfaite de ce que j'ai eu l'occasion d'écrire à savoir : si ce que je n'invente pas fonctionne et me satisfait, je passe à autre chose.
    C'est mieux écrit dans l'esprit VBA, mais mon souci de départ n'est toujours pas résolu. Je vais continuer à prospecter ou à me creuser les ménages (cher à Jacques !)
    Kirtap

  9. #29
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Patrick
    Tu es "gentil", mais (et cela n'a pas échappé au demandeur) :
    ces trois lignes de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Y < 3 And yy > 0 Then yy = yy - 1
    If Y > .Height - 3 Then yy = yy + 1
    If yy > .ListCount - 1 Then yy = .ListCount - 1
    sont carrément du "bricolage" qui ira bien dans la plupart des cas, mais plantera l'application dans d'autres
    J'y suis allé DIRECTEMENT (sachant lire un code) au cas de plantage -->> en plein dedans.
    Fais maintenant comme moi : analyse ton propre code, débrouille-toi pour y localiser la jolie faille et provoque-la (il te faudra d'abord analyser pour y parvenir, hein ...) -->> tu te trouveras alors (si tu as su la provoquer) avec ce petit message accompagné d'un fort désagréable plantage :
    Nom : test.JPG
Affichages : 191
Taille : 14,0 Ko
    Tu as commencé ? Finis, maintenant. Mais de manière orthodoxe et sans faille, hein ...
    Je vous laisse
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  10. #30
    Membre à l'essai
    Homme Profil pro
    retraité
    Inscrit en
    Août 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Août 2017
    Messages : 49
    Points : 18
    Points
    18
    Par défaut
    Patrick
    (et cela n'a pas échappé au demandeur) :
    Cà par contre ce n'est pas gentil à mon égard !! Limite ridicule ...
    Cher Unparia, vous vous êtes exclu volontairement de la discussion alors s'il vous plait laisser Patrick s'exprimer tant qu'il le souhaitera. Que cela ne vous en déplaise.
    Si vous avez des reproches à lui faire sur sa générosité ou sur son code bancal, alors ouvrez un forum et faites lui en part. Ou bien écrivez lui directement si cela est possible et expliquez-vous.
    Mais s'il vous plait, laissez nous entre Patrick puisque vous aurez sans aucun doute décoder que Kirtap veut dire ....et puis non je ne le vous dirais pas !! Allez souriez !!!
    Mes respectueuses salutations.
    Kirtap

  11. #31
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu n'as vraiment pas compris, là, que je te félicitais au contraire d'avoir su relever cet aspect-là !
    Bref ... Débrouillez-vous sans moi. Tu reviendras ici lorsque ce code aura planté ton application dans certaines circonstances. Pas grave.

    PS : j'avais pourtant prévenu (mon message 9) -->>
    il va y avoir nécessairement une petite gymnastique de plus à faire (deux, en fait).
    Et elles sont toujours nécessaires.

    Je veux bien (mais je refuse d'aller plus loin dès lors que l'effort demandé à trois reprises n'a pas été fait, ni même commencé) "souffler" un détail qui n'est pas sans importance : une listbox de VBA (ce n'est pas le cas de celles de VB6) est en partie gérée par un "hooking", avec ses conséquences induites.
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #32
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    je redoone mon code
    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
    Dim H
    Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    With ListBox1
    yy = Round((Y / H) + .TopIndex) 'sans round ca marche aussi
    If Y < 3 And yy > 0 Then yy = yy - 1
    If Y > .Height - 3 Then yy = yy + 1
    If yy > .ListCount - 1 Then yy = .ListCount - 1
    .ListIndex = yy
    End With
    End Sub
     
    Private Sub UserForm_Activate()
    With ListBox1: .List = Split(Application.Rept("toto,", 50), ","): End With
    With Label1: .BorderStyle = 0: .AutoSize = True: .Caption = "Aa": Set .Font = ListBox1.Font: H = .Height: End With
    End Sub
    et je montre la demo
    Nom : demo2.gif
Affichages : 244
Taille : 354,3 Ko

    @jacques alors sincerement je me demande comment tu a bien pu le faire planter
    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. #33
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    jacques alors sincerement je me demande comment tu a bien pu le faire planter
    Oh ... très facilement (après lecture attentive du code)
    Et de deux manières :
    - l'une (évidente) en jouant avec la souris
    - l'autre (presque aussi évidente) en jouant avec la police (de caractères, hein..)
    Je t'ai par contre dans la foulée donnée un indication. Elle est loin d'être anodine. Sa découverte a même été le "point de départ" (le déclic, plutôt) d'une réflexion qui m'a conduit à une solution que tu es très impatient de connaître (autre discussion) .

    PS : arrête s'il te plait avec tes "animations". Elle ne prouvent absolument rien d'autre que les gestes que TU fais lors de l'animation ne sont pas dans le cas de ceux qui aboutiraient à un plantage ou une erreur. C'est tout ce qu'elles montrent, ces "animations" . Rien d'autre.
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  14. #34
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tiens, Patrick
    Tu vas commencer à comprendre à quel point le "grattage" est une étape importante -->>
    Je viens même d'en trouver une TROISIEME encore. Et celle-là, je vais te la donner car on ne penserait pas spontanément à cela (ce qui justifierait qu'elle puisse "échapper").
    Prêt ?
    Mets-toi à la place d'un utilisateur
    Installe-toi
    - clique du bouton gauche, maintenu ensuite pressé, sur un item
    - bouton toujours pressé, sors donc par le haut hors de la listbox RAPIDEMENT, alors que le topindex = 0
    Celle-là au moins, de possibilité "d'accident", est ultra-facile à corriger. Deux bêtes conditions de rien du tout.
    Je te laisse maintenant "gratter" et découvrir le reste toi-même.
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  15. #35
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    j'ai corrigé l'erreur avec les bouton appuyés

    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
    Dim H
    Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    TextBox1 = "bouton " & IIf(Button = 1, "gauche", "droite") & " de la souris appuyée"
    End Sub
     
    Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    With ListBox1
    yy = Round((Y / H) + .TopIndex)
    If Y < 3 And yy > 0 Then yy = yy - 1
    If Y > .Height - 3 Then yy = yy + 1
    If yy > .ListCount - 1 Then yy = .ListCount - 1
    If yy < -1 Then yy = -1
    .ListIndex = yy
    End With
    End Sub
     
    Private Sub UserForm_Activate()
    With ListBox1: .List = Split(Application.Rept("toto,", 50), ","): End With
    With Label1: .BorderStyle = 0: .AutoSize = True: .Caption = "Aa": Set .Font = ListBox1.Font: H = .Height: End With
    End Sub
    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

  16. #36
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    j'ai corrigé l'erreur avec les bouton appuyés
    Bien. Tu vois, quand on te met le nez dessus, elles se manifestent, hein, les erreurs d'approche qui t'échappent ...
    Continue. Gratte (c'est important, je le répète), analyse, trouve maintenant les autres et corrige-les également !
    Cela vaut toujours mille fois mieux que de se précipiter, etc ...
    Bonne chance

    EDIT : je te les ai pourtant signalées en mon message 29, les lignes de code responsables de tes maux --->>
    If Y < 3 And yy > 0 Then yy = yy - 1
    If Y > .Height - 3 Then yy = yy + 1
    If yy > .ListCount - 1 Then yy = .ListCount - 1
    Ce n'est pas à un développeur avancé que je vais devoir rappeler, n'est-ce pas, que ce genre de maladresse (valeurs figées en dur) est à éviter comme la peste, n'a rien d'orthodoxe et finit inévitablement par faire tomber ici ou là, à tel ou tel autre moment, au fond du ravin, hein ... (le pire est que ce n'est pas faute de te l'avoir également dit à plusieurs reprises en d'autres occasions. En vain, apparemment )
    La voilà, Patrick, la raison principale de l'attitude que j'observe donc maintenant : te signaler qu'il y a des failles, mais te forcer à les trouver toi-même plutôt que de te contenter d'attendre (comme presque toujours ... c'est devenu une habitude...) que d'autres te les démontrent UNE par UNE, afin que tu commences à les corriger.
    Parviens-tu au moins à comprendre cet aspect élémentaire qui est le résultat de la lassitude que génèrent certaines manières ?


    EDIT 2 : autre chose, maintenant, Patrick :
    relis attentivement ton message d'entrée dans cette discussion (ton message N° 8) --->>
    pour calculer le heit d'un item de listbox il te faut pas calculer en fait
    prend un label
    met lui le fontsize idem a la liste
    pareil pour le fontname
    le bold si la liste l'est
    le borderstyle=0
    le autozize a true
    dans la caption met"Aa"
    recupere ensuite le height du label voila tu a ton height d'un item de la liste

    dis merci a jacques
    Je n'ai pas "bronché" à ce moment-là, car je me disais qu'il s'agissait là de petits oublis de ta part, oublis que tu saurais ensuite corriger, puisque tu citais justement une méthode que je t'avais apprise.
    Mais non -->> que nenni --->> tu as écrit ton code avec ces oublis-là ! --->> je dénonce le caractère incomplet de ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Activate()
    With ListBox1: .List = Split(Application.Rept("toto,", 50), ","): End With
    With Label1: .BorderStyle = 0: .AutoSize = True: .Caption = "Aa": Set .Font = ListBox1.Font: H = .Height: End With  '<<<<<<<<<<<<<<==============
    End Sub
    Qui vient, si non complété alors par l'utilisateur en mode création, provoquer quelques autres petites erreurs de calcul dans certains cas, de comportement dans d'autres ...
    Tu voudras bien comprendre que je ne veux pas partager la "paternité" (puisque tu rappelles que cette astuce vient de moi) de ce qui est dit là. Il ne manquerait plus que cela, tiens !
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  17. #37
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour jacques
    c'est de ca que tu parle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    P
    rivate Sub UserForm_Activate()
    With ListBox1: .List = Split(Application.Rept("toto,", 50), ","): End With
    With Label1:  .Visible = False: .BorderStyle = 0: .AutoSize = True: .Caption = "Aa": .AutoSize = False: .Width = 200: Set .Font = ListBox1.Font: H = .Height: End With
    End Sub
    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

  18. #38
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    c'est de ca que tu parle
    Bien évidemment, que c'est de cela, que "je parle" (entre autres, hein).
    La ligne de ton code que j'ai mise en rouge est I N C O M P L E T E
    Et nécessite, telle quelle, l'intervention de l'utilisateur pour compléter en mode création, ce qui n'est pas dans cette ligne de code.
    Mon message précédent n'est pas clair ?

    Tu vas te réveiller, oui ?
    Sans préciser d'autres propriétés et si elles restent donc celles par défaut, ton calcul de H est un peu imprécis dans certains cas et totalement erroné dans d'autres !
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  19. #39
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bon ..
    Le calme souhaitable étant apparemment à nouveau là, je reviens vers toi, kirtap -->>
    Je pense que tout ce que tu as pu lire jusqu'ici a commencé à te faire comprendre que certaines acrobaties pouvaient conduire à des surprises si non totalement maîtrisées.
    Il est bien évidemment possible de les faire convenablement, ces acrobaties-là, mais pose-toi maintenant la question principale :
    Pourquoi faire des cascades alors que la listbox a précisément été conçue pour faire face, sans aucun code et sans aucune faille, à ce que tu veux faire-là, à savoir sélectionner l'article se trouvant sous ton curseur, en faisant dérouler les articles ? Juste pour le plaisir ?

    Alors qu'il te suffit de faire cette opération, dans tous les sens que tu veux, en gardant pressé le bouton gauche de ta souris ! C'est POUR CELA, que le concepteur de la listbox, a rendu tout simplement automatique un tel mécanisme.
    Il aurait tout aussi bien pu le faire sans aucun bouton du tout, mais c'eût été d'une très grande maladresse (pour plusieurs raisons). Regarde d'ailleurs comment fonctionne le mécanisme similaire des menus (marque-page) de FireFox. Autant il permet la sélection à la volée au parcours des items, autant il s'abstient (et pour cause) de continuer à faire automatiquement dérouler lorsque le curseur est tout en haut ou tout en bas. Il impose alors de passer à une petite flèche prévue à cet effet. L'équivalent en ce qui concerne ton mécanisme est tout simplement le bouton gauche maintenu enfoncé.

    Voilà kirtap.
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  20. #40
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Maintenant, kirtap

    Si tu reviens ici en acceptant :
    1) d'utiliser la listbox comme l'a prévu son concepteur (utilisation du bouton gauche demeuré pressé, comme dit plus haut) plutôt que de manière fantaisiste/futile
    2) d'organiser tes données de manière astucieuse (et je te dirai alors comment)
    --->>
    tu auras la TOTALITE de ce qu'a exposé ton long message (le 1) + listbox2 en fonction de listbox1) en seulement .... DEUX (pas une seule de plus) lignes de code

    A toi de voir ...
    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 .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

Discussions similaires

  1. Envoie Mouseclick et MouseMove à une appli DirectX
    Par cpdump dans le forum DirectX
    Réponses: 3
    Dernier message: 21/11/2003, 14h48

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