1. #21
    Membre à l'essai
    Homme Profil pro
    Auditeur informatique
    Inscrit en
    décembre 2017
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Auditeur informatique

    Informations forums :
    Inscription : décembre 2017
    Messages : 11
    Points : 20
    Points
    20

    Par défaut Ne tourne-t-on pas en rond?

    Pour trouver les bonnes réponses, il faut poser les bonnes questions?
    Ce cher Softwood manque d'explications sur les raisons réelles qui pousse au MsgBox avec surtout les propositions qui sont faites par ce MsgBox et les évenements qui en découlent.
    En ce qui me concerne, je pense que la solution la plus simple, pour un Mac bien entendu reste le Frame(Patrick Toulon) couvrant totalement L' UF avec le rajout de (Pijaku) .ZOrder.
    Pour ce qui me concerne, il y a la une réponse plus que satisfaisante a tous les cas de figures qui furent imaginer.
    Cher Softwood, il n'y a plus qu'a!

  2. #22
    Expert éminent sénior
    Avatar de patricktoulon
    Profil pro
    Inscrit en
    avril 2009
    Messages
    11 337
    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 : 11 337
    Points : 17 901
    Points
    17 901
    Billets dans le blog
    1

    Par défaut re

    re
    juste pour m'amuser avec ca
    voila comment avec une frame meme plus petite que le userform je la rend Bloquante
    j'en ai meme fait une sorte de fonction message réutilisable pour plusieurs situations avec la possibilité de changer le texte du message

    voila le 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
    16
    17
    18
    Private Sub CommandButton1_Click()
    message "tu fait quoi la !!!????" & vbCrLf & "tu veux fermer ou pas ?"
    End Sub
     
    Private Sub message(texte)
    Set blanck = Me.Controls.Add("Forms.Image.1", "blanck")
    With blanck: .Top = 0: .Left = 0: .Width = Me.Width: .Height = Me.Height: .ZOrder: .BackStyle = 0: End With
    With Frame1
    .Visible = True: .ZOrder: .Width = 240: .Height = 108: .Left = (Me.InsideWidth - .Width) / 2: .Top = (Me.InsideHeight - .Height) / 2: End With
    textemessage = texte
    End Sub
    Private Sub non_Click()
    Frame1.Visible = False
    Me.Controls.Remove ("blanck")
    End Sub
    Private Sub oui_Click()
    Unload Me
    End Sub
    j'ai donc mis dans le userform des control peu importe les quels au hazard

    j'ai un bouton "test" qui va tester le message avec le texte du message ( que l'on peut changer/réutilisation de la fonction)
    dans la frame j'ai un bouton "oui" un bouton "non"
    comme dans la demo je reduit la taille de la frame c'est soit ca soit la mettre avisible false je prefere la reduire comme ca je peux continuer a placer mes controls dans VBE
    apercu dans l'editeur VBE
    Nom : demo2.gif
Affichages : 41
Taille : 111,3 Ko

    apercu en fonctionnement
    Nom : demo1.gif
Affichages : 45
Taille : 166,9 Ko

    le principe est simple j'ajoute une image dynamiquement en backstyle transparent + zorder ce qui a pour effet de ne plus pouvoir toucher les controls et je place la frame au centre exact de l'userform + zorder
    ce qui fait que les deux controls le plus au top de la hierarchie sont la frame puis juste en dessous l'image et le reste en dessous
    voila pas vu pas pris et la sub message est utilisable plusieur fois dans des conditions differentes avec message différents
    l'image est supprimer si on ferme pas si on ferme elle est automatiquement detruite puisqu'elle n'est pas buidin
    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

  3. #23
    Membre expert
    Homme Profil pro
    PAO
    Inscrit en
    octobre 2014
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : octobre 2014
    Messages : 1 848
    Points : 3 083
    Points
    3 083

    Par défaut

    re,

    il est clair que l'on peut passé par différents contournement, mais il est étrange qu'un simple MsgBox ne marche pas correctement,
    il y a surement autre chose qui n'a pas été détecté … problème d'installation, … etc à voir

    sinon voilà un autre contournement à tester sur Mac selon le fichier test posté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ToggleButton2_Click()
    Dim rep$
        #If Mac Then
            rep = MacScript("set theDialogText to ""Be carrefull. Would you like to continue?""" & Chr(13) & _
                            "display dialog theDialogText buttons {""Don't Continue"", ""Continue""} with icon caution")
        #Else
            MsgBox "mon message"
        #End If
    End Sub
    Cordialement

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Si cette réponse vous a aidé, n'hésitez pas à cliquer sur , dans le cas contraire ne faites rien , mais si vous êtes pas content -- Pensez à la Balise [ code][/code ] => Exemple

    Pensez à mettre une fois votre problème solutionné

  4. #24
    Futur Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : septembre 2011
    Messages : 15
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par RyuAutodidacte Voir le message
    Re,

    J'ai testé le fichier test :
    - pour le MsgBox, j'ai bien "Mon message" qui apparaît
    - pour l'useform il apparaît bien au-dessus aussi (useform vide)

    Donc tout 2 au 1er plan et tant que l'on as pas fermé l'useform ou le MsgBox, on a pas la main.

    j'avais l'intention de mettre mon Mac à jour avec la dernière version système, qd je l'aurais fait je referai un test …
    Merci pour ce test
    Tout à fait conforme au comportement de test sous windows et sous MAC 2011 et donc tu me le confirmes avec Excel MAc vers 15
    Mais ce n'est pas le cas pour la version 16 !!
    le message passe "dessous" et comme par defaut Mac centre userform et msgbox mes utilisateurs ne 'voient' pas le message ; le userform est difficile à déplacer car assez grand ..
    par contre UF2 reste bien dessus

  5. #25
    Futur Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : septembre 2011
    Messages : 15
    Points : 9
    Points
    9

    Par défaut re

    Citation Envoyé par RyuAutodidacte Voir le message
    re,

    il est clair que l'on peut passé par différents contournement, mais il est étrange qu'un simple MsgBox ne marche pas correctement,
    il y a surement autre chose qui n'a pas été détecté … problème d'installation, … etc à voir

    sinon voilà un autre contournement à tester sur Mac selon le fichier test posté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ToggleButton2_Click()
    Dim rep$
        #If Mac Then
            rep = MacScript("set theDialogText to ""Be carrefull. Would you like to continue?""" & Chr(13) & _
                            "display dialog theDialogText buttons {""Don't Continue"", ""Continue""} with icon caution")
        #Else
            MsgBox "mon message"
        #End If
    End Sub


    Grand merci dès que possible je teste cette solution
    Moi aussi je trouve cela étrange et c'est bien pourquoi j'ai lancé cette discussion d'autant que mes utilisateurs sous mac ne m'avaient rien signalé.

    Effectivement il s'agit d'un formulaire de saisie "maison" et avant de fermer si l'utilisateur veut fermer sans avoir saisi certaines données je lui demande de confirmer sa décision.
    Donc la fonction MSGBOX répond sans problème à mon souhait sur PC quelle que soit la version de Excel et sur MAC Excel 2011 et tu le soulignes avec la version 15.38
    Mais sur la version utilisée 16.9 le comportement de msgbox n'est pas celui auquel on peut s'attendre
    Cordialement

  6. #26
    Futur Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : septembre 2011
    Messages : 15
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par Transitoire Voir le message
    Pour trouver les bonnes réponses, il faut poser les bonnes questions?
    Ce cher Softwood manque d'explications sur les raisons réelles qui pousse au MsgBox avec surtout les propositions qui sont faites par ce MsgBox et les évenements qui en découlent.
    En ce qui me concerne, je pense que la solution la plus simple, pour un Mac bien entendu reste le Frame(Patrick Toulon) couvrant totalement L' UF avec le rajout de (Pijaku) .ZOrder.
    Pour ce qui me concerne, il y a la une réponse plus que satisfaisante a tous les cas de figures qui furent imaginer.
    Cher Softwood, il n'y a plus qu'a!
    Cher Transitoire
    Tu pourra lire par ailleurs mes explications ... je veux donc bêtement que msgbox soir dessus pour obliger l'utilisateur à répondre à ma question.
    Comportement classique et usuel de MSgbox qui fonctionne sous PC Mac excel 2011 mac excel 2016 vers 15.38 (merci à RyuAutodidacte) mais pas sous Mac Excel 2016 version 16.9
    La fenêtre du MSGBOX passe dessous ... j'ai bien entendu fait plusieurs tests
    En tout cas vos contributions me permettent de contourner cette difficulté en attendant peut_être une mise à jour ou un correctif par Microsoft
    Comme tu le dis j'ai le choix et j'ai plus qu'à ...
    cordialement

  7. #27
    Membre expert
    Homme Profil pro
    PAO
    Inscrit en
    octobre 2014
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : octobre 2014
    Messages : 1 848
    Points : 3 083
    Points
    3 083

    Par défaut

    Re,

    j'ai mis à jour la version d'Excel sur Mac et je suis maintenant en version Excel 2016 Mac 16.10 (365). (version au dessus de la 10.9 mais MAJ oblige)
    de chez moi j'ai repris le fichier test, voilà ce que cela donne :

    Nom : Test1.gif
