recopier une formule vers le bas sur une col de longueur variable

OldZebra

XLDnaute Nouveau
Bonjour,

Je sollicite votre aide, Je ne trouve pas de réponse claire à ce pb:
J'ai un fichier de tres gde longueur (souvent plus de 40000 lignes)
je souhaite en VBA apliquer une formule dans la 1ere case d'une colonne
(ex: en C additionner A et B) comme dans le fichier joint.

La solution que j'ai trouvée fonctionne,

en VBA, je teste la présence d'une valeur dans la colonne d'a coté, pour vérifier si je suis en bas du fichier.

mais avec 2 inconvénients.
Sur un fichier de tres gde longueur, c'est trèèèèèèèèèèèès lonnnnnnnnnnnng !
(les formules sont beaucoup plus complexes que dans l'exemple !)

Si la colonne de réference contient une case vide, la macro s'arrète accidentellement.

Quelqu'un a-t-il une solution ou idée qui pourrait ètre plus rapide (avec Xldown, je recopie jusqu'à la fin de la feuille,donc au dela de la fin du fichier et cela ne me convient pas.

Merci pour votre aide
 

Pièces jointes

  • TEST.xls
    32 KB · Affichages: 207
  • TEST.xls
    32 KB · Affichages: 218
  • TEST.xls
    32 KB · Affichages: 228
G

Guest

Guest
Re : recopier une formule vers le bas sur une col de longueur variable

Bonsoir OldZebra,

Avec ton exemple:

Code:
Sub Testformula()
    Dim derLigne As Long
    Dim plage As Range
    With Sheets("Feuil1")
        derLigne = .Range("A" & .Rows.Count).End(xlUp).Row
        Set plage = .Range("C1:C" & derLigne)
        plage.FormulaR1C1 = "=RC[-2]+RC[-1]"
    End With
End Sub

P.S. avec ta macro c'eût était mieux.
A+
 

Cousinhub

XLDnaute Barbatruc
Re : recopier une formule vers le bas sur une col de longueur variable

Bonsoir,

Re, décidément, Hasco, pas la forme, moi, aujourd'hui.....

Edit : Hasco, son code est dans Feuil1....

Tant pis, je mets mon code...

Code:
Sub recopie()
Dim DerLig As Long
DerLig = Range("A:B").Find("*", , , , xlByRows, xlPrevious).Row
Range("C1:C" & DerLig).FormulaR1C1 = "=RC[-2]+RC[-1]"
End Sub
 
G

Guest

Guest
Re : recopier une formule vers le bas sur une col de longueur variable

Re,

@Bh²:D, je me suis posé la même question mais comme oldzebra nous disait:
en VBA, je teste la présence d'une valeur dans la colonne d'a coté, pour vérifier si je suis en bas du fichier.

J'ai choisi de faire le test sur une colonne.

@Staple:D, parceque lorsque qu'une solution est pour moi, je vais comme vous au plus synthétique. Mais pour les demandeurs, je préfère segmenter.

Mais dans vba comme dans le cochon tout est bon!

A++ vous deux;)
 

ChTi160

XLDnaute Barbatruc
Re : recopier une formule vers le bas sur une col de longueur variable

Salut vieux zebre
Bonsoir le fil
bonsoir le Forum

On pourrait aussi utiliser cette méthode
Code:
Sub test()
Dim DerLigne As Long
With Worksheets("Feuil1")
DerLigne = .Range("A65536").End(xlUp).Row
           .Range("C1") = "=Sum(A1:B1)"
           .Range("C1").[COLOR=Red]AutoFill [/COLOR].Range("C1:C" & DerLigne), xlFillDefault
End with
End Sub
Bonne fin de Soirée
 
Dernière édition:

OldZebra

XLDnaute Nouveau
Re : recopier une formule vers le bas sur une col de longueur variable

Hasco,BhBh, Staple1600, et Cti160, merci à vous 4

toutes vos solutions fonctionnent, ! je me sent humble, et il va me faloir 2 ou 3 jours pour en digèrer le code,
je suis séduit par l'élégance de vos solutions
qui ne montent pas "des usines à gaz"



Je vais tester et essayer de comprendre tout celà, en fait "usedRange" me donne des idées pour autre chose...
merci encore à tous.

OldZebra
 

Discussions similaires

Réponses
11
Affichages
433

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 979
dernier inscrit
bderradji