Pourquoi on met "private sub" et le paramétre cancel sert à quoi

Résolu
lynda789456 Messages postés 245 Statut Membre -  
lynda789456 Messages postés 245 Statut Membre -
Bonjour, je voudrai savoir pourquoi on met private avant une procédure ?et le paramétre booléen cancel sert à quoi svp ?
Private Sub Workbook_beforePrint (Cancel As Boolean)

Est ce que c'est un évènement ?
Quand est ce que on écrit le programme dans module ?et quand sur thisworkbook?dans VBA !
Cordialement :)

2 réponses

  1. Kuartz Messages postés 852 Date d'inscription   Statut Membre Dernière intervention   65
     
    Bonjour,

    Le contenu de la parenthèse sert à déclarer des variables. Ici, tu as une variable de type Booléenne, donc qui peut prendre la valeur soit True soit False.

    La première ligne de ce code décrit en effet un événement. Le code s'exécutera avant une impression.

    Tout dépend de ce que ton code doit faire. Un événement se posera directement sur "ThisWorkbook" ou bien sur Feuil1 etc. Un code qui exécute des actions sans événement se posera plutôt sur un module. Les codes présents dans les modules sont ensuite appelables ailleurs.

    En espérant avoir un peu répondu à tes questions.

    Cordialement.
    0
    1. lynda789456 Messages postés 245 Statut Membre
       
      Oui merci beaucoup monsieur pour votre aide:)
      1.Donc Cancel ,c t'elle qui permet d'autoriser ou pas l'action c ça ?
      2.Mais pourquoi on déclare la procédure comme étant private ?
      et STP cette ligne du code :
      Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

      1.Le premier paramètre de l'évenement c quoi svp ?
      ByVal SaveAsUI As Boolean

      3.Une macro c quoi svp ?et quelle est la relation entre macro et module ou bien macro et thisworkbook svp ?
      Cordialement :)
      0
      1. Utilisateur anonyme > lynda789456 Messages postés 245 Statut Membre
         
        Bonjour lynda789456,

        Je vois que tu as vraiment envie d'apprendre le VBA !  😉

        --------------------------------------------------------------

        1) Généralités

        Un module est la page blanche où on peut écrire du code VBA.
        Ça ne te rappelle rien ? Je t'en avais déjà parlé dans un autre article !

        Ce code VBA est des Function (fonctions) ou des Sub (abréviation de
        Subroutine = procédure). Le mot « routines » désigne les 2 à la fois :
        les Function et les Sub.

        Les macros sont les Sub écrites en VBA.

        --------------------------------------------------------------

        2) Quand Private est placé devant Sub

        Il faut bien comprendre que la Sub d'un Module peut en appeler une autre
        située dans le même Module ou dans un autre. Mais si on veut interdire
        qu'une Sub soit appelée depuis un autre Module que celle où on l'a écrite,
        c'est là où on ajoute devant le mot Private : ainsi la Sub est privée (dans
        le sens où elle n'appartient qu'au Module qui la contient) et donc cette
        Sub ne peut être appelée que par une autre Sub du même Module.

        --------------------------------------------------------------

        3) Dans ThisWorkbook ou dans un Module ?

        On met du code VBA dans ThisWorkbook pour des actions qui dépendent
        d'un événement. C'est très spécifique, et ce n'est pas par là que les
        débutants en VBA doivent commencer ! Je nuance cependant, car c'est
        un passage obligé si du code VBA doit être exécuté, par exemple,
        à l'ouverture du classeur, avant sa fermeture, ou autre...

        Comme je viens de le dire, le code VBA de ThisWorkbook est spécifique.
        En plus, il est plus technique et ne concerne pas les débutants en VBA,
        c'est pourquoi je ne vais pas répondre à tes questions sur les paramètres
        de ces Sub : Cancel, SaveAsUI ou autres... et ça dans ton propre intérêt :
        tu dois faire un apprentissage progressif, en commençant d'abord par le
        plus facile ! Si tu voulais apprendre à conduire, tu ne commencerais pas
        avec un camion de 10 tonnes ou une voiture tractant une caravane,
        n'est-ce pas ?

        Donc comme tu es débutante en VBA, oublie ThisWorkbook et écris des
        routines (Function ou Sub) dans le Module1 ; plus tard, quand tu sauras
        mieux, tu utilisera plus de Modules. En fait, tu pourrais utiliser plusieurs
        Modules dès maintenant s'il n'y a aucune interdépendance entre les
        routines de ces Modules, mais dans le cas contraire, tu risques fort
        d'aller au devant d'ennuis ! Alors, à toi de choisir !

        --------------------------------------------------------------

        4) Voici une fonction très simple :

        Function Plus2(NbX As Double) As Double
          Plus2 = NbX + 2
        End Function
        

        Si dans ta feuille Excel tu mets en cellule C2 cette formule :
        =Plus2(B2)
        ça retournera le nombre que tu mets en B2 plus 2,
        et tu peux mettre en B2 un nombre fractionnaire (avec des
        chiffres après la virgule) et positif, négatif ou nul.

        --------------------------------------------------------------

        5) Voici une sub très simple :

        Sub Essai()
          MsgBox "Hello !"
        End Sub
        

        Elle affiche une boîte de dialogue avec le texte "Hello !"
        et qui comporte un bouton OK.

        Pour voir le résultat, va sur ta feuille de calcul Excel,
        fais < Alt >< F8 > pour avoir la fenêtre « Macros »,
        fais < Alt >< a > et choisis « Ce classeur »,
        choisis dans la liste au-dessus la seule macro existante,
        que tu viens d'écrire : Essai et exécutes-là.

        --------------------------------------------------------------

        Mais ensuite, comme je te l'avais déjà dit, c'est à toi
        d'apprendre avec des livres VBA papier ou en ligne.

        Cordialement.  😊
         
        0
    2. lynda789456 Messages postés 245 Statut Membre
       
      D'accord merci beaucoup monsieur pour ces explications :)
      Mais je comprend toujours pas quand est ce qu'on écrit le code dans module et quand dans thisworkbook :(
      Pourquoi le VBA a une relation avec API windows ??
      Pourquoi VBA est un langage orienté objet ?
      Merci bien monsieur et je m'excuse pour ces questions lol
      0
      1. Utilisateur anonyme > lynda789456 Messages postés 245 Statut Membre
         
         
        Re bonsoir lynda,

        Tu te poses bien trop de questions !
           Je t'ai dit de commencer par le plus facile !


        --------------------------------------------------------

        Langage orienté objet : c'est très technique, car ça concerne des
        concepts tels que l'encapsulation, les méthodes, les héritages...

        Un débutant n'en n'a pas besoin !!!

        --------------------------------------------------------

        L'API Windows : API est l'abréviation de Application Program Interface,
        pour écrire des programmes qui doivent interagir avec Windows (dont
        tu ne connais que l'interface et est beaucoup plus compliqué que tu
        peux le croire ! Car Windows n'est pas qu'un seul programme mais
        plusieurs qui cohabitent ensemble et communiquent entre eux !).

        Trop technique aussi ! Là encore, un débutant n'en n'a pas besoin !!!

        --------------------------------------------------------

        Pour ce qui est d'écrire du code dans ThisWorkbook ou dans un Module,
        je t'ai déjà répondu très clairement dans mon message #5, au point 3).

        Je ne peux pas te l'expliquer plus clairement, alors relis-le ! Si tu ne
        comprends toujours pas, tant pis ! Ce n'est pas grave, car je te répète
        que les débutants en VBA doivent commencer par écrire des routines
        (Function ou Sub) dans le Module1.

        Donc ThisWorkbook : tu l'oublies !!! Fais comme s'il n'existait pas !!!

        --------------------------------------------------------

        Regarde le même message #5 et commence par faire la fonction simple
        du point 4) et la sub simple du point 5) ; je t'assures que si tu n'y arrives
        pas, ce n'est même pas la peine d'essayer d'aller plus loin ! Ce serait
        comme d'essayer de vouloir faire de la moto alors que tu ne sais même
        pas faire de la bicyclette ! C'est juste une image pour mieux te faire
        comprendre : je ne cherche ni à te vexer, ni à te décourager !

        Et quand tu auras enfin réussi à faire ta 1ère fonction et ta 1ère sub
        (celles mentionnées ci-dessus), je t'ai dit que pour la suite, tu dois
        voir par toi-même avec les docs existantes !

        --------------------------------------------------------

        Saches aussi que les personnes qui te répondent sur ce forum sont
        bénévoles et non rémunérées.

        Si on devait t'apprendre le VBA pas à pas, on n'aurait plus le temps
        pour aider des personnes sur des problèmes plus concrets !

        Cordialement.  😊
         
        0
    3. lynda789456 Messages postés 245 Statut Membre
       
      Ok monsieur ,je vous remercie beaucoup pour ces explication et je suis désolé de vous avoir emébter !
      Bonne soirée :)
      0