Bonjour,
A l'aide de VBA, je veux créer un macro qui copie un tableau quelque soit son nombre de ligne.
Je veux standardiser pour que ce dernier s'applique sur n'importe quel nombre de lignes.
Tes souhaits sont un peu vagues, ça demande tout de même un peu plus de précisions !
Un exemple à tester. entrer des valeurs dans la feuille "Feuil1", exécuter le code et voir la feuille "Feuil2" :
Sub Test()
Dim Plage As Range
Dim Tbl
'appelle la fonction DefPlage() où le 1er argument est la feuille (en tant qu'objet) où se trouve
'la plage à récupérer et les autres arguments sont la ligne et colonne de début (1, 1 est la cellule A1, ligne 1, colonne 1)
Set Plage = DefPlage(Worksheets("Feuil1"), 1, 1)
'affecte la plage au tableau
Tbl = Plage
'colle le tableau dans la feuille "Feuil2" à partir de A1
With Worksheets("Feuil2")
.Range(.Cells(1, 1), .Cells(UBound(Tbl, 1), UBound(Tbl, 2))).Value = Tbl
End With
End Sub
Function DefPlage(Fe As Worksheet, Optional L As Long = 1, Optional C As Long = 1) As Range
On Error GoTo Fin
With Fe
Set DefPlage = .Range(.Cells(L, C), _
.Cells(.Cells.Find("*", .[A1], -4123, , _
1, 2).Row, .Cells.Find("*", .[A1], -4123, , _
2, 2).Column))
End With
Exit Function
Fin:
Set DefPlage = Nothing
End Function