Incrémenter une formule qui se limite à mon tableau

Bonjour à tous,

J'ai souvent des tableaux avec 2 colonnes de valeurs à comparé et de ce fait j'utilise un fonction SI pour obtenir les écarts en négatif ou positif en fonction.

Comme je débute sur les macros, j'ai effectivement enregistrer une macro qui me permettra de créer ma formule si pour la comparaison des 2 colonnes mais mon souci c'est que mes tableaux ne sont jamais de la même taille hors ma macros incrémente dans tous les cas toujours 12 cases plus bas.

Ma question c'est comment je modifie le code pour pouvoir incrémenter à la limite du tableau et ce peut importe sa longueur?

Merci d'avance pour votre aide

11macros-test.xlsm (19.56 Ko)
YoYo Sum a écrit :

Comme je débute sur les macros,

incrémente dans tous les cas toujours 12 cases plus bas.

Le code est curieux !

Il faut modifier ceci :

Selection.AutoFill Destination:=ActiveCell.Range("A1:A12")

essaie ceci

Selection.AutoFill Destination:=ActiveCell.Range("A1:A" & ActiveCell.Range("A1").End(xldown).Row)

Hello Steelson,

Je vous remercie de votre aide mais malheureusement cela n'a pas l'air de fonctionner.

Cette fois il n’exécute même pas la macro, il me met erreur d’exécution '1004'.

Pourriez-vous voir de nouveau SVP?

7macros-test.xlsm (19.52 Ko)

Ce que j'ai proposé

Range("A1").End(xldown).Row

est un façon de rendre variable ton "12"

Cela signifie de partir de la cellule A1, descendre jusqu'en bas des cellules renseignées, et en tirer le n° de la dernier ligne (Row)

Maintenant, il est vrai que ta macro est un peu alambiquée ... je vais essayer de comprendre et te donner une solution.

En tous cas, BRAVO, c'est un bon début, continue, persévère, j'apprécie les gens qui veulent apprendre et être autonomes.


Voici une correction :

Sub Formule_SI()
'
' Formule_SI Macro
'

    Range("D4").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]-RC[-2]>=0,RC[-1]-RC[-2],#N/A)"
    Selection.AutoFill Destination:=Range("D4:D" & Range("A4").End(xlDown).Row)

    Range("E4").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-2]-RC[-3]<0,RC[-2]-RC[-3],#N/A)"
    Selection.AutoFill Destination:=Range("E4:E" & Range("A4").End(xlDown).Row)

End Sub

Mon erreur, parce que j'en fais aussi !, était de partir de A1 et non de A4.

Et bonjour à l'Île Maurice, j'ai un très très bon ami là-bas !

Parfait! La bonne nouvelle c'est que ça fonctionne sur le premier tableau donc je constate que c'est une macro absolue.

Comme je souhaiterai ne pas avoir à créer 2 macros différente, serait-il possible d'obtenir la même macro mais sous forme relative? C'est à dire que je souhaiterai avoir un point de départ qui n'est pas toujours la colonne D ou la E.

Est-ce faisable?

D'avance merci

Super alors! Vous avez donc déjà votre destination pour les vacances!!!

Comme ceci :

Sub Formule_SI()
'
' Formule_SI Macro
'
param = "D" ' colonne

    Range(param & "4").Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]-RC[-2]>=0,RC[-1]-RC[-2],#N/A)"
    Selection.AutoFill Destination:=Range(param & "4:" & param & Range("A4").End(xlDown).Row)

    Range(param & "4").Offset(0, 1).Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-2]-RC[-3]<0,RC[-2]-RC[-3],#N/A)"
    Selection.AutoFill Destination:=Range(param & "4:" & param & Range("A4").End(xlDown).Row).Offset(0, 1)

End Sub
YoYo Sum a écrit :

Super alors! Vous avez donc déjà votre destination pour les vacances!!!

Je suis déjà sur "mon" île !

bonjour

peux être plus claire

Sub Test()
Range("D4").FormulaLocal = "=SI(C4-B4>=0;C4-B4;#N/A)"
Range("D4").AutoFill Destination:=Range("D4:D" & Range("A" & Rows.Count).End(xlUp).Row)
End Sub

A+

Maurice

yOyO sUM

Petite correction pour ma part :

Sub Formule_SI()
'
' Formule_SI Macro
'
    maformule ("A") ' peut donc être répété sur autre tableau

End Sub
Sub maformule(param As String)

    Range(param & "4").Offset(0, 3).Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-1]-RC[-2]>=0,RC[-1]-RC[-2],#N/A)"
    Selection.AutoFill Destination:=Range(param & "4:" & param & Range("A4").End(xlDown).Row).Offset(0, 3)

    Range(param & "4").Offset(0, 4).Select
    ActiveCell.FormulaR1C1 = "=IF(RC[-2]-RC[-3]<0,RC[-2]-RC[-3],#N/A)"
    Selection.AutoFill Destination:=Range(param & "4:" & param & Range("A4").End(xlDown).Row).Offset(0, 4)

End Sub
 

Bonjour, Bonjour,

J'ai testé les macros et cela n'a pas fonctionné mais je connais maintenant le souci:

Quand on utilise le code suivant:

Selection.AutoFill Destination:=Range(param & "4:" & param & Range("A4").End(xlDown).Row).Offset(0, 3)

Eh bien c'est équivalent à un CTRL + SHIFT + Flèche directionnel bas hors sur un tableau simple cela ne marche pas alors j'ai du utiliser un tableau avec Mise en forme automatique pour que cela fonctionne et la macros que j'ai utiliser et la suivante et cela fonctionne très bien:

Sub Macro3()
'
' Macro3 Macro
'

'
    ActiveCell.Offset(16, -3).Range("A1").Select
    Selection.Copy
    ActiveCell.Offset(-16, 3).Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.FormulaR1C1 = "=IF(RC[-1]-RC[-2]>=0,RC[-1]-RC[-2],#N/A)"
    ActiveCell.Offset(16, -2).Range("A1").Select
    Application.CutCopyMode = False
    Selection.Copy
    ActiveCell.Offset(-16, 3).Range("A1").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.FormulaR1C1 = "=IF(RC[-2]-RC[-3]<0,RC[-2]-RC[-3],#N/A)"
    ActiveCell.Offset(13, 0).Range("A1").Select
End Sub

Mais je vous remercie beaucoup pour votre aide et espère être un jour des pros en MACROS et VBA comme vous

Rechercher des sujets similaires à "incrementer formule qui limite mon tableau"