Copier jusqu'a la derniere ligne remplie d'un classeur fermé

Bonjour à tous

j'ai un code vba qui copie la feuille d'un classeur fermé, actuellement il fonctionne très bien mais avec un nombre défini de ligne.

J'aimerai si possible à la place qu'il fasse la même chose mais automatiquement jusqu'à la dernière ligne remplie, car le nombre de ligne à copier peut être variable.

(Le vba est dans le module1)

Merci de votre aide.

Cordialement.

13essai2-copie.xlsm (19.74 Ko)

Dans ce cas,

  • soit tu ouvres en vba ton fichier, ce qui te permettra de connaître le nombre de lignes
  • mais si tu veux travailler avec le classeur fermé (cf le titre), il faudrait dédier une zone dans ton fichier source qui te donne le nombre de lignes (et que tu appelleras)

Bonsoir et merci de te réponse, donc impossible en vba?

Bonjour à tous,

à tester:

Sub Test()
'   ====>> Chemin, Fichier et Feuille à adapter
    Const FName As String = "C:\Users\username\Desktop\[fichierX.xlsm]"
    Const ShName As String = "Feuil1"
    Const ColNo As Integer = 1
    Dim ShNew As Worksheet
    Dim LastRow As Long
    Dim Lastrow2 As Long

    Lastrow2 = Cells(Rows.Count, 1).End(xlUp).Row

    Application.DisplayAlerts = False
    Set ShNew = Worksheets.Add

    With ShNew.Range("A1")
        .FormulaR1C1 = "=COUNTA('" & FName & ShName & "'!C" & ColNo & ")"
        LastRow = .Value
    End With
    ShNew.Delete
    Application.DisplayAlerts = True

Application.ScreenUpdating = False
 Worksheets("bd1").Range("A2:F" & Lastrow2).ClearContents
  On Error Resume Next
With Worksheets("bd1").Range("A2:F" & LastRow)

  .FormulaArray = "='" & ThisWorkbook.Path & "\[fichierX.xlsm]'!A2:F" & LastRow & ""
  .[A1:F & Lastrow]
  .Value = .Value

  End With
End Sub

Dans ce cas,

  • soit tu ouvres en vba ton fichier, ce qui te permettra de connaître le nombre de lignes
  • mais si tu veux travailler avec le classeur fermé (cf le titre), il faudrait dédier une zone dans ton fichier source qui te donne le nombre de lignes (et que tu appelleras)

Bonsoir et merci de te réponse, donc impossible en vba?

Je retire ce que j'ai dit, Sequoyah a raison ... bravo ! En effet on peut avoir le nombre de lignes par une formule de type, même fichier fermé.

Sub Macro1()
    rep = "C:\Users\XXX\Downloads"
    fic = "BASE.xlsx"
    onglet = "Feuil1"
    ActiveCell.FormulaR1C1 = "=COUNTA('" & rep & "\[" & fic & "]" & onglet & "'!C1)"
End Sub

Merci de m'avoir contredit !

Rechercher des sujets similaires à "copier derniere ligne remplie classeur ferme"