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

Macros et VBA Excel Discussion :

Boite de dialogue trop étroite [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut Boite de dialogue trop étroite
    Bonsoir à tous,

    J'ai personnalisé une boite de dialogue grâce à la méthode MsgBoxEx de arkham46, mais lors de l'affichage cette dernière est très étroite et plusieurs retour à la ligne ont été créés.
    Comment faire pour que les retour à la ligne soit respectés et donc que la boite de dialogue s'adapte à cette largeur ?

    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
    Sub NouveauEA()
     Dim Chemin2 As String, Fichier As String
     Dim Rep As Long
     Dim ltexte As String
     
    '------------------------------------------------------------------------
    '----------Copie + Incrémentation du Classeur et de la Feuille-----------
    '------------------------------------------------------------------------
     
    'Chemin variable de destination du fichier copié obtenu par la commande Concatener
    Chemin2 = Range("A11").Value
    'Nom variable du fichier à copier obtenu par la commande Concatener
    Fichier = Range("A15").Value & ".xls"
     
    ltexte = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial Black;}{\f1\fswiss\fcharset0 Arial;}}" & _
        "{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;}" & _
        "{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\qc\cf1\b\f0\fs24 ATTENTION !\par" & _
        "\cf0\b0\f1\fs20\par" & _
        "L'Etat d'Acompte servant de base \'e0 l'\'e9tablissement de la prochaine situation de travaux\par" & vbCrLf & _
        "a \'e9t\'e9 modifi\'e9 depuis son ouverture !\par" & vbCrLf & _
        "\par" & vbCrLf & _
        "\cf2\ul Vous devez le sauvegarder pr\'e9alablement pour pouvoir continuer.\par" & vbCrLf & _
        "\cf0\ulnone\par" & vbCrLf & _
        "\b Cette action sera irr\'e9versible,\par" & vbCrLf & _
        "\b0\par" & vbCrLf & _
        "En cas de doute, choisissez \b Non\b0  et controlez si les modifications doivent-\'eatre enregistr\'e9es.\par" & vbCrLf & _
        "\cf1\ul\b ENREGISTRER ?\par" & vbCrLf & _
        "}"
     
    'Vérifie que le fichier source a été modifié depuis son ouverture
    If Not ThisWorkbook.Saved Then
        Rep = MsgBoxEx(ltexte, vbCritical + vbYesNo)
         If Rep = vbNo Then
            Exit Sub
          Else
            ThisWorkbook.Save
        End If
    End If
     
    'Vérifie que le fichier cible n'existe pas et interroge l'utilisateur si Oui
    If Dir(Chemin2 & Fichier) <> "" Then  'le fichier existe
        If MsgBox("Ce fichier existe déjà ! Voulez vous le remplacer ?", vbYesNo) <> vbYes Then Exit Sub
        Application.DisplayAlerts = False 'Message de confirmation désactivé
    End If
        'Copie le fichier à l'emplacement spécifié
        ActiveWorkbook.SaveCopyAs Chemin2 & Fichier
        Application.DisplayAlerts = True
     
    'Ouvre le fichier copié
    Application.Workbooks.Open Chemin2 & Fichier
     
    'Incrémante le nom de la feuille de 1 sur le fichier copié
    Sheets(Range("A16").Value).Select
    Sheets(Range("A16").Value).Name = Range("A15").Value
     
    'Lance la macro affectée au raccourcis Crtl+t
    SendKeys "^t"
     
    'Ferme le fichier source (False : sans sauvegarde / True : avec sauvegarde)
    ThisWorkbook.Close
     
    End Sub
    MacBook Pro 15" - Apple Cinema Thunderbolt 27" x2u - High Sierra - Office 2019 - Windows 10 Pro sous Parallels - MS Project 2019

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bjr,

    Si j'ai bien compris, il faut utiliser le paramètre pTextWidth :
    http://arkham46.developpez.com/artic...plus/doc/#LIII

    Mettre la taille désirée en pixels.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Merci pour votre réponse rapide,

    C'est aussi ce que j'avais compris, mais je ne savais pas comment le mettre en oeuvre.
    Entre temps, j'ai compris comment fonctionnait ces arguments et le résultat est top.

    Voilà le résultat final :

    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
    Sub NouveauEA()
     Dim Chemin2 As String, Fichier As String
     Dim Rep As Long
     Dim ltexte As String
     
    '------------------------------------------------------------------------
    '----------Copie + Incrémentation du Classeur et de la Feuille-----------
    '------------------------------------------------------------------------
     
    'Chemin variable de destination du fichier copié obtenu par la commande Concatener
    Chemin2 = Range("A11").Value
    'Nom variable du fichier à copier obtenu par la commande Concatener
    Fichier = Range("A15").Value & ".xls"
     
    'Texte rtf incluant la mise en forme servant à la boite de dialogue suivante
    ltexte = "{\rtf1\ansi\ansicpg1252\deff0\deflang1036{\fonttbl{\f0\fdecor\fprq2\fcharset0 Stencil;}{\f1\fswiss\fcharset0 Arial;}{\f2\fswiss\fprq2\fcharset0 Verdana;}{\f3\fnil\fprq2\fcharset2 SansSerif;}}" & _
        "{\colortbl ;\red255\green0\blue0;\red0\green0\blue255;\red0\green255\blue0;}" & _
        "{\*\generator Msftedit 5.41.15.1515;}\viewkind4\uc1\pard\qc\cf1\ul\b\f0\fs44 ATTENTION !\par" & _
        "\cf0\ulnone\b0\f1\fs20\par" & _
        "\f2\fs28 L'Etat d'Acompte servant de base \'e0 l'\'e9tablissement de la \par" & vbCrLf & _
        "prochaine situation de travaux a \'e9t\'e9 modifi\'e9 depuis son ouverture !\par" & vbCrLf & _
        "\par" & vbCrLf & _
        "\cf2\ul Vous devez le sauvegarder pr\'e9alablement pour pouvoir continuer.\par" & vbCrLf & _
        "\cf0\ulnone\par" & vbCrLf & _
        "\b Cette action sera irr\'e9versible,\par" & vbCrLf & _
        "\b0\par" & vbCrLf & _
        "En cas de doute, choisissez \b Non\b0  et controlez si les modifications doivent-\'eatre enregistr\'e9es.\par" & vbCrLf & _
        "\f3\par" & vbCrLf & _
        "\cf3\b\f0\fs40 ENREGISTRER ou NON ?\par" & vbCrLf & _
        "\par" & vbCrLf & _
        "}"
     
    'Vérifie que le fichier source a été modifié depuis son ouverture (largeur de la boite fixée à 700 pixels)
    If Not ThisWorkbook.Saved Then
        Rep = MsgBoxEx(ltexte, vbCritical + vbYesNo, , , , , 700)
         If Rep = vbNo Then
            Exit Sub
          Else
            ThisWorkbook.Save
        End If
    End If
     
    'Vérifie que le fichier cible n'existe pas et interroge l'utilisateur si Oui
    If Dir(Chemin2 & Fichier) <> "" Then  'le fichier existe
        If MsgBox("Ce fichier existe déjà ! Voulez vous le remplacer ?", vbYesNo) <> vbYes Then Exit Sub
        Application.DisplayAlerts = False 'Message de confirmation désactivé
    End If
        'Copie le fichier à l'emplacement spécifié
        ActiveWorkbook.SaveCopyAs Chemin2 & Fichier
        Application.DisplayAlerts = True
     
    'Ouvre le fichier copié
    Application.Workbooks.Open Chemin2 & Fichier
     
    'Incrémante le nom de la feuille de 1 sur le fichier copié
    Sheets(Range("A16").Value).Select
    Sheets(Range("A16").Value).Name = Range("A15").Value
     
    'Lance la macro affectée au raccourcis Crtl+t
    SendKeys "^t"
     
    'Ferme le fichier source (False : sans sauvegarde / True : avec sauvegarde)
    ThisWorkbook.Close
     
    End Sub
    MacBook Pro 15" - Apple Cinema Thunderbolt 27" x2u - High Sierra - Office 2019 - Windows 10 Pro sous Parallels - MS Project 2019

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

Discussions similaires

  1. TinyMCE temps d'affichage des boites de dialogue trop long
    Par manu f dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 30/07/2010, 12h08
  2. [MFC] rendre une boite de dialogue inactive
    Par Vestaproman dans le forum MFC
    Réponses: 8
    Dernier message: 22/01/2004, 14h09
  3. Affichage d'une boite de dialogue nonmodale avec MFC
    Par the.cable.guy dans le forum Windows
    Réponses: 3
    Dernier message: 04/07/2003, 17h59
  4. Réponses: 5
    Dernier message: 04/04/2003, 15h02
  5. Comment cree une boite de dialogue parcourir
    Par kenshi dans le forum MFC
    Réponses: 5
    Dernier message: 06/01/2003, 10h30

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