Remplir des cellules à l'aide d'une macro

kioups

XLDnaute Occasionnel
Bonjour,

je dois remplir 19 000 cellules à l'aide d'une fonction personnalisée faisant appel à des références relatives et des références absolues et j'ai quelques soucis dans l'écriture de ma macro.

Voici un exemple réduit dans le fichier.

J'ai créé une fonction Test qui calcule le produit de deux nombres et en ajoute un troisième.

Je veux créer une macro qui me permettra de remplir les cases jaunes. Chaque case jaune doit contenir une fonction Test où le premier argument est le nombre situé dans la même ligne et dans la colonne rouge et les deux suivants sont les nombres situés dans la même ligne et respectivement deux et une colonne avant la case jaune.

En E2, je veux calculer 2 * 3 + 1, en H6, je veux calculer 9 * 10 + 5, etc.

J'ai tenté des trucs avec Cells(row, column).FormulaR1C1 mais je bloque avec les références relatives et absolues.

Merci d'avance !

Kioups
 

Pièces jointes

  • Test.xls
    35 KB · Affichages: 97
  • Test.xls
    35 KB · Affichages: 98
  • Test.xls
    35 KB · Affichages: 93

tototiti2008

XLDnaute Barbatruc
Re : Remplir des cellules à l'aide d'une macro

Re,
Bonjour joss56,

pourquoi s'excuser ? en plus ta solution est différente de la mienne, elle écrit le résultat plutôt que la formule, ce qui correspond peut-être mieux à la demande de kioups...

Edit : Bonjour Efgé ;)
@joss
Plus on est de fous, plus on rit, pas d'excuse quand on propose une solution, non mais... :D
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Remplir des cellules à l'aide d'une macro

Bonjour à tous,
Une proposition, mais je ne me sert pas de la fonction.
Code:
[COLOR=blue]Private Sub[/COLOR] CommandButton1_Click()
[COLOR=blue]For Each[/COLOR] c [COLOR=blue]In[/COLOR] Range("E2:H" & Range("A" & Application.Rows.Count).End(xlUp).Row)
    [COLOR=blue]If[/COLOR] c.Interior.ColorIndex = 6 [COLOR=blue]Then[/COLOR] c.Value = Cells(c.Row, 1).Value * c.Offset(0, -2).Value + c.Offset(0, -1).Value
[COLOR=blue]Next[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Pièces jointes

  • kioups(2).xls
    39 KB · Affichages: 70

Efgé

XLDnaute Barbatruc
Re : Remplir des cellules à l'aide d'une macro

Re
Etant parti sur ma lancée :p,
Une proposition toujours sans la formule, mais sans les couleurs (Je pense que les couleurs ne sont là que pour aider à la compréhension...)
Code:
[COLOR=blue]Private Sub[/COLOR] CommandButton1_Click()
Drlgn = Range("A" & Application.Rows.Count).End(xlUp).Row
[COLOR=blue]For Each[/COLOR] c [COLOR=blue]In[/COLOR] Application.Union(Range("E2:E" & Drlgn), Range("H2:H" & Drlgn))
    [COLOR=blue]If[/COLOR] c.Offset(0, -1) <> "" [COLOR=blue]Then[/COLOR] c.Value = Cells(c.Row, 1).Value * c.Offset(0, -2).Value + c.Offset(0, -1).Value
[COLOR=blue]Next[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Pièces jointes

  • kioups(3).xls
    41.5 KB · Affichages: 73

kioups

XLDnaute Occasionnel
Re : Remplir des cellules à l'aide d'une macro

tototiti2008 : c'est tout à fait ce que je souhaitais ! Merci beaucoup !

joss56 : ça semble coller, mais je ne sais pas comment accéder à la macro et donc comment l'adapter à mon document de départ.

Efgé : ça semble également aller, avec une variante de tototiti, mais l'ennui, c'est que ma formule, dans mon document de départ, est beaucoup plus longue (7 paramètres), je risque de m'embrouiller pas mal ! Effectivement, les couleurs étaient là juste pour l'exemple.

Je vais donc me baser sur le truc de tototiti. C'était surtout l'écriture des références relatives et absolues qui me gênait.
(Cellule.FormulaR1C1 = "=test(RC1,RC[-2],RC[-1]))
Donc, si j'ai bien pigé, entre crochets, références relatives, sans crochets, référence absolue !

Merci à vous trois !
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso