VBA Autofill avec Range activeCell
Bonjour
Ceci est mon premier post et je débute.
Je souhaite nettoyer certaines colonnes de mon fichier où l'import à supprimer un premier 0 dans certaine colonne.
J'ai ma formule qui fonctionne, j'ai crée (comme j'ai pu) une inputbox pour sélectionner ma colonne à nettoyer.
Je réussis à mettre ma formule de nettoyage dans ma nouvelle colonne.
Mais je ne parviens pas étendre ma formule sur toutes les lignes jusqu'à la dernière remplie.
J'ai fouillé dans le forum mais je ne trouve pas
Voici le code (vous avez le droit de vous moquer car je galère dur....)
Sub Rajout()
'
'selection colonne à nettoyer
Dim ma_colonne
Set ma_colonne = Application.InputBox("choissiez une cellule ou une plage", Type:=8)
'inserer colonne
ma_colonne.EntireColumn.Select
Columns(ActiveCell.Column + 1).Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'formule
Dim nbcar As Long
nbcar = Application.InputBox("nb caractère", Type:=1)
ma_colonne.Offset(1, 1).Select
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "=IF(LEN(RC[-1])=" & nbcar & ",RC[-1],(CONCATENATE(0,RC[-1])))"
Dim derniereligne As Long
derniereligne = Cells(Rows.Count, ActiveCell.Column - 1).End(xlUp).Row
a = ActiveCell.Address
Selection.AutoFill Destination:=Range("& a &", "& DerniereLigne"), Type:=xlFillDefault
End SubMerci par avance de votre aide
SBB
Bonjour Sevbu_63,
À tester :
Sub Rajout()
'selection colonne à nettoyer
Dim ma_colonne As Range
Set ma_colonne = Application.InputBox("choissiez une cellule ou une plage", Type:=8)
'inserer colonne
ma_colonne.EntireColumn.Select
Columns(ActiveCell.Column + 1).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'formule
Dim nbcar As Long
nbcar = Application.InputBox("nb caractère", Type:=1)
ma_colonne.Offset(0, 1).Select
Selection.NumberFormat = "General"
ActiveCell.FormulaR1C1 = "=IF(LEN(RC[-1])=" & nbcar & ",RC[-1],(CONCATENATE(0,RC[-1])))"
Dim derniereligne As Long
derniereligne = Cells(Rows.Count, ActiveCell.Column - 1).End(xlUp).Row
a = ActiveCell.Address
Range(a).AutoFill Destination:=Range(a & ":" & Cells(derniereligne, ActiveCell.Column).Address), Type:=xlFillDefault
End SubMerci ça fonctionne bien
Par contre la formule commence à s'incrémenter dès la première ligne et ce n'est pas grave c'est un détail.
Bonne soirée