Etendre une formule en VBA

Bonjour,

Voici mon code :

Sub ExtensionFormule()

Dim DernLigne As Integer

'Selection de la feuille Sortie
Worksheets("Sortie").Select

'n° de la première cellule de date
Range("I2").Select

'Formule
ActiveCell.FormulaR1C1 = "=TEXT(RC[-1],""mmm"")"
Range("I2").Select

'Etendre la formule jusqu'à la dernière ligne
DernLigne = Range("H" & Row.Count).End(xlUp).Row
Range("I2").AutoFill Destination:=Range("I3:I" & DernLigne)

End Sub

Dans ma feuille sortie, les données sont une plage variable en fonction d'un export que je fais en amont sur un logiciel.

Ma fonction d'étendre ne fonctionne pas savez-vous pourquoi ? et comment je puis-je faire pour que le module VBA s'exécute à l'ouverture du fichier ?

Un fichier en exemple.

243test.xlsm (21.91 Ko)

Bonjour,

DernLigne = Range("H" & Rows.Count).End(xlUp).Row ----> ROWS pas row

Range("I2").AutoFill Destination:=Range("I2:I" & DernLigne) I2 pas I3

P.

Bonjour,

Mettre une foultitude de lignes (enregistrées) n'immunise pas contre les erreurs de syntaxe !

Sub ExtensionFormule()
    Dim DernLigne As Integer
    With Worksheets("Sortie")
        .Range("I2").FormulaR1C1 = "=TEXT(RC[-1],""mmm"")"
        DernLigne = .Range("H" & .Rows.Count).End(xlUp).Row
        .Range("I2").AutoFill .Range("I2:I" & DernLigne)
    End With
End Sub

A lire avec soin pour détecter les erreurs, et commencer d'assimiler une façon "normale" (et efficace) d'écrire en VBA.

Cordialement,

Et salut Patrick !

Bonjour,

Pour une exécution à l'ouverture du fichier, la procédure doit être placée dans le module ThisWorkbook.

Private Sub Workbook_Open()
Dim DernLigne As Long
    With Worksheets("Sortie")
        .Range("I2").FormulaR1C1 = "=TEXT(RC[-1],""mmm"")"
        DernLigne = Range("H" & Rows.Count).End(xlUp).Row
        .Range("I2").AutoFill Destination:=.Range("I2:I" & DernLigne)
    End With
End Sub

A+

166test.xlsm (20.79 Ko)

Salut Fernand...

et j'ajouterais bien: Dim DernLigne As Integer LONG

P.

Il y a tout de même peu de fichiers où l'on dépasse la ligne 32767 !

Et dans ce cas mettre une formule n'est pas spécialement un bonne idée...

Bye !

MFerrand a écrit :

Il y a tout de même peu de fichiers où l'on dépasse la ligne 32767 !

Et dans ce cas mettre une formule n'est pas spécialement un bonne idée...

Bye !

On voit tout ici

https://forum.excel-pratique.com/excel/taille-de-fichier-tres-importantes-t85637.html

Bon... c'est très rare et je ne vois pas comment la personne va faire avec autant de lignes potentielles

C'est pas le même sujet !

Je suis déjà intervenu sur des sujets d'edlede !! et sans regarder, mon conseil de ne jamais étendre plus que nécessaire, et aucune formule !

(S'il ne veut pas passer son temps à venir demander des conseils pour pallier au poids et à la lenteur...)

Bonjour

Je suis déjà intervenu sur des sujets d'edlede !! et sans regarder, mon conseil de ne jamais étendre plus que nécessaire, et aucune formule

Tout à fait en phase avec MFerrand.

Ne jamais oublier qu'à chaque changement sur une feuille quelconque, excel recalcule toutes les formules pour adapter. D'où cela allonge le temps de réponse mais aussi dans une moindre mesure, grossit le poids du fichier

De même pour des bordures (fines) placées à des endroits où il n'y pas de données. Sous excel 2003 c'était une cata

Bon appétit !

Cordialement

Dan !

J'en profite pour rappeler les liens fournis par eriiic concernant les temps de recalculs (explications, tests, etc.)

Je ne les ai pas sous la main, mais il ne manquera pas de les refournir éventuellement...

Je n'ai pris que le temps de les lire un peu superficiellement jusqu'ici, mais il est clair que c'est une référence pour pousser les investigations en ces matières...

Cordialement.

re

effectivement il me semble me rappeler qu'Eriic avait cela mais je pense sur le site excel download dans lequel j'ai posté des années avant de venir ici principalement

Wait and see ....

Merci pour toutes vos réponses, je tacherais de faire plus attention à ma syntaxe VBA la prochaine fois .

Rechercher des sujets similaires à "etendre formule vba"