Macro avec référence relative dans une boucle

Bonjour le Forum,

Voici mon code qui pose soucis, j'ai essayé de remplacer la cellule A2 par A$2, $A2, RC(-1),... mais rien ni fait. Le but est que le A2 se transforme en A3 dans la ligne suivante, A4 .... ainsi de suite.

Sub stocks()
Dim J As Long, Ligne As Long
Dim F1 As Worksheet, F2 As Worksheet
'inventaire stock
  Range("A2:D" & Rows.Count).ClearContents
  Application.ScreenUpdating = False
  Ligne = 1
  Set F1 = Sheets("mouvements")
  For J = 5 To F1.Range("a" & Rows.Count).End(xlUp).Row

    Range("A" & Ligne + 1).Formula = "=IF('" & F1.Name & "'!$b$" & J & ">=k1,0,IF('" & F1.Name & "'!$R$" & J & "=0,0,'" & F1.Name & "'!$a$" & J & "))"

    Range("B" & Ligne + 1).Formula = "=IF([color=#FFFF00]A2[/color]=0,"""",'" & F1.Name & "'!$b$" & J & ")"

    Range("C" & Ligne + 1).Formula = "=IF([b][b][color=#FFFF00]A2[/color][/b][/b]=0,"""",'" & F1.Name & "'!$h$" & J & ")"

    Range("d" & Ligne + 1).Formula = "=IF([color=#FFFF00]A2[/color]=0,"""",'" & F1.Name & "'!$i$" & J & ")"

    Ligne = Ligne + 1
  Next J
End Sub

Merci

Titouan


Désolé, mais j'arrive pas à surligner. Nouvel essai

Sub stocks()
Dim J As Long, Ligne As Long
Dim F1 As Worksheet, F2 As Worksheet
'inventaire stock
  Range("A2:D" & Rows.Count).ClearContents
  Application.ScreenUpdating = False
  Ligne = 1
  Set F1 = Sheets("mouvements")
  For J = 5 To F1.Range("a" & Rows.Count).End(xlUp).Row

    Range("A" & Ligne + 1).Formula = "=IF('" & F1.Name & "'!$b$" & J & ">=k1,0,IF('" & F1.Name & "'!$R$" & J & "=0,0,'" & F1.Name & "'!$a$" & J & "))"

    Range("B" & Ligne + 1).Formula = "=IF(a2=0,"""",'" & F1.Name & "'!$b$" & J & ")"

    Range("C" & Ligne + 1).Formula = "=IF(A2=0,"""",'" & F1.Name & "'!$h$" & J & ")"

    Range("d" & Ligne + 1).Formula = "=IF(A2=0,"""",'" & F1.Name & "'!$i$" & J & ")"

    Ligne = Ligne + 1
  Next J
End Sub

Bonjour,

Remplace les "a2" par :

R[-1]C

et teste

Bonjour Raja,

Je viens de faire le test et il y a toujours ce satané même message

Erreur d’exécution 1004

Erreur définie par l'application ou par l'objet

Re,

Merci de joindre le fichier avec la macro. On va pouvoir le tester et proposer une solution adaptée.

Petit souci le fichier est trop gros même en ZIP

Comment faire ?

bonsoir,

une proposition de correction pour A2

Sub stocks()
Dim J As Long, Ligne As Long
Dim F1 As Worksheet, F2 As Worksheet
'inventaire stock
 Range("A2:D" & Rows.Count).ClearContents
  Application.ScreenUpdating = False
  Ligne = 1
  Set F1 = Sheets("mouvements")
  For J = 5 To F1.Range("a" & Rows.Count).End(xlUp).Row

    Range("A" & Ligne + 1).Formula = "=IF('" & F1.Name & "'!$b$" & J & ">=k1,0,IF('" & F1.Name & "'!$R$" & J & "=0,0,'" & F1.Name & "'!$a$" & J & "))"

    Range("B" & Ligne + 1).Formula = "=IF(a" & J - 3 & "=0,"""",'" & F1.Name & "'!$b$" & J & ")"

    Range("C" & Ligne + 1).Formula ="=IF(A" & J - 3 & "=0,"""",'" & F1.Name & "'!$h$" & J & ")"

    Range("d" & Ligne + 1).Formula ="=IF(A" & J - 3 & "=0,"""",'" & F1.Name & "'!$i$" & J & ")"

    Ligne = Ligne + 1
  Next J
End Sub

 

J'ai trouvé une version un peu plus ancienne mais qui comporte le même soucis.

Je ne veux pas abuser mais serait-il possible de rajouter une condition à la macro ? Il s'agirait de ne pas prendre en compte le résultat si il est à zéro. C'est-à-dire que le fichier ne contiendrait que les véhicules en stock à une date donnée .

Merci.

Titouan


Désolée mais ce soir, j'ai des problèmes d'envoi. Je recommence .....

17titouan-v010913.xlsm (256.60 Ko)
titouan a écrit :

J'ai trouvé une version un peu plus ancienne mais qui comporte le même soucis.

Je ne veux pas abuser mais serait-il possible de rajouter une condition à la macro ? Il s'agirait de ne pas prendre en compte le résultat si il est à zéro. C'est-à-dire que le fichier ne contiendrait que les véhicules en stock à une date donnée .

Merci.

Titouan


Désolée mais ce soir, j'ai des problèmes d'envoi. Je recommence .....

désolé aussi car sur base de l'information donnée je ne comprends pas la question.

Bonsoir H2so4,

C'est pas bien grave car ta solution fonctionne. Je me débrouille au pire il y aura une nouvelle question.

Merci bcp.

Titouan.

titouan a écrit :

Bonsoir H2so4,

C'est pas bien grave car ta solution fonctionne. Je me débrouille au pire il y aura une nouvelle question.

Merci bcp.

Titouan.

je veux bien aider, mais quel résultat ne peut pas être égal à zéro ?

Bonjour,

La ligne A du code compare la date de vente du véhicule et la date d'inventaire. Si le véhicule a été cédé avant la date, le résultat est Zéro sinon il indique le n° d'ordre ce qui fait que les informations sur le véhicule apparait dans le tableau (immatriculation, date d'achat, prix).

  Range("A" & Ligne + 1).Formula = "=IF('" & F1.Name & "'!$b$" & J & ">=k1,0,IF('" & F1.Name & "'!$R$" & J & "=0,0,'" & F1.Name & "'!$a$" & J & "))"

J'ai trouvé un code qui supprime les lignes à zéro pour avoir sur le tableau excel que les véhicules en stocks au 31/08/2013 par exemple.

Bonne journée.

Titouan

Rechercher des sujets similaires à "macro reference relative boucle"