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

Résolu/Fermé
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016 - Modifié par lynda789456 le 27/05/2016 à 17:35
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016 - 27 mai 2016 à 23:06
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

Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
27 mai 2016 à 17:57
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
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
27 mai 2016 à 18:07
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
Utilisateur anonyme > lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
27 mai 2016 à 19:49
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
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
27 mai 2016 à 20:34
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
Utilisateur anonyme > lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
27 mai 2016 à 21:15
 
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
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
27 mai 2016 à 23:06
Ok monsieur ,je vous remercie beaucoup pour ces explication et je suis désolé de vous avoir emébter !
Bonne soirée :)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
27 mai 2016 à 18:21
Bonjour,

A lire sans modération pour en savoir plus:

https://www.excel-pratique.com/fr/vba/procedures_fonctions.php
0
lynda789456 Messages postés 225 Date d'inscription mercredi 24 février 2016 Statut Membre Dernière intervention 22 novembre 2016
27 mai 2016 à 18:37
D'accord merci monsieur :)
0