Apprendre la programmation en VBA pour EXCEL par la pratique - Deuxième partie,
Un tutoriel de Laurent OTT

Le , par laurent_ott, Rédacteur
Bonjour à tous,

j'ai le plaisir de vous présenter le tome 2 de ce mémento qui aborde la programmation en mode graphique avec un cas de programmation d'un jeu d'arcade en VBA et Microsoft Excel.

Dans le tome 1, nous avons étudié les bases de la programmation d'EXCEL en VBA. Ce tome 2 est consacré à une partie plus ludique : la programmation en mode graphique.

Mais pourquoi programmer en mode graphique ? Imaginez que vous puissiez maîtriser chacun des pixels de votre écran, afficher des images, gérer des animations… Vous devinez toute la richesse qu'une programmation en mode graphique peut vous apporter. Certes, pas dans une application ordinaire, mais pour un jeu d'arcade, c'est l'outil idéal qui vous manquait pour laisser libre cours à votre imagination.

Bonne lecture et n'hésitez pas à apporter vos commentaires

Retrouvez les meilleurs cours et tutoriels pour apprendre Microsoft Excel


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Philippe JOCHMANS Philippe JOCHMANS - Rédacteur/Modérateur https://www.developpez.com
le 14/09/2016 à 5:10
Bonjour

Très intéressant, mais il est dommage qu'il n'y ait pas une image pour chaque code expliqué pour voir le résultat.

Philippe
Avatar de corsairedaryl corsairedaryl - Futur Membre du Club https://www.developpez.com
le 24/09/2016 à 22:25
Bonjour,
je m 'initie à VBA pour la 1ere fois de ma vie. j'ai découvert ce site et je te trouve très bien.
Mon problème est que je suis bloqué au chapitre VII sur un exercice de triage de données.
Dans un 1er exemple,L'auteur utilise un 1er programme couplé avec une fonction => pas de problème
ensuite dans un 2éme , il combine la même fonction dans le même programme pour travailler plus rapidement et dans le 3éme il utilise quicksort combiné dans un programme.

Mon problème est que je ne sais pas pourquoi mais les programmes 2 & 3 ne sont pas reconnus comme des programmes impossible de les utiliser.
j'ai copier mot pour mot les programme rien à faire.
Pour moi cela vient des parenthèses remplie avec des références dans le nom du programme.
Comment puis-je me corriger ?

Merci de votre aide.
Avatar de digilisyl digilisyl - Candidat au Club https://www.developpez.com
le 04/10/2016 à 12:50
Bonjour
Je débute également avec VBA, et suis pas à pas ce tuto très intéressant

