L'utilisation de VBA pour programmer Excel n'est pas aussi populaire qu'auparavant. Cependant, il y a encore beaucoup de programmeurs qui le préfèrent lorsqu'ils travaillent avec Excel. Si vous faites partie de ces personnes, cet article est pour vous.
Copie d'une ligne dans Excel VBA est le genre de chose pour laquelle Excel VBA est vraiment utile. Par exemple, vous pouvez souhaiter avoir un fichier de tous vos reçus avec la date, le compte, la catégorie, le fournisseur, produit / service, et le coût est entré une ligne à la fois, au fur et à mesure qu'ils se produisent - un exemple d'évolution de la comptabilité plutôt que comptabilité statique. Pour ce faire, vous devez pouvoir copier une ligne d'une feuille de calcul à une autre.
Un exemple de programme Excel VBA qui copie une ligne d'une feuille de calcul à une autre - en utilisant seulement trois colonnes pour plus de simplicité - contient:
- Une colonne alpha pour texte
- Une colonne numérique - une somme automatique est créée sur la feuille de calcul cible
- Une colonne de date - la date et l'heure actuelles sont remplies automatiquement
Considérations pour l'écriture de code VBA Excel
Pour déclencher un événement qui copie la ligne, optez pour le contrôle standard de formulaire Button. Dans Excel, cliquez sur Insérer dans l'onglet Développeur. Sélectionnez ensuite le contrôle de forme Bouton et dessinez le bouton où vous le souhaitez. Excel affiche automatiquement une boîte de dialogue pour vous permettre de sélectionner un macro déclenché par l'événement de clic du bouton ou pour en créer un nouveau.
Il existe plusieurs façons de trouver la dernière ligne dans la feuille de calcul cible afin que le programme puisse copier une ligne en bas. Cet exemple choisit de conserver le numéro de la dernière ligne de la feuille de calcul. Pour conserver le numéro de la dernière ligne, vous devez stocker ce numéro quelque part. Cela peut être un problème car l'utilisateur peut modifier ou supprimer le numéro. Pour contourner ce problème, placez-le dans la cellule directement sous le bouton de formulaire. De cette façon, il est inaccessible à l'utilisateur. (La chose la plus simple à faire est d'entrer une valeur dans la cellule, puis de déplacer le bouton dessus.)
Code pour copier une ligne à l'aide d'Excel VBA
Sub Add_The_Line () Dim currentRow As Integer Sheets ("Sheet1"). Sélectionnez currentRow = Range ("C2"). Value Rows (7) .Select Selection. Copier les feuilles ("Sheet2"). Sélectionnez Lignes (currentRow). Sélectionnez ActiveSheet. Coller Dim theDate As Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3) .Activate Dim rTotalCell As Range Set rTotalCell = _ Sheets ("Sheet2"). Cells ( Lignes. Count, "C"). End (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction. Sum _ (Range ("C7", rTotalCell. Offset (-1, 0))) Sheets ("Sheet1"). Range ("C2"). Value = currentRow + 1 End Sub
Ce code utilise xlUp, un «nombre magique», ou plus techniquement une constante énumérée, qui est reconnue par la méthode End. Le décalage (1,0) monte simplement d'une ligne dans la même colonne, donc l'effet net est de sélectionner la dernière cellule de la colonne C.
En mots, la déclaration dit:
- Accédez à la dernière cellule de la colonne C (équivalent à Fin + Flèche bas).
- Revenez ensuite à la dernière cellule inutilisée (équivalente à la flèche Fin + Haut).
- Ensuite, montez encore une cellule.
La dernière instruction met à jour l'emplacement de la dernière ligne.
VBA est probablement plus difficile que VB.NET car vous devez connaître les objets VBA et Excel VBA. L'utilisation de xlUP est un bon exemple du type de connaissances spécialisées qui sont essentielles pour pouvoir écrire des macros VBA sans rechercher trois choses différentes pour chaque instruction que vous codez. Microsoft a fait de grands progrès dans la mise à niveau de l'éditeur Visual Studio pour vous aider à trouver la syntaxe correcte, mais l'éditeur VBA n'a pas beaucoup changé.