La vie

Comment copier une ligne dans Excel VBA

Comment copier une ligne dans Excel VBA

Utiliser VBA pour programmer Excel n’est plus aussi populaire qu’il était. Cependant, beaucoup de programmeurs préfèrent utiliser Excel. Si vous êtes l'une de ces personnes, cet article est pour vous.

Copier une ligne dans Excel VBA est le genre de choses pour lesquelles Excel VBA est vraiment utile. Par exemple, vous souhaiterez peut-être avoir un fichier de tous vos reçus avec la date, le compte, la catégorie, le fournisseur, le produit / service et le coût entrés ligne par ligne, au fur et à mesure de leur apparition - une instance de comptabilité évolutive plutôt que statique. Pour ce faire, vous devez être capable de copier une ligne d'une feuille de calcul à une autre.

Un exemple de programme VBA Excel qui copie une ligne d'une feuille de calcul à une autre (trois colonnes seulement pour plus de simplicité) contient:

  • Une colonne alpha pour le 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 Excel VBA

Pour déclencher un événement qui copie la ligne, utilisez le contrôle de formulaire standard-a Button. Dans Excel, cliquez sur Insérer sous l'onglet Développeur. Ensuite, sélectionnez le contrôle de formulaire Bouton et dessinez le bouton où vous le souhaitez. Excel affiche automatiquement une boîte de dialogue vous permettant de sélectionner une macro déclenchée par l'événement click du bouton ou d'en créer une nouvelle.

Il existe plusieurs façons de trouver la dernière ligne de 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 parce que l'utilisateur peut changer 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 solution la plus simple consiste à entrer une valeur dans la cellule, puis à déplacer le bouton dessus.)

Code pour copier une ligne à l'aide d'Excel VBA

Sub Add_The_Line () Dimension currentRow sous forme de feuilles entières ("Sheet1"). Sélectionnez currentRow = Range ("C2"). Valeur Lignes (7) .Sélectionnez Selection.Copy Sheets ("Sheet2"). Sélectionnez Lignes (currentRow) .Select ActiveSheet .Paste Dim theDate As Date theDate = Now () Cellules (currentRow, 4) .Value = CStr (theDate) Cellules (currentRow + 1, 3) .Activate Dim rTotalCell en tant qu'ensemble de plage rTotalCell = _ Feuilles ("Sheet2"). Cellules (Rows.Count, "C"). End (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction.Sum _ (Range ("C7", rTotalCell.Offset (-1, 0)), feuilles ("Feuille1" ) .Range ("C2"). Valeur = currentRow + 1 End Sub

Ce code utilise xlUp, un "nombre magique" ou, plus techniquement, une constante énumérée, reconnue par la méthode End. Le décalage (1,0) se déplace simplement vers le haut d’une ligne dans la même colonne. L’effet final est donc de sélectionner la dernière cellule de la colonne C.

En mots, la déclaration dit:

  • Aller à la dernière cellule de la colonne C (équivalent à Fin + Flèche bas).
  • Ensuite, remontez à la dernière cellule inutilisée (équivalent à la flèche Fin + Flèche vers le 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 à la fois les objets VBA et Excel VBA. L'utilisation de xlUP est un bon exemple du type de connaissances spécialisées essentielles pour pouvoir écrire des macros VBA sans rechercher trois éléments différents pour chaque instruction codée. Microsoft a beaucoup progressé dans la mise à niveau de l'éditeur Visual Studio pour vous aider à déterminer la syntaxe correcte, mais l'éditeur VBA n'a pas beaucoup changé.


Voir la vidéo: Excel VBA - Comment copier une plage de données dynamique ? (Août 2021).