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

Contribuez Discussion :

Insertion de menus dynamiques dans un formulaire Excel


Sujet :

Contribuez

  1. #21
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut
    re
    Ta méthode donne exactement les mêmes résultats que la mienne.
    oui chez toi
    ta version avec *120 etc.... n'a pas de sens

    et si j'ai un pc en 96, un pc en 120, et un pc en un autre réglage, je fait quoi je change cette ligne du code a chaque fois que j'utilise ton fichier dans un de mes pc ????

    ma version "wscript.shell" te donne le coeff en toute circonstance sans coder de valeur numérique en dur a part 72 qui est universel
    et cela dans le tiens et le mien sans changer un yota du code c'est tout totomatic
    si tu prenais la peine de tester tu comprendrais
    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

  2. #22
    Membre du Club

    Homme Profil pro
    Ingénieur études et développements
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études et développements

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 42
    Points
    42
    Par défaut Un petit cour de mathématique
    Citation Envoyé par patricktoulon Voir le message
    ta version avec *120 etc.... n'a pas de sens

    et si j'ai un pc en 96, un pc en 120, et un pc en un autre réglage, je fait quoi je change cette ligne du code a chaque fois que j'utilise ton fichier dans un de mes pc ????
    Soit x le nombre de DPI du poste de l'utilisateur
    Exemple : 96 sur mon poste et 120 sur le tien

    On connait le nombre de taux de conversion pour 96 DPI : 1,33333333333
    Donc, le taux de conversion pour 1 DPI est de 1,33333333333 / 96 = 0,0138888888888542

    Il suffit alors de multiplier ce taux par le nombre x de DPI : x X 0,0138888888888542

    Sur mon PC cela donne : 96 X 0,0138888888888542 = 1,33333333333

    Sur ton PC cela donne : 120 X 0,0138888888888542 = 1,666666666662504

  3. #23
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    je crois que tu ne comprends pas mon intervention sur ce point
    ok ok ok pour ton calcul ca il n'y a pas de soucis

    mais dis moi un peu comment et en quelle circonstance tu va chercher ton "120"
    réfléchi un peu
    comment veux tu que vba devine si tu es en 120 ou 96 avec ton calcul en dur
    toi en 96 et moi en 120 ton 4/3 fera toujours 1.333.... ou ton 1.3333../96 * 120 fera toujours 1.66....
    sauf que chez toi la formule avec 120 ne sera pas bonne tandis que chez moi oui
    je ne sais plus comment te le faire comprendre que c'est du 120 ou 96 que je te parle qui est inconnu

    a moins d'utiliser les api ou le wscript.shell readkey ou le pointstoscreenpixel(x/y) pour excel qui te le donne bon (chez toi/chez moi) et sans calcul

    bref j'ai la migraine la
    fait comme tu veux c'est ton projet après tout
    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

  4. #24
    Membre du Club

    Homme Profil pro
    Ingénieur études et développements
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études et développements

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 42
    Points
    42
    Par défaut
    comment et en quelle circonstance tu va chercher ton "120"
    réfléchi un peu
    comment veux tu que vba devine si tu es en 120 ou 96 avec ton calcul en dur


    Grâce à l'API GetDeviceCaps
    HandleBureau = GetDC(0)
    DPI = GetDeviceCaps(HandleBureau, LOGPIXELSX)
    ReleaseDC 0, HandleBureau

    toi en 96 et moi en 120 ton 4/3 fera toujours 1.333.... ou ton 1.3333../96 * 120 fera toujours 1.66....
    sauf que chez toi la formule avec 120 ne sera pas bonne tandis que chez moi oui
    je ne sais plus comment te le faire comprendre que c'est du 120 ou 96 que je te parle qui est inconnu
    => Ca ne l'est pas car il a été déterminé par la variable DPI.

    Je t'invite à te replonger dans tes cours de troisième concernant les équations au premier degré.

    x/DPI=1.33/96 <=> x = 1.33/96*DPI

  5. #25
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut Re
    re
    bonjour
    t inquiet j'ai pas de soucis avec ce genre de calcul
    et oui avec une variable(alimentée par api ou autre) ok mais pas 120 en dur c'est ce que j'essaie de te dire en vain visiblement

    je viens de télécharger ton exemplaire a nouveau
    tu a encore changé plein de choses a première vu

    un petit détail sans importance mais comme tu a mis cette option autant la faire en entier
    tu a un effet rollover sur les boutons sauf que tu a pas le retour c'est dommage l'effet ne remet le bouton a l'origine que d'un bouton a l'autre mais quand on va dans le UserForm le dernier bouton reste en effet survolé( inclus donc l'usf dans ta classe pour l'évènement move qui remettra le dernier bouton survolé a l'origine

    averti quand tu met a jour ton fichier que l'on travaille sur le même
    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

  6. #26
    Membre du Club

    Homme Profil pro
    Ingénieur études et développements
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études et développements

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    et oui avec une variable(alimentée par api ou autre) ok mais pas 120 en dur c'est ce que j'essaie de te dire en vain visiblement ]=> Voir point 1

    un petit détail sans importance mais comme tu a mis cette option autant la faire en entier
    tu a un effet rollover sur les boutons sauf que tu a pas le retour c'est dommage l'effet ne remet le bouton a l'origine que d'un bouton a l'autre mais quand on va dans le UserForm le dernier bouton reste en effet survolé( inclus donc l'usf dans ta classe pour l'évènement move qui remettra le dernier bouton survolé a l'origine

    averti quand tu met a jour ton fichier que l'on travaille sur le même=> Voir point 2


    Point 1 :

    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
    Public Function RenvoieCoordEcran(Ctrl As Control) As Double()
    'Cette fonction renvoie les coordonnées de pixels situés aux coins du contrôle Ctrl.
    'Elle renvoie un tableau contenant les coordonnées suivantes :
    '- Abscisse en haut à gauche
    '- Ordonnée en bas à gauche
    '- Abscisse en haut à droite
    '- Ordonnée en bas à dtoite
     
    Dim DimForm As RECT, EpaisseurX As Long, EpaisseurY As Long, Coords(3) As Double, Pt2Px As Double, HandleBureau As Long, DPI As Integer
     
    'https://www.ninjaunits.com/converters/pixels/points-pixels/
    'How many Pixels are in a Point? : 1 pt = 1.333(3) px => Pour 96 DPI
    'How many Points are in a Pixel? : 1 px = 0.75 pt => Pour 96 DPI
     
    'Pour déterminer le taux de conversion, on applique un ratio
     
    HandleBureau = GetDC(0)
    DPI = GetDeviceCaps(HandleBureau, LOGPIXELSX)
    ReleaseDC 0, HandleBureau
     
    Pt2Px = (1 + (1 / 3)) / 96 * DPI
     
    GetWindowRect GetActiveWindow, DimForm 'Coordonnées rectangle du formulaire contenant le contrôle en Pixels
     
    With Ctrl
        EpaisseurX = (.Parent.Width - .Parent.InsideWidth) / 2 'Epaisseur de la bordure verticale. / 2 car il y a 2 bordures (gauche et droite)
        EpaisseurY = (.Parent.Height - .Parent.InsideHeight) - EpaisseurX 'Epaisseur de la bordure horizontale
        'Le - EpaisseurX correspond à la hauteur de la bordure du bas qui possède la même épaisseur que celles des côtés
     
        Coords(0) = DimForm.Left + (EpaisseurX + .Left) * Pt2Px
        Coords(1) = DimForm.Top + (EpaisseurY + .Top + .Height) * Pt2Px
        Coords(2) = DimForm.Left + (EpaisseurX + .Left + .Width) * Pt2Px
        Coords(3) = DimForm.Top + (EpaisseurY + .Top) * Pt2Px
    End With
     
    RenvoieCoordEcran = Coords
    End Function
    A quel endroit vois-tu 120 ?

    Point 2

    C'est fait.

  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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    dans ton code non mais dans tes posts oui tu utilisais "120"
    comme je te l'ai dis tu a changé plusieurs fois ton fichier et moi je travaillais avec le premier que tu a posté
    c'est pour ca que je t'ai dis "d'avertir lorsque tu change de fichier"

    tu a vu pour le rollover qui ne relâche pas quand on passe dans l'UserForm??

    Nom : demo2.gif
