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!!