Macro qui va au bout des lignes vides

bonjour,

je débute en macro et vba, la j a fait une macro toute bete mais je voudrais que quand je "tire" la formule vers le bas cela s arrête aux cellules non vide.

dans mon exemple j ai mis 3000 mais demain le fichier va évoluer et ca sera peut être 5000 ou 8000...

merci de votre aide!!

Sub Macro1()
'
' Macro1 Macro
'

'
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D1").Select
ActiveCell.FormulaR1C1 = "immat"
Range("D2").Select
ActiveCell.FormulaR1C1 = "=RIGHT(RC[-1],7)"
Range("D2").Select
Selection.AutoFill Destination:=Range("D2:D3000")
Range("D2:D3000").Select
ActiveWindow.SmallScroll Down:=-12
Columns("E:E").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Range("E2").Select
ActiveCell.FormulaR1C1 = _
"=LEFT(RC[-1],2)&""-""&MID(RC[-1],3,3)&""-""&RIGHT(RC[-1],2)"
Range("E2").Select
Selection.AutoFill Destination:=Range("E2:E3000")
Range("E2:E3000").Select
ActiveWindow.SmallScroll Down:=-9
Columns("D:D").Select
Selection.EntireColumn.Hidden = True
End Sub

Bonjour,

A tester avec un code un peu plus nettoyé (même si encore optimisable à mon avis). La plupart des select sont inutiles et ralentissent l’exécution, bien qu'introduit par l'enregistreur de macro, on peut directement inscrire les formules. N'ayant pas la sélection du début de la macro, je vous laisse adapter suivant le commentaire en remplaçant Selection.Insert par .Colums("E:E").Insert ou à adapter en fonction de la colonne souhaitée. La dernière ligne est définir via la variable LR :

Sub Macro1()
Dim LR%
With ActiveSheet
    LR = .Cells(.Rows.Count, 4).End(xlUp).Row
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 'A modifier sous la même forme que la ligne .Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    .Range("D1").FormulaR1C1 = "immat"
    .Range("D2").FormulaR1C1 = "=RIGHT(RC[-1],7)"
    .Range("D2").AutoFill Destination:=Range("D2:D" & LR)
    .Columns("E:E").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    .Range("E2").FormulaR1C1 = "=LEFT(RC[-1],2)&""-""&MID(RC[-1],3,3)&""-""&RIGHT(RC[-1],2)"
    .Range("E2").AutoFill Destination:=Range("E2:E" & LR)
    .Columns("D:D").EntireColumn.Hidden = True
End With
End Sub

Cdlt,

merci beaucoup c est parfait!!

Rechercher des sujets similaires à "macro qui bout lignes vides"