Affichages : 32
Taille : 193,0 Ko

    Donc le MsgBox marche parfaitement !!
    Cordialement

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Si cette réponse vous a aidé, n'hésitez pas à cliquer sur , dans le cas contraire ne faites rien , mais si vous êtes pas content -- Pensez à la Balise [ code][/code ] => Exemple

    Pensez à mettre une fois votre problème solutionné

  8. #28
    Futur Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : septembre 2011
    Messages : 15
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par patricktoulon Voir le message
    re
    bonjour
    je vais reposer la question autrement

    un msgbox par definition bloque toute action tant que l'on a pas repondu

    ce qui peut empecher l'utilisateur de faire une betise

    alors qu'en est il de tes besoins?????
    1. parce que la methode (userform2) n'est pas bloquante
    2. par ce que la methode (frame) peut l'etre seulement si la frame occupe tout la surface du userform et au dessus de tout les autre controls



    un test qui serait bien a faire et tres simple pour ne pas jetter la solution du userform 2

    dans le activate du userform2 mettre le msgbox en mode (response) et dans la condition du response fermer le usf2( et faire ce qui aurait été prevu sans)
    juste pour voir si le msgbox apparait au dessus
    ca fait un peu beaucoup selon moi pour un simple message mais il faut tester
    peut etre meme le faire dans le queryclose du usf2 etant donné que le usf2 a pris le dessus quand il c'est affiché
    a mediter

    allez juste pour tester
    met ce code dans ton userform2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Option Explicit
    Private Sub UserForm_Activate()
    Me.Height = 0: Me.Width = 0: Unload Me
    End Sub
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Dim style, response
    style = vbYesNo + vbCritical + vbDefaultButton2    ' Définit les boutons.
    response = MsgBox("maintenant que tu le vois le message" & vbCrLf & " tu veux faire quoi fermer ou pas fermer ", style, "un message qui se vois non de dieu!!!")
    If response = vbYes Then
    Unload UserForm1 ': Unload UserForm2
    Else
    Unload UserForm2
    End If
    End Sub
    voila et la c'est bloquant
    les deux userforms etant en mode modal =fakse bien sur
    Merci
    mes besoins étaient par ce msgbox de bloquer une fermeture de formulaire s'il était mal rempli. Il y a également d'autres cas où j'ai besoin d'une confirmation
    Je m'appretais donc à revoir tous les situations semblables et à utiliser l'une de vos propositions

    1° Dans de nombreuses situations je dois déjà utiliser la compilation conditionnelle (#If MAC ..) j'ai donc testé ce que tu m'avais proposé et ça fonctionne parfaitement
    mais mieux et comme je l'espérait

    Microsoft vient de faire une mise à jour d'office 365 pour MAC et MSGBOX fonctionne à nouveau correctement
    Pour info c'est la version 16.10

    Il n’empeche que cette discussion m'a permis de voir de multiples possibilités : frame 2 ème userform ... pas du tout inutile
    merci encore
    Cdt

  9. #29
    Membre expert
    Homme Profil pro
    PAO
    Inscrit en
    octobre 2014
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : octobre 2014
    Messages : 1 848
    Points : 3 083
    Points
    3 083

    Par défaut

    Bonsoir,

    j'ai utilisé AppleScript ici - c'est vraiment très utile car on peut vraiment étendre les possibilités avec vba …

    PS : j'étais resté à la version 15.xx d'Excel Mac 2016, et j'avais pesté sur le forum contre MS sur l'éditeur VBA qui ne servait plus à rien car une vraie galère pour coder (pour rappel) :
    https://www.developpez.net/forums/d1...r/#post9173128
    Je n'ai pas vraiment testé pour l'instant, mais on retrouve les fenêtres de l'éditeur VBA style grosso modo comme Excel PC 2010 avec, très important, les fameuses fenêtres des variables locales / d'exécution (auto complétion du code - enfin !!).
    Je pense que l'on est pas loin d'excel 2011, mais à mon avis il doit y avoir encore qq lacunes à découvrir …
    MS continue les efforts pour les users MAC stp - merci de reprendre le bon chemin

    Edit :
    2° Microsoft vient de faire une mise à jour d'office 365 pour MAC et MSGBOX fonctionne à nouveau correctement
    Pour info c'est la version 16.10
    Oui comme signalé au post #27
    Cordialement

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Si cette réponse vous a aidé, n'hésitez pas à cliquer sur , dans le cas contraire ne faites rien , mais si vous êtes pas content -- Pensez à la Balise [ code][/code ] => Exemple

    Pensez à mettre une fois votre problème solutionné

  10. #30
    Futur Membre du Club
    Homme Profil pro
    autodidacte
    Inscrit en
    septembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : autodidacte

    Informations forums :
    Inscription : septembre 2011
    Messages : 15
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par RyuAutodidacte Voir le message
    Bonsoir,

    j'ai utilisé AppleScript ici - c'est vraiment très utile car on peut vraiment étendre les possibilités avec vba …

    PS : j'étais resté à la version 15.xx d'Excel Mac 2016, et j'avais pesté sur le forum contre MS sur l'éditeur VBA qui ne servait plus à rien car une vraie galère pour coder (pour rappel) :
    https://www.developpez.net/forums/d1...r/#post9173128
    Je n'ai pas vraiment testé pour l'instant, mais on retrouve les fenêtres de l'éditeur VBA style grosso modo comme Excel PC 2010 avec, très important, les fameuses fenêtres des variables locales / d'exécution (auto complétion du code - enfin !!).
    Je pense que l'on est pas loin d'excel 2011, mais à mon avis il doit y avoir encore qq lacunes à découvrir …
    MS continue les efforts pour les users MAC stp - merci de reprendre le bon chemin

    Edit :
    Oui comme signalé au post #27
    oui ça fonctionne comme tu le montres dans ton dernier message donc il y avait un pb avec la vers 16.9
    des problèmes pour compatibilité Mac /// j'en ai eu (avec les listbox entre autres mais ce serait un autre sujet)
    Par contre contrairement à Mac Excel 2011 la version 2016 ne permet toujours pas la gestion des userform (on accède au code mais pas aux propriétés)
    Je vais me mettre à applescript car je trouve dommage d'avoir développer une appli qui ne fonctionne pas sous mac ..
    Je pense que l'on peux considérer la discussion comme étant close.
    cordialement

  11. #31
    Membre expert
    Homme Profil pro
    PAO
    Inscrit en
    octobre 2014
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : octobre 2014
    Messages : 1 848
    Points : 3 083
    Points
    3 083

    Par défaut

    bonjour,

    la version 2016 ne permet toujours pas la gestion des userform
    en effet je l'ai remarqué aussi !!

    mais en voyant cette évolution on peut dire que l'on va rester optimiste et que les choses vont se régler au fur et à mesure.

    PS : je conseille AppleScript très pratique, ainsi que certaine commande du terminal utilisable dans le code AS.
    je ferai qq test sur cette nouvelle version Excel 16.10 afin de voir si la commande AppleScript me renvoi bien le résultat dans Excel (j'ai un doute - sinon no problem sur la version 2011 que je conseille tjs de garder fortement)
    Cordialement

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Si cette réponse vous a aidé, n'hésitez pas à cliquer sur , dans le cas contraire ne faites rien , mais si vous êtes pas content -- Pensez à la Balise [ code][/code ] => Exemple

    Pensez à mettre une fois votre problème solutionné

  12. #32
    Membre expert
    Homme Profil pro
    PAO
    Inscrit en
    octobre 2014
    Messages
    1 848
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : octobre 2014
    Messages : 1 848
    Points : 3 083
    Points
    3 083

    Par défaut

    Bonsoir,

    voilà un petit test rapide :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test()
    Dim MyPath1 As String, MyPath2 As String
        MyPath1 = MacScript("Choose Folder")
        MyPath2 = MacScript("POSIX path of (choose folder)")
        Debug.Print MyPath1
        Debug.Print MyPath2
        Debug.Print ThisWorkbook.Path
    End Sub
    En lançant le code normalement ou en pas à pas, on a bien le résultat du code AppleScript qui apparaît dans la fenêtre des variables locales ou celle des Exécution(s)
    Après le fait d'être sur Excel 2016 MAC il faudra pour certains cas utiliser la nouvelle méthode passant par AppleScriptTask
    Mais tant que MacScript passe , autant l'utiliser alors (sinon => AppleScriptTask)

    Donc repassons à la problématique (Résolu), avec solution en AppleScript testé et vérifié => ok :
    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
    Private Sub ToggleButton2_Click()
    Dim rep
        #If Mac Then
            rep = MacScript("set theDialogText to ""Be carrefull. Would you like to continue?""" & Chr(13) & _
                        "set the_results to display dialog theDialogText with title (""DONNÉES MANQUANTES"") buttons {""Don't Continue"", ""Continue""} with icon caution" & Chr(13) & _
                        "set BUTTON_Returned to button returned of the_results")
            Debug.Print rep
            If rep = "Continue" Then
                Unload UserForm1
            'Else
                'Unload UserForm2
            End If
        #Else
            MsgBox "mon message"
        #End If
    End Sub
    voilà

    Edit : Ne pas oublier de mettre si tel est le cas
    Cordialement

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Si cette réponse vous a aidé, n'hésitez pas à cliquer sur , dans le cas contraire ne faites rien , mais si vous êtes pas content -- Pensez à la Balise [ code][/code ] => Exemple

    Pensez à mettre une fois votre problème solutionné

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [ICEFACES] Les quotes sont remplacées par &#_39;
    Par Mathieu.J dans le forum JSF
    Réponses: 0
    Dernier message: 19/01/2010, 17h09

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