Simplification d'un code avec formule

sr94

XLDnaute Occasionnel
Bonjour

J'ai fait le code suivant pour incrémenter des formules automatiquement dans un tableau, savez vous si on peut le simplifier ?

Par exemple puis je éviter les A5, B5 ... ? Je voudrais éviter de refaire tout le code si j'insère des nouvelles colonnes. En fait la ligne 5 est la première ligne de mon tableau qui commence en A4, comment puis je faire pour dire "la première ligne de la colonne avec entêtes "commandeligne"" au lieu de A5 par exemple.

De même pour recopier les formules vers le bas, puis je simplifier ?

Code:
Sub Macro_formules()
'
' Macro_formules Macro
'

'

Sheets("Feuil1").Activate

Range("A5, B5, C5, D5, P5, R5, AE5, AG5").ClearContents

Range("A5").FormulaR1C1 = "=IF([@CommandeNum]<>"""",CONCATENATE([@CommandeNum],[@NumLigne],[@NumSousLigne]),"""")"
Range("A5").AutoFill Destination:=Range("Tableau2[N°]")

Range("B5").FormulaR1C1 = "=CONCATENATE([@CommandeNum],""-"",[@NumLigne],""-"",[@NumSousLigne])"
Range("B5").AutoFill Destination:=Range("Tableau2[CommandeLigne]")

Range("C5").FormulaR1C1 = "=VLOOKUP([@NomFrs],Fournisseurs,3,FALSE)"
Range("C5").AutoFill Destination:=Range("Tableau2[Dhaka office]")

Range("D5").FormulaR1C1 = "=IF([@CommandeNum]="""","""",VLOOKUP([@NomFrs],Fournisseurs,2,FALSE))"
Range("D5").AutoFill Destination:=Range("Tableau2[Gestionnaire]")

Range("P5").FormulaR1C1 = "=IF([@[ETD manuel]]="""","""",[@[ETD manuel]]-[@[DateExpPrevue (M3)]])"
Range("P5").AutoFill Destination:=Range("Tableau2[Délai]")

Range("R5").FormulaR1C1 = "=IF([@Partiel]="""","""",[@QteCommandéeOrigine]-[@Partiel])"
Range("R5").AutoFill Destination:=Range("Tableau2[Reliquat]")

Range("AE5").FormulaR1C1 = "=IF([@CommandeNum]="""","""",IF([@ETA]<>"""",[@ETA]+15,IF([@[ETD manuel]]<>"""",[@[ETD manuel]]+45,[@[DateExpPrevue (M3)]]+45)))"
Range("AE5").AutoFill Destination:=Range("Tableau2[Dépôt]")

Range("AG5").FormulaR1C1 = "=IF(ISERROR(VLOOKUP([@NomFrs],Fournisseurs,4,FALSE)),"""",VLOOKUP([@NomFrs],Fournisseurs,4,FALSE))"
Range("AG5").AutoFill Destination:=Range("Tableau2[MAJ]")

End Sub

Merci beaucoup
 

sr94

XLDnaute Occasionnel
Re : Simplification d'un code avec formule

J'ai réussi à modifier comme suit de façon à avoir référence uniquement à des plages nommées.
Est ce que ce code est optimisé ?


Code:
Sub Macro_formules()
'
' Macro_formules Macro
'

'
Sheets("Feuil1").Activate

Range("N°").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=IF([@CommandeNum]<>"""",CONCATENATE([@CommandeNum],[@NumLigne],[@NumSousLigne]),"""")"
Selection.FillDown

Range("CommandeLigne").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=CONCATENATE([@CommandeNum],""-"",[@NumLigne],""-"",[@NumSousLigne])"
Selection.FillDown

Range("Dhaka_Office").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=VLOOKUP([@NomFrs],Fournisseurs,3,FALSE)"
Selection.FillDown

Range("Gestionnaire").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=IF([@CommandeNum]="""","""",VLOOKUP([@NomFrs],Fournisseurs,2,FALSE))"
Selection.FillDown

Range("Délai").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=IF([@[ETD manuel]]="""","""",[@[ETD manuel]]-[@[DateExpPrevue (M3)]])"
Selection.FillDown

Range("Reliquat").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=IF([@Partiel]="""","""",[@QteCommandéeOrigine]-[@Partiel])"
Selection.FillDown

Range("Dépôt").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=IF([@CommandeNum]="""","""",IF([@ETA]<>"""",[@ETA]+15,IF([@[ETD manuel]]<>"""",[@[ETD manuel]]+45,[@[DateExpPrevue (M3)]]+45)))"
Selection.FillDown

Range("MAJ").Select
Selection.ClearContents
Selection.FormulaR1C1 = "=IF(ISERROR(VLOOKUP([@NomFrs],Fournisseurs,4,FALSE)),"""",VLOOKUP([@NomFrs],Fournisseurs,4,FALSE))"
Selection.FillDown

End Sub

Merci
 

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87