VBA - Méthode AutoFill

Bonjour à tous,

Je reviens vers vous pour un souci avec la fonction AutoFill. Je dois l'employer de la mauvaise manière mais après maintes recherches sur internet et beaucoup d'essais, je ne suis toujours pas parvenu à régler mon souci. Le message d'erreur que je récupère est le suivant:

"Erreur d'exécution 1004: La méthode AutoFill de la classe Range a échoué"

Le code que j'utilise est le suivant: (je vous ai tout de même joint mon fichier)

Sub AAA()

Dim Feuille As Worksheet
Dim i As Long
Set Feuille = ThisWorkbook.Worksheets("Feuil1")

    For i = 2 To 8
        With Feuille
            If .Range("M" & i).Value < 100 Then
                .Range("A" & i).EntireRow.Insert
                [Surligner].Range("M1").AutoFill Destination:=.Range("M" & i)[/Surligner]
                .Range("O1").AutoFill Destination:=.Range("O" & i)
            End If
        End With
    Next i

End Sub

La problème arrive au niveau de la ligne que j'ai surligné, donc au premier emploi de la méthode AutoFill.

Si quelqu'un pouvait m'apporter un peu d'aide là dessus, ce serait vraiment top !

Bonne journée à tous !

SkillzZ

69classeur2.xlsm (16.30 Ko)

Bonjour,

De mémoire, ce n'est pas la dernière cellule qu'il faut mettre, mais bien toute la plage concernée, comme ceci :

.Range("M1").AutoFill Destination:=.Range("M1:M" & i)
.Range("O1").AutoFill Destination:=.Range("O1:O" & i)

Après, j'ai du mal à saisir l'intérêt de l'utiliser dans une boucle sur la ligne...

Bonjour Pedro,

Merci beaucoup pour ta réponse.

En fait je suis amené à insérer des lignes dans mon fichier avec la boucle. Et j'aimerais que dans les lignes insérer, les formules des colonnes M et O soient conservées ! Mais qu'elles s'adaptent à la nouvelle ligne insérée. Peut-être que ce n'est pas AutoFill que j'ai intérêt à utiliser ? Enfin ceci pour t'expliquer l'intérêt de ma démarche. Je vais essayer ce que tu m'as proposé ! Merci beaucoup !

SkillzZ

Bonjour Pedro,

Merci beaucoup pour ta réponse.

En fait je suis amené à insérer des lignes dans mon fichier avec la boucle. Et j'aimerais que dans les lignes insérer, les formules des colonnes M et O soient conservées ! Mais qu'elles s'adaptent à la nouvelle ligne insérée. Peut-être que ce n'est pas AutoFill que j'ai intérêt à utiliser ? Enfin ceci pour t'expliquer l'intérêt de ma démarche. Je vais essayer ce que tu m'as proposé ! Merci beaucoup !

SkillzZ

Tu as plusieurs possibilités, par exemple :

  • copié-coller (qui reporte donc les formules)
  • utilisation d'un tableau structuré (avec report automatique des formules à l'insertion de ligne)
  • réécriture de la formule dans la nouvelle ligne, comme :
.Range("O" & i).Formula = "=R[-1]C*10"

Re,

Je pense utiliser ce que tu m'as proposer avec AutoFill, qui me convient en fait. Mais merci pour les proposition, je vais noter ça Pedro, c'est top

À bientôt,

SkillzZ

Pedro,

Je me permets de revenir vers toi car j'ai une question quant aux solutions que tu me proposes. Entre le copier coller des formules et la méthode AutoFill, saurais-tu laquelle est la plus économe pour ma macro en temps de calcul? J'essaye de rendre mon code plus léger!

Merci,

SkillzZ

Pedro,

Je me permets de revenir vers toi car j'ai une question quant aux solutions que tu me proposes. Entre le copier coller des formules et la méthode AutoFill, saurais-tu laquelle est la plus économe pour ma macro en temps de calcul? J'essaye de rendre mon code plus léger!

Merci,

SkillzZ

Je ne sais pas, mais tu peux faire le test sur un jeu de données fictif de grande taille en comparant les 2 méthodes.

En revanche, la réécriture de la formule via VBA sera plus rapide. Tu peux aussi désactiver le recalcul systématique des formules à chaque modification le temps d’exécuter ta macro, avec :

Application.Calculation = xlCalculationManual
'Ton code
Application.Calculation = xlCalculationAutomatic

Bien vu ! Merci Pedro

Rechercher des sujets similaires à "vba methode autofill"