En fait, le problème soulevé par Bernardassyst vient des lignes 25 et 26 :
Il faut renommer les variables NbBonbon et NbScoubidou (que l'on avait créées précédemment comme argument facultatif pour modifier la fonction CompterPoche) en : MesBonbon et MesScoubidou, qui elles, sont bien déclarées.
Cela donne :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
While Cells(Ligne, MaColonne) <> ""  ' Tant que cellule(y,x) n'est pas vide.
 
    CompterPoche = CompterPoche + 1 ' Incrémente le nombre d'éléments trouvés.
    If Cells(Ligne, MaColonne) = "x" Then MesBonbon = MesBonbon + 1       ' Les bonbons.
    If Cells(Ligne, MaColonne) = "s" Then MesScoubidou = MesScoubidou + 1 ' Les scoubidous.
    Ligne = Ligne + 1 ' Passe à la ligne suivante.
 
Wend
Et là, ça refonctionne !

(sauf erreur ou omission... )
Avatar de laurent_ott laurent_ott - Rédacteur https://www.developpez.com
le 05/10/2016 à 10:16
Mea-culpa, effectivement il y a une coquille dans le code. Bravo à vous deux (bernardassyst et difilisyl) qui l’avez vue. Ça prouve qu’il y a au moins deux lecteurs. Bonne continuation dans votre apprentissage du VBA, et rendez-vous dans le tome 2 qui est bien plus ludique et vous permettra de mettre en application vos connaissances pour faire autre chose que de l’EXCEL avec EXCEL.
Le code correct :
Code : Sélectionner tout
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
Option Explicit
 
Dim MesBonbon As Long    ' Variable numérique qui contiendra le nombre de bonbons
Dim MesScoubidou As Long ' Variable numérique qui contiendra le nombre de scoubidous
 
Sub CompterLeCartable()
 
Call CompterPoche(3)  ' Alimente MesBonbon et MesScoubidou
 
MsgBox "J'ai " & MesBonbon & " bonbons et " _
        & MesScoubidou & " scoubidous dans mon cartable."
 
End Sub
 
Function CompterPoche(MaColonne As Long) As Long
 
Dim Ligne As Long               ' Variable numérique pour balayer les lignes de la feuille.
Ligne = 1                       ' Initialise Ligne à 1
MesBonbon = 0: MesScoubidou = 0 ' Variables mises à zéro par sécurité.
 
While Cells(Ligne, MaColonne) <> ""  ' Tant Que cellule(y,x) n'est pas vide.
 
    CompterPoche = CompterPoche + 1 ' Incrémente le nombre d'éléments trouvés.
    If Cells(Ligne, MaColonne) = "x" Then MesBonbon = MesBonbon + 1         ' Les bonbons.
    If Cells(Ligne, MaColonne) = "s" Then MesScoubidou = MesScoubidou + 1   ' Les scoubidous.
    Ligne = Ligne + 1 ' Passe à la ligne suivante.
 
Wend
 
End Function
Avatar de FMJ FMJ - Membre habitué https://www.developpez.com
le 05/10/2016 à 12:05
Bravo et merci pour tout ce travail !
Avatar de joe.levrai joe.levrai - Expert éminent https://www.developpez.com
le 21/10/2016 à 16:04
Bonjour,

bravo pour ce travail de pédagogie et concentration de "l'essentiel pour débuter efficacement".

je n'ai encore que partiellement parcouru le Tome 1 (et du coup pas encore lu le Tome 2 non plus)

mais un point n'est pas en accord avec ma façon de voir l'apprentisation de programmation VBA

dans le chapitre II Prérequis, il est écrit

Un objet peut avoir une propriété par défaut. Par exemple la propriété Value pour l'objet Range. Dans ce cas il n'est pas nécessaire de saisir cette propriété. Et Range("A1") = 15 équivaut à Range("A1").Value = 15
Cela me semble dangereux, sur un tutoriel dont la vocation principale est tournée vers les débutants, de leur donner cette pratique, à la fois "non conforme aux règles de l'art", mais surtout laissant à VBA la libre interprétation de la bonne propriété en fonction du contexte.
en effet, débat déjà abordé dans plusieurs sujets de la section VBA Excel : dans certaines situation, c'est le propriété .Text qui sera prise par défaut. Et là clairement, on est plus sur le même type de variable (.Text = ce qui est affiché dans la cellule, .Value = ce qui est affiché dans la barre de formule pour simplifier grandement)
De quoi rendre chauve un débutant qui ne va pas réussir à débogger

J'avais laissé quelques exemples sur le forum, mais je ne retrouve plus les messages
Avatar de Marc-L Marc-L - Expert éminent sénior https://www.developpez.com
le 21/10/2016 à 16:16
Bonjour !

Je confirme : Range n'a pas de propriété par défaut !

Souvent VBA sélectionne Value mais selon le contexte il arrive parfois à la propriété Text d'être choisie,
j'en connais encore se les mordant (au choix !) en ayant buté plusieurs jours sans spécifier de propriété !

_________________________________________________________________________________________________________
Je suis Paris, Nice, Bruxelles, Charlie, …
Avatar de joe.levrai joe.levrai - Expert éminent https://www.developpez.com
le 21/10/2016 à 16:42
Marc-L

si tu retrouves les deux discussions où on avait justement discuté et présenté des cas où le .Text était la propriété implicite qui était retenue, hésite pas à mettre les liens ici, là j'ai pas le temps de chercher
Avatar de Marc-L Marc-L - Expert éminent sénior https://www.developpez.com
le 21/10/2016 à 17:07

Idem pour moi … Si le constat de la propriété Text à la place de Value est rare
- on s'en aperçoit qu'en cas de souci - j'ai quand même rencontré ce cas plusieurs fois !
Avatar de joe.levrai joe.levrai - Expert éminent https://www.developpez.com
le 21/10/2016 à 17:47
Avatar de laurent_ott laurent_ott - Rédacteur https://www.developpez.com
le 22/04/2017 à 18:52
Chers membres du club,

j'ai le plaisir de vous présenter le tome 3 de ce mémento qui aborde le problème du voyageur de commerce avec une méthode d'approximation basée sur des principes simples.

Ce cours est une suite de la série sur « apprendre la programmation en VBA pour Excel par la pratique ». Après le tome 1, qui a donné les bases avec un exemple d'implémentation d'un algorithme de QuickRanking, et le tome 2 qui a introduit la programmation graphique, dans ce tome 3, il s'agira d'aborder un problème relativement complexe : le parcours du voyageur de commerce.

Bonne lecture et n'hésitez pas à apporter vos commentaires.

Retrouvez les meilleurs cours et tutoriels pour apprendre Microsoft Excel
Avatar de pier40 pier40 - Nouveau Candidat au Club https://www.developpez.com
le 28/07/2017 à 9:29
Un grand merci pour ce tutoriel (il me tarde d'explorer les 2 tomes suivants) parfait pour un néophyte comme moi.
Responsable associatif, j'espère très rapidement moderniser les différents suivis obsolètes que nous possédions.
Pierre
Avatar de laurent_ott laurent_ott - Rédacteur https://www.developpez.com
le 16/08/2017 à 10:53
Chers membres du club,

j'ai le plaisir de vous présenter ce nouveau mémento consacré à la cryptologie en VBA : Tome 4 - Un algorithme de chiffrement/déchiffrement des cellules pour une meilleure confidentialité

Vous découvrirez aussi l’application CryptoVBA qui vous permet de rendre des cellules illisibles pour un utilisateur n'étant pas dans la confidence, ou encore chiffrer un fichier ou un mail.

Bonne lecture et n'hésitez pas à apporter vos commentaires.

Retrouvez les meilleurs cours et tutoriels pour apprendre Microsoft Excel
Avatar de Daniel Josue Daniel Josue - Membre régulier https://www.developpez.com
le 16/08/2017 à 23:19
Merci pour ce nouvel opus

Toujours aussi interessant
Avatar de Mic13710 Mic13710 - Nouveau membre du Club https://www.developpez.com
le 12/10/2017 à 19:26
Bonjour et merci pour cet excellent tuto. Très beau travail.

J'utilise la version avec cryptoVBA.xlam pour mon projet et ça fonctionne plutôt bien.
J'ai juste un comportement bizarre si j'intègre ou pas certaines colonnes de calculs.
Si je ne les intègre pas dans la sélection, pas de problème. Je retrouve tous mes petits après déchiffrage.
Si je les intègre, une fois déchiffrées, les formules sont exactement comme avant, mais certaines colonnes affichent #VALEUR!
Je ne comprends pas pourquoi. Pour le moment, j'exclus ces colonnes de la plage a chiffrer mais je préfèrerais que tout soit chiffré.

A ce propos, le fichier sera accessible par plusieurs personnes. J'aurais souhaité mettre un code individuel de manière à pouvoir exclure une personne n'ayant plus les droits mais je n'ai pas compris comment faire, ni même si c'était possible. Comment puis-je intégrer plusieurs clés avec .xlam ?
Avatar de laurent_ott laurent_ott - Rédacteur https://www.developpez.com
le 13/10/2017 à 11:18
Bonjour.
Je te conseille d'ouvrir une discussion sur le forum EXCEL. Tu pourras joindre tes fichiers au format xlsx (pas de xlsm) et on pourra voir plus facilement ce qui bloque.
Responsables bénévoles de la rubrique Excel : Pierre Fauconnier - Arkham46 -