Comment étendre le code Excel VBA suivant

Je veux générer des données sage de fin de mois pour une période de début et de fin donnée; nombre de mois varie selon les candidats.

Les données suivantes doivent être générées par l'input de l'user et peuvent varier en nombre par candidat:

Colonne 'A' – fin de mois

Colonne 'B' – EMI

Colonne 'C' – partie d'intérêt

Colonne 'D' – partie principale

etc.

Je veux également calculer la sum de chaque colonne à la fin et la ligne modifiant la taille de la feuille en fonction de la colonne "A" non des lignes. Aidez-nous.

Sub GenerateDates() Dim startDate As Date Dim endDate As Date Dim currentDate As Date startDate = Range("b4").Value endDate = Range("b8").Value currentDate = startDate Range("a17").Select Do Until currentDate = endDate ActiveCell.Value = currentDate ActiveCell.Offset(1, 0).Select 'currentDate = DateAdd("m", 1, currentDate) currentDate = DateSerial(Year(currentDate), Month(currentDate) + 2, 0) Loop End Sub 

@Anil essaie ceci:

 Sub GenerateDates() Dim startDate As Date Dim endDate As Date Dim currentDate As Date Dim cnt As Integer startDate = Range("b2").Value endDate = Range("b3").Value currentDate = startDate Range("a9").Select cnt = ActiveSheet.Range("E3") ActiveSheet.Range(ActiveSheet.Range("A10"), ActiveSheet.Cells(Rows.Count, Columns.Count)).ClearContents With ActiveSheet.Range(ActiveSheet.Range("A9"), ActiveSheet.Range("A9").End(xlToRight)) .Copy .Offset(1).Resize(cnt - 1).PasteSpecial xlPasteAll End With Application.CutCopyMode = False For i = 1 To Range("A8").End(xlToRight).Column - Range("A8").Column Range("A8").Offset(cnt + 1, i) = WorksheetFunction.Sum(Range("A8").Offset(1, i).Resize(cnt)) Next End Sub 

Cliquez ici pour download la solution.

Dans l'excellence, il y a 5 colonnes: Fin du mois Date, EMI, Intérêts, Principal, Montant exceptionnel. Vous devez disposer de 4 champs de saisie: Période de début, Période de fin, Montant, Intérêt. Le button Calculer exécute la macro ci-dessus. La première ligne, c'est-à-dire la 9ème rangée, contient les formules et est copiée et collée pour le nombre de périodes pour get les dates et les calculs. À la fin, la sommation des colonnes est prise. J'espère que cela résoudra votre problème!

Essayez l'édition suivante en fonction de ce que je peux comprendre sur ce que vous voulez faire:

 Sub GenerateDates() Dim startDate As Date Dim endDate As Date Dim currentDate As Date Dim ws as Worksheet Dim iRow As Long Set ws = Worksheets("Sheet1") 'or whatever name of sheet you have Set wbDesti = Workbooks.Open("C:\Users\...\DestinationFile.xlsx") ' <<< path to source workbook Set sh = wbDesti.Worksheets("Sheet1") 'Sheet in destination file 'automatically find the last row in Sheet A. iRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _ SearchDirection:=xlPrevious, LookIn:=xlValues).row + 1 startDate = ws.cells(1,1).Value endDate = ws.cells(2,1).Value currentDate = startDate 'Range("a17").Select 'removed this to avoid .Select functions dim row as integer 'declare another variable for row... 'row = iRow 'Do Until currentDate = endDate 'ws.cells(row,1).value = currentDate 'row = row + 1 'currentDate = DateAdd("m", 1, currentDate) 'currentDate = DateSerial(Year(currentDate), Month(currentDate) + 2, 0) 'Loop Dim col as integer col = 2 'start with B Do until col = 4 sh.cells(1,col) = application.worksheetfunction.sum(ws.range("B"&10&":"&"B"&":"&60)) '***other codes goes here to transfer data same as above. col = col + 1 Loop wbDesti.quit Set sh = Nothing End Sub