Partage
  • Partager sur Facebook
  • Partager sur Twitter

EXCEL visualBasic

manipulation des cellules

    23 mars 2020 à 18:01:01

    Bonjour à tous,

    confinement oblige j'étudie VisualBasic.

    Pour essayer j'ai créé 3 macros histoire de m'exercer . L'exercice que je me suis trouve c'est tout simplement d'additionner ou de soustraire deux matrices carres de dimension 3 . Voici le code :

    Sub addition()
    '
    ' addition Macro
    ' addition de deux matrices
    '
    ' Touche de raccourci du clavier: Ctrl+a
    L1 = 2
    L2 = 8
    L3 = 14
    C = 2
    N = 2
    Range("C6").Select
        ActiveCell.FormulaR1C1 = "'+"
    For ligne = 0 To N
        For colonne = 0 To N
            Cells(L3 + ligne, C + colonne) = Cells(L1 + ligne, C + colonne) + Cells(L2 + ligne, C + colonne)
        Next colonne
    Next ligne
    '
    End Sub
    Sub soustraction()
    '
    ' soustraction Macro
    ' soustraction de deux matrices
    '
    ' Touche de raccourci du clavier: Ctrl+b
    '
    L1 = 2
    L2 = 8
    L3 = 14
    C = 2
    N = 2
    Range("C6").Select
        ActiveCell.FormulaR1C1 = "'-"
    For ligne = 0 To N
        For colonne = 0 To N
            Cells(L3 + ligne, C + colonne) = Cells(L1 + ligne, C + colonne) - Cells(L2 + ligne, C + colonne)
        Next colonne
    Next ligne
    End Sub
    Sub effacer()
    '
    ' effacer Macro
    '
    ' Touche de raccourci du clavier: Ctrl+c
    '
        Range("B2:D4").Select
        Selection.ClearContents
        Range("B8:D10").Select
        Selection.ClearContents
        Range("B14:D16").Select
        Selection.ClearContents
        Range("C6").Select
        ActiveCell.FormulaR1C1 = "'signe"
        Range("A1").Select
    End Sub
    

    Donc ici j'utilise la fonction cells, est ce la bonne méthode même si cela parait fonctionner? J'ai vu plein de truc bizarre qui s'apparente à la POO dont pour l'instant cela me parait incompréhensible.

    Merci pour vos réponses

    • Partager sur Facebook
    • Partager sur Twitter
    http://sinclair.recreatedzxspectrum.com/index.php
      26 mars 2020 à 16:11:07

      Salut,

      Il y a plusieurs méthodes pour faire ça, qui se valent toutes un peu je pense. Ce que tu as fait est bien pour un débutant en VBA (en programmation aussi ?).

      Du coup des remarques pour améliorer le code et qui pourront t'éviter des problèmes si tu fais des macros plus importantes :

      • Les .Select, Selection, ActiveCell, ActiveSheet, .Activate et autres sont à éviter (même si on passe tous par là en débutant), pourquoi ? Car tu ne peux pas être certain de leur contenu et ça alourdit l'écriture, en effet leur valeur dépend de l'utilisateur qui peut décider de cliquer n'importe où pendant l'exécution de la macro et donc changer la valeur de Selection par exemple (pour ton code ça n'aura pas d'impact je pense puisque tu fais un .Select juste avant Selection). Pour l'écriture, tu pourrais faire ces opérations en une seule ligne par exemple ligne 12-13 devient : "Range("C6").FormulaR1C1 = "'+" ". Du coup c'est double bonus : c'est plus simple à lire car en une seule ligne et tu n'as pas besoin de gérer où l'utilisateur va pouvoir cliquer pendant l'exécution de la macro ;
      • La POO en VBA tu ne pourras y échapper, d'ailleurs tu utilises des objets dans ton code : Range, Cells, Selection ;
      • Quand je veux lire / écrire la valeur d'une cellule avec Cells (ou Range, qui globalement est la même chose que Cells, juste la manière de définir les cellules qu'on veut qui change), je préfère ajouter .Value pour que ce soit explicite (par exemple : Cells(L3 + ligne, C + colonne).Value = ...) ;
      • Ligne 54 : ici tu ne veux pas écrire une formule dans la cellule mais une valeur donc tu peux utiliser .Value au lieu de .FormulaR1C1 (du coup il n'y a plus besoin de l'apostrophe), pareil pour les lignes 34 et 13
      • Mets quelques retours à la ligne entre les macros, c'est plus facile à repérer comme ça :)
      • C'est plus un goût personnel mais je n'aime pas avoir des variables non déclarées

      -
      Edité par Stormweaker 26 mars 2020 à 16:13:06

      • Partager sur Facebook
      • Partager sur Twitter

      EXCEL visualBasic

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown