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 :

Afficher uniquement Userform au lancement du programme.


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Points : 33
    Points
    33
    Par défaut Afficher uniquement Userform au lancement du programme.
    Bonsoir comment allez vous
    mon code refuse de me masquer les feuilles et d'afficher uniquement le userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Application.WindowState = xlMaximized
    ThisWorkbook.Application.Visible = False
    Load UserForm5
    UserForm5.Show 0
    End Sub
    Merci de bien vouloir m'aider

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    mon code refuse de me masquer les feuilles et d'afficher uniquement le userform
    Si tu souhaites voir ton formulaire adapté à ton écran, alors il s'agit d'un développement particulier.

    D'autre part, je ne comprends pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Application.Visible = False
    Enfin, pour ton information, le formulaire est chargé avec ton classeur.
    Il suffit juste de le montrer.

    Sur les formulaires, tu peux consulter cet espace, ainsi que celui-ci.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Points : 33
    Points
    33
    Par défaut
    merci pour la reponse
    je voudrais juste qu'au lancement les feuilles excels soient masqué et que ce soit que le userform qui s'affiche

    raison pour laquelle j'ai mis ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Application.Visible = False

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Ce que tu cherches, en fait, c'est d'adapter la dimension du formulaire et de ses contrôles afin qu'il occupe l'intégralité de l'écran.

    Voici le code que j'utilise.
    Il doit quelque peut dater.
    D'autres solutions peuvent exister.

    A adapter

    Dans un module standard.
    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
     
    Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Public Const SW_MAXIMIZE = 3
     
    Private Declare Function GetSystemMetrics Lib "user32" _
    (ByVal nIndex As Long) As Long
    Private Const SM_CXSCREEN = 0 'Screen width
    Private Const SM_CYSCREEN = 1 'Screen height
     
    Private Declare Function GetDC Lib "user32" _
    (ByVal hwnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32" _
    (ByVal Hdc As Long, ByVal nIndex As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" _
    (ByVal hwnd As Long, ByVal Hdc As Long) As Long
    '
    Private Const LOGPIXELSX = 88 'Pixels/inch in X
    '
    'A point is defined as 1/72 inches
    Private Const POINTS_PER_INCH As Long = 72
     
    Declare Function GetSystemMetrics32 Lib "user32" _
    Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
     
    'The width of the screen, in pixels
    Public Function ScreenWidth() As Long
    ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
    End Function
     
    'The height of the screen, in pixels
    Public Function ScreenHeight() As Long
    ScreenHeight = GetSystemMetrics(SM_CYSCREEN)
    End Function
     
    'The size of a pixel, in points
    Public Function PointsPerPixel() As Double
    Dim Hdc As Long
    Dim lDotsPerInch As Long
    Hdc = GetDC(0)
    lDotsPerInch = GetDeviceCaps(Hdc, LOGPIXELSX)
    PointsPerPixel = POINTS_PER_INCH / lDotsPerInch
    ReleaseDC 0, Hdc
    End Function
    Dans le module affecté au formulaire

    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
    Option Explicit
     
    Private Sub UserForm_Initialize()
     
    'Empêcher croix de fermeture
    'Dim hWnd As Long
    'hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption)
    'SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
     
    '-------------------------------------------------------------
    'Déclaration des variables RX et RH
    Dim RW As Single, RH As Single
     
    'Calcule le rapport de l'UserForm et la taille de l'écran
    RW = 0.98 * ScreenWidth * PointsPerPixel / Me.Width
    RH = 0.98 * ScreenHeight * PointsPerPixel / Me.Height
    'Debug.Print RW
    'Debug.Print RH
     
    'Met l'UserForm en plein écran
    Me.Width = 0.98 * ScreenWidth * PointsPerPixel
    Me.Height = 0.98 * ScreenHeight * PointsPerPixel
     
    'Déclaration de la variable Ctl qui correspond aux contrôles de ton UserForm
    Dim Ctl As MSForms.Control
     
    'Permet de redimensionner tous tes contrôles présent sur l'UserForm en fonction de la taille de l'userForm et de la taille de l'écran
    For Each Ctl In Me.Controls
     
            With Ctl
     
                    .Move .Left * RW, .Top * RH, .Width * RW, .Height * RH
                    If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.Label Then
                            'Ajuste la taille de police
                            With .Font
                                    .Size = .Size * RW / RH * 1.75
                            End With
                    End If
     
            End With
     
    Next Ctl
     
    End Sub
    Bonne soirée à toi. Bonne soirée au Forum.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  5. #5
    Membre chevronné Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Points : 1 971
    Points
    1 971
    Par défaut
    Bonjour,

    Une autre manière de procéder serait.
    1 Dans le Workbook_Open d' afficher le userform.
    2 Dans Userform_Initialize, un test sur les classeurs ouvert, caché le classeur que vous ne voulez pas voir.
    3 Reafficher le classeur à la fermeture du Usf

    Ce qui Donnerait quelque chose du genre.
    (à tester dans une copie du fichier bien sûr)

    Code dans ThisWorkbook, à modifier nom du Usf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_Open()
        UserForm1.Show 0 ' ouverture non modal 
    End Sub
    Code du Userform
    À modifier bien NomduWb par le nom et extension de votre fichier

    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 UserForm_Initialize()
        If Workbooks.Count > 1 Then
            Windows("NomduWb.xslm").Visible = False
        Else
            Application.Visible = False
        End If
    End Sub
     
    Private Sub UserForm_Terminate()
        If Workbooks.Count > 1 Then
            Windows("NomduWb.xslm").Visible = True
        Else
            Application.Visible = True
        End If
    End Sub
    Michaël

    Si mon aide/avis vous a été profitable , n'hésitez pas à cliquer sur , ça fait toujours plaisir...
    _________________________________________________________________________________________________________________

    "Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu'il est stupide..."
    Albert Einstein

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Points : 33
    Points
    33
    Par défaut
    Bonjour comment allez vous ? je cherchais juste a ouvrir le fichier sans feuilles excel derriere (seulement le userform)
    j'ai revu mon code et j'ai vu que j'avais fais erreur dans les deux premieres lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Application.Visible = False
    Load UserForm5
    UserForm5.Show 0
    End Sub
    c'est bon mon probleme est resolu
    mais je ne comprends pas trop vos codes, pouvez vous m'expliquez ce que ça fait exactement

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour …

    Autre piste :

    À l'ouverture d'un classeur, on a obligatoirement au moins une feuille visible !
    On cache donc les autres, on la nomme Accueil (par exemple) et on copie, dans la fenêtre des codes de ThisWorkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
       Dim sh As Worksheet
       For Each sh In Sheets: sh.Visible = sh.Name <> "Accueil": Next
       Application.DisplayFullScreen = 1 ' Escp pour ...
       UserForm5.Show 0
    End Sub
    Nota : on pourrait aussi passer par Sh.Visible=2 pour empêcher d'afficher la feuille hors macro mais c'est une autre histoire.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Points : 33
    Points
    33
    Par défaut
    Merci bien, je comprends

  9. #9
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Salut

    Citation Envoyé par OrDonc Voir le message
    [...]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
       Dim sh As Worksheet
       For Each sh In Sheets: sh.Visible = sh.Name <> "Accueil": Next
       Application.DisplayFullScreen = 1 ' Escp pour ...
       UserForm5.Show 0
    End Sub
    [...]
    Un peu de sérieux dans vos réponses sur le forum, svp. Ce code n'a manifestement pas été testé, puisqu'il réalise l'inverse de ce qui est proposé (il masque l'accueil et affiche tout le reste, puisque xlSheetVisible "vaut" VRAI et xlSheetHidden "vaut" FAUX ). Il faut écrire sh.visible = sh.name = "Accueil" ^^. Je ne suis pas sûr que ce soit une bonne chose d'utiliser du booleen là où on attend des constantes de type Long ^^

    De plus, ce code plantera si la feuille Accueil est la dernière et qu'elle a été masquée auparavant. Lorsque l'on veut n'afficher qu'une feuille, la règle de base pour ne pas risquer de planter est d'afficher la feuille que l'on veut voir puis seulement de masquer toutes les autres.


    @ Dorel.D

    Je ne suis pas friand d'un code événementiel qui "fait quelque chose". Pour moi, un code événementiel tel que Workbook_Open ne devrait RIEN faire d'autre que d'appeler des procédures qui font le travail. Ca relève des bonnes pratiques et d'une architecture professionnelle du code, comme je l'explique dans ce billet.

    Note qu'avec ce type de masquage, les utilisateurs peuvent afficher la feuille par clic droit sur l'onglet Accueil puis Afficher... C'est le problème d'utiliser des variables booléennes là où l'on devrait utiliser les constantes prévues pour la propriété que l'on veut modifier. Tu as trois statuts de visibilité:
    xlSheetVisible, qui vaut -1 et peut être transtypé en True => la feuille est visible;
    xlSheetHidden, qui vaut 0 et peut être transtypé en False =>la feuille est masquée mais peut être rendue visible par l'utilisateur;
    xlSheetVeryhidden, qui vaut 2 => la feuille est masquée mais ne peut être rendue visible que par code. [EDIT] ou en modifiant manuellement la propriété, évidemment (pour l'esprit chagrin qui n'aurait pas compris!)[/EDIT]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub AfficherAccueil()
       Dim sh As Object
     
       Worksheets("Accueil").Visible = xlSheetVisible
       For Each sh In Sheets
         If sh.Name <> "Accueil" Then sh.Visible = xlSheetHidden
       Next
    End Sub


    Cela étant dit, je serais curieux de savoir ce que tu cherches à réaliser: Excel n'est pas conçu pour créer une application "sans feuille visible" or de ta demande initiale, il me semble que c'est vers cela que tu te diriges. Créer une application de ce genre demande un sacré bagage, tant en Excel qu'en VBA. Ton besoin devrait à mon sens t'orienter vers autre choses (Access, Win apps, ...) car vouloir manipuler de l'Excel "comme si on n'était pas dans Excel", c'est, de mon point de vue en tout cas, peine perdue. Tu vas devoir verrouiller ton code, gérer correctement les erreurs qui surviennent, penser à tout ce que peut faire ton utilisateur dans le fichier, surtout avec un userform.Show False (et pas 0 comme je l'ai vu) qui laisse la main à l'utilisateur et qui lui permet de massacrer allègrement ton fichier.


    Je ne saurais trop te conseiller de disposer d'une procédure générique, par exemple dans ton xlTools, pour réafficher toutes les feuilles car tu vas probablement en avoir besoin, au moins durant la phase de développement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Sheets_ShowAllSheets()
      Dim sh As Object
     
      For Each sh In ThisWorkbook.Sheets
        sh.Visible = xlSheetVisible
      Next
    End Sub

    Dernier conseil, de toi à moi: Evite de mettre plusieurs instructions sur la même ligne, même pour une simple boucle For...Next. Ce n'est pas dans les habitudes de codage répandues ici ou ailleurs, ça n'ajoute rien au code qu'un peu d'illisibilité (notamment par la perte de l'indentation des blocs => dans le code présenté par OrDonc, j'ai cru qu'il manquait le Next à cause de la boucle sur une seule ligne). Ca fait "bien" et "initié", mais ça ne sert à rien.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Points : 33
    Points
    33
    Par défaut
    Grand merci :-)

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Re…

    Mea culpa : effectivement, erreur de précipitation (mais qui n'en commet pas ?) ; j'ai attribué à Visible et ce qui l'est à Hidden.

    Avec une demande restreinte, la réponse le sera aussi donc il y aura des suppléments pour les développements à venir.

    Exemple d'ajouts simples dans un projet simple : ne plus voir les noms des onglets, ni les barres de déplacement, ni le quadrillage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Workbook_Open()
      Dim sh As Worksheet
      For Each sh In Sheets: sh.Visible = sh.Name = "Accueil": Next
      Application.DisplayFullScreen = 1 ' Escp pour ...
      ActiveWindow.DisplayHeadings = 0  'remettre à 1 à la fermeture
      ActiveWindow.DisplayWorkbookTabs = 0
      ActiveWindow.DisplayGridlines = 0
      UserForm5.Show 0
    End Sub
    Nota : si la première demande était de ne voir sur l'écran que le formulaire, je n'aurais rien supposé de plus et, pour ne pas entrer dans des détours sans fin*, je ne serais pas intervenu !

    *« une feuille cachée avec la propriété xlSheetVeryhidden ne peut être rendue visible sans code ». Oups, j'éviterai de l'énoncer de but en blanc !

    Avec un formulaire de propriété ShowModal à 0, comme proposé, un simple Alt F11 (par exemple) permet de travailler directement sur les propriétés de base.

  12. #12
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 924
    Points
    55 924
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par OrDonc Voir le message
    [...]un simple Alt F11 (par exemple) permet de travailler directement sur les propriétés de base.
    Il me semble tellement évident que lorsque l'on tente de mettre en place une application de ce genre, on prend la précaution de mettre un mot de passe (qui n'est qu'une protection légère à considérer plutôt contre les erreurs de manip que contre l'effraction caractérisée) qui va invalider le Alt+F11, sinon, ça n'a pas beaucoup de sens. Mais bon, je vois qu'il faut le préciser pour les esprits chagrins... Triste monde.



    Citation Envoyé par OrDonc Voir le message
    Re…

    Mea culpa : effectivement, erreur de précipitation (mais qui n'en commet pas ?) ; j'ai attribué à Visible et ce qui l'est à Hidden.[...]
    A ma connaissance, Hidden n'est pas une propriété d'un objet Sheet, on ne saurait donc rien lui attribuer...



    Erreur de précipitation? Personne ne demande qu'on se "précipite" sur une question pour y répondre, me semble-t-il, et le demandeur préférera une réponse "tardive" mais correcte qu'un truc sur lequel il ne peut se fier. Il est préférable de tester son code avant de le livrer. C'est une question de respect du demandeur. Je sais, de mon expérience et de ma formation de formateur notamment, qu'une personne qui reçoit une solution (supposée venir de quelqu'un qui sait, car qui serait fou assez pour répondre alors qu'il ne sait pas...) et qui n'arrive pas à la faire fonctionner va d'abord "s'en prendre à lui-même" et perdre un temps parfois considérable à imaginer qu'il a mal copié, mal implémenté..., avant de se rendre compte que la réponse était erronée ou insuffisamment fonctionnelle. Mon parcours d'autodidacte (je n'ai validé mon expérience par un diplôme qu'il y a 3 ans) me conforte dans cette idée, ayant moi-même perdu beaucoup de temps sur des réponses "d'experts" qui étaient surtout experts en erreurs.

    Donc bien sûr, ça peut arriver, mais en prenant le temps de tester, on réduit le risque d'erreur et de perte de temps...

    Coder en utilisant les (bonnes) constantes prévient le risque d'erreur dans le code. Application.DisplayFullScreen = 1 n'est pas une bonne façon d'écrire du code. Cette propriété est une propriété booléenne et donc attend True ou False. En VBA, 1 n'est pas égal à True. Il est préférable d'utiliser les bons codes qui permettent de comprendre à la simple lecture le type de la propriété que l'on manipule. Application.DisplayFullScreen = 1 laisse supposer que l'on peut mettre d'autres valeurs qui ont d'autres significations, alors que Application.DisplayFullScreen = True est lisible de suite: On est en présence d'une propriété de type booléen qui attend donc True ou False. De plus, c'est -1 qui est égal à True en VBA et pas 1. Il se fait que VBA est permissif et tente le transtypage entre Long et Boolean, et de plus, dans un test implicite, VBA teste que c'est False ou Not False, et donc ton 1 passe puisque = Not False, mais, pour moi, c'est une mauvaise pratique qui t'empêche de savoir ce que tu manipules. Il faut utiliser soit les Long -1 et 0, soit les constantes True ou False, ces dernières rendant le code plus lisible et compréhensible.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. Créer un object au premier lancement du programme ?
    Par david06600 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2006, 12h04
  2. Réponses: 1
    Dernier message: 30/11/2005, 23h14
  3. Delphi 2005 Indy 9 Erreur au lancement du programme
    Par Houben Jacques dans le forum Web & réseau
    Réponses: 4
    Dernier message: 08/11/2005, 12h05
  4. Réponses: 7
    Dernier message: 02/09/2005, 15h15
  5. [DCOM] Accès refusé au lancement du programme à distance
    Par raoulmania dans le forum Web & réseau
    Réponses: 7
    Dernier message: 22/06/2005, 13h01

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