Optimisation d'une formule d'insertion de ligne VBA avec .Select

Bonjour à tous!

Je commence à découvrir le VBA dans Excel et dans l'un de mes fichiers une macro toute simple est devenue très lente par rapport à sa complexité.

J'ai effectué quelques recherches sur le web et je pense avoir trouvé la ligne problématique qui serait en fait liée au ".Select"

C'est un fichier de comptabilité et cette macro me permet d'ajouter une ligne à un tableau

Sub Transfert_ajout()
Rows("12:12").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("D13:o13").Select
Selection.AutoFill Destination:=Range("D12:o13"), Type:=xlFillDefault
Range("g12:h12").ClearContents
Range("j12:l12").ClearContents
Range("d12").ClearContents
Range("o12").ClearContents
Rows("12:12").EntireRow.AutoFit
End Sub

Y a-t-il quelqu'un qui serait capable de me proposer une alternative d'écriture pour arriver au même résultat ? J'ai aussi sur un autre onglet du même fichier un code similaire. Ce dernier s'effectue en 1 seconde, alors que le premier passage s'effectue en 16 secondes.

Autre code sur le même fichier

Sub Insertion()
Rows("12:12").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("B13:m13").Select
Selection.AutoFill Destination:=Range("B12:m13"), Type:=xlFillDefault
Range("B12:d12").Select
ActiveCell.FormulaR1C1 = ""
Range("d12").ClearContents
Range("h12").ClearContents
Range("g12").ClearContents
Range("m12").ClearContents
Range("l12").ClearContents
Range("c12").ClearContents
Rows("12:12").EntireRow.AutoFit
End Sub

Edit modo : code mis entre balises

Un grand merci d'avance.

Julien

P.S. Lors de l'ajout d'une ligne certaine colonne doivent rester des formules et d'autres des cellules pour entrer de l'information. D'oû l'utilisation peut-être excessive du ".ClearContents". Mais c'est la seule façon j'ai réussi à arriver à mes fins avec mes connaissances actuelles.

Bonjour Julien et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :

  • Joignez (si possible) un fichier pour augmenter vos chances d'obtenir de l'aide en cliquant sur le bouton Fichier de l'éditeur. Si votre fichier est trop lourd ou contient des données personnelles, créez une version allégée de votre fichier avec juste assez d'informations pour permettre de comprendre votre problème. Dans tous les cas, ne postez JAMAIS de fichiers avec des informations personnelles ou confidentielles (cet utilitaire peut vous aider à les retirer).

et

  • Pour plus de lisibilité, utilisez le bouton image pour insérer vos codes VBA (et si possible aussi pour vos formules Excel).

Merci de votre participation et de votre compréhension

En ce qui concerne votre problématique, cela ne vien pas de ces quelques lignes de code il nous faudrait le fichier anonymisé

A+

Bonjour Bruno,

Je suis désolé si mon dernier commentaire n'était pas parfait. Je vais avec plaisir prendre connaissance des méthodes du Forum.

Pour ce qui est du fichier, il y a beaucoup d'éléments confidentiels notamment dans des noms de plage, listes déroulantes, etc. Donc ce que j'ai fais c'est supprimer 90% du fichier et anonymisé les données restantes qui sont en lien direct avec la macro. Le fichier contient donc beaucoup de cellules avec des erreurs, mais elles ne devraient pas avoir d'impact.

Cependant, la macro est toujours lente, alors le problème doit être dans les onglets liées à celle-ci j'imagine. Dans l'onglet "Transfert' il y a un bouton pour activer la macro.

Merci encore pour ton aide.

Rechercher des sujets similaires à "optimisation formule insertion ligne vba select"