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 :

Mémento sur la programmation en VBA pour EXCEL


Sujet :

Macros et VBA Excel

  1. #1
    Rédacteur

    Mémento sur la programmation en VBA pour EXCEL
    Bonjour,
    Je vous propose ce mémento sur la programmation en VBA pour Excel.


    Il s'agit d'une compilation d'exemples pratiques pour apprendre la programmation en Microsoft Office Excel avec VBA.
    Vous allez aussi apprendre des exemples d'Excel avec les autres composants de Microsoft Office tels que Outlook et Access.

    C'est un cours qui peut servir de support de formation pratique pour apprendre la programmation VBA sous Microsoft Office Excel. Les exemples sont en Excel 2010, mais peuvent être adaptés pour les versions récentes : Excel 2013 et Excel 2016.
    Bonne lecture et n'hésitez pas à apporter vos commentaires.


    Retrouvez les meilleurs cours et tutoriels pour apprendre Microsoft Excel
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  2. #2
    Membre habitué
    Merci pour ce Mémento,

    Vraiment bien fait, ça permet de revoir les fondamentaux .

    Bonne continuation.

  3. #3
    Futur Membre du Club
    Super bien fait !! Bravo et merci

  4. #4
    Expert éminent
    Bonjour,

    bravo !!!, je crois que je vais m'y attarder dès que possible
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Rédacteur

    Pour plus d'informations sur la compatibilité des API avec windows 64 bits je vous invite à lire l'excellente documentation de Thierry Gasperment : Développer avec office 64 bits.
    Cordialement.
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  6. #6
    Futur Membre du Club
    Pb avec programme final sur mesbonbon et mes scoubidous
    Bonjour ,
    C est mon premier post sur ce forum que je consulte trés souvent.
    Je programme un peu maladroitement et j aimerias me structurer et donc je reprends les bases .

    Dans la fonction CompterPoche du tuto Apprendre la programmation en VBA pour EXCEL par la pratique - Première partie , je ne retrouve pas les variables publics MesBonbon et MesScoubidou. On a NbBonbon = NbBonbon + 1 . N'ai je rien compris ou y a-t-il un pb de copier/coller dans ce tuto ?

    A tout cas merci pour ce tuto que je vais continuer a lire.

  7. #7
    Rédacteur

    Si nous parlons du même code :

    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
    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 NbBonbon = NbBonbon + 1       ' Les bonbons.
        If Cells(Ligne, MaColonne) = "s" Then NbScoubidou = NbScoubidou + 1 ' Les scoubidous.
        Ligne = Ligne + 1 ' Passe à la ligne suivante.
     
    Wend
     
    End Function


    Les variables MesBonbon et MesScoubidou sont déclarées en début du module :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    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


    Par cette déclaration en début du module, la portée des variables s'étend à l'ensemble des procédures du module.
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  8. #8
    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
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  9. #9
    Invité
    Invité(e)
    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

  10. #10
    Futur Membre du Club
    bloqué sur apprendre la programmation en VBA - TOME 1 - chapitre VII
    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.

  11. #11
    Candidat au Club
    Pb avec programme final sur mesbonbon et mes scoubidous
    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 -Visualiser dans une fenêtre à part
    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... )

  12. #12
    Rédacteur

    Tome 1 - Coquille dans le code exemple
    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 -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
    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
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  13. #13
    Membre actif
    Bravo et merci pour tout ce travail !

  14. #14
    Expert éminent
    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

  15. #15
    Expert éminent sénior
    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, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  16. #16
    Expert éminent
    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

  17. #17
    Expert éminent sénior

    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 !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  18. #18

  19. #19
    Rédacteur

    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
    N'hésitez pas à consulter mon mémento sur la programmation en VBA pour EXCEL tome 1.
    Ou le tome 2 qui aborde la programmation en mode graphique avec un exemple de programmation d'un jeu d'arcade en VBA
    Et pour les curieux, le tome 3 qui aborde le problème du voyageur de commerce.
    Le tome 4 est consacré à la cryptologie en VBA et satisfera ceux qui ont besoin de confidentialité.
    Vous découvrirez dans le tome 5 les fonctions SQL pour gérer les tableaux de données et l'application Sentinelle qui veille sur vos fichiers.
    Le tome 6, dernier de la série, vous apprendra à créer des fonctions pour simplifier la vie des utilisateurs.
    Le Crible Quadratique donne toutes les fonctions pour les opérations sur les grands nombres en VBA.
    N'oubliez pas de consulter les FAQ EXCEL et les cours et tutoriels comme par exemple celui de Jean-Marc RABILLOUD qui est très complet.

  20. #20
    Nouveau Candidat au Club
    Grand merci pour ces tutoriels
    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

###raw>template_hook.ano_emploi###