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
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
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
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.
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.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
27 mai 2016 à 18:21
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
A lire sans modération pour en savoir plus:
https://www.excel-pratique.com/fr/vba/procedures_fonctions.php
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
27 mai 2016 à 18:37
D'accord merci monsieur :)
27 mai 2016 à 18:07
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 :
1.Le premier paramètre de l'évenement c quoi svp ?
3.Une macro c quoi svp ?et quelle est la relation entre macro et module ou bien macro et thisworkbook svp ?
Cordialement :)
27 mai 2016 à 19:49
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 :
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 :
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. 😊
27 mai 2016 à 20:34
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
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. 😊
27 mai 2016 à 23:06
Bonne soirée :)