Affichages : 186
Taille : 69,6 Ko

    mon model rollover perso
    Nom : demo2.gif
Affichages : 177
Taille : 96,9 Ko
    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 du Club

    Homme Profil pro
    Ingénieur études et développements
    Inscrit en
    Avril 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur études et développements

    Informations forums :
    Inscription : Avril 2014
    Messages : 12
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    re
    dans ton code non mais dans tes posts oui tu utilisais "120"
    120 était un exemple pour t'expliquer la démarche.

    Concernant ton Roll Over, lorsque l'on se déplace sur le formulaire, les étiquettes sont réinitialisées, comme tu pourras le constater en téléchargeant les fichiers.

  9. #29
    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 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    ok
    correction du rollover effective sur le nouveau fichier je vais regarder ta méthode
    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

Discussions similaires

  1. [XL-2016] Utilisation des menus dynamique dans le ruban excel
    Par Rustabraga dans le forum Excel
    Réponses: 6
    Dernier message: 16/07/2018, 17h44
  2. [MySQL] Liste dynamique dans un formulaire
    Par Odulo dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 20/01/2007, 16h11
  3. Réponses: 4
    Dernier message: 23/04/2006, 22h27
  4. Création de champ dynamique dans un formulaire
    Par alex75 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/04/2006, 17h00
  5. Insertion bouton d'option dans un formulaire
    Par Le Rebel dans le forum Langage
    Réponses: 1
    Dernier message: 09/02/2006, 10h36

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