Formule récursive en macro

Le challenge se poursuit, et ça avance step by step (forcément ,c'est du VBA)

dans le traitement des données je dois insérer une formule dans une colonne. Pas de pb.

Sauf que le nombre de lignes n'est pas identique à chaque fois. Avec une formule NB.SI() je peux connaitre le nbre de ligne non vide. OK

La difficulté pour moi est ensuite d'utiliser le résultat de cette formule dans la création automatique avec la macro d'une autre formule.

Dans l'exemple qui suit c'est B24 qui est variable d'une feuille à une autre.

Range("B2").Select
    ActiveCell.FormulaR1C1 = "=HOUR(RC[-1])"
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B24"), Type:=xlFillDefault
    Range("B2:B24").Select

J'imagine donc que je ne peux pas écrire directement Selection.AutoFill Destination:=Range("B2:NB.SI(A:A;">0")

Et que cela passerait par une boucle. Reste que cela me ramène à la case départ, ne sachant pas comment utiliser la variable de la boucle comme référence de cellule de fin; je ne crois pas pouvoir remplacer B24 dans l'expression ci-dessus, par la variable décrémentée à chaque passage dans la boucle.

Merci pour votre aide

(sinon le plan B envisagé, est de remplacer B24 par 65536, et ensuite d'effacer toutes les lignes inutiles, mais c'est un peu trivial comme méthode)

Bonjour

Essaye :

Dim Derlig As Integer
Derlig = Range("A65536").End(xlUp).Row 
Range("B2").FormulaR1C1 = "=HOUR(RC[-1])"
Range("B2").AutoFill Destination:=Range("B2:B" & Derlig), Type:=xlFillDefault

Amicalement

Nad

Merci beaucoup.

Top nickel, ça marche.

Bon, là c'est un métier. J'ai encore du chemin à faire.

Bonjour à tous,

tu peux aussi écrire directement

Dim Lg%
    Lg = Range("a65536").End(xlUp).Row
    Range("b2:b" & Lg) = "=HOUR(a2)"

Amicalement

Claude

a resolu3
Rechercher des sujets similaires à "formule recursive macro"