Faire une addition de plage

Bonjour, est-il possible de simplifié cette macro par une plage ? afin de ne pas a avoir a réécrire la ligne plusieurs fois et en grosse quantité

Merci bien...

Sub addition()

range("A1").Value = range("A1").Value + Sheets(2).range("B1").Value
range("A2").Value = range("A2").Value + Sheets(2).range("B2").Value
range("A3").Value = range("A3").Value + Sheets(2).range("B3").Value
range("A4").Value = range("A4").Value + Sheets(2).range("B4").Value
range("A5").Value = range("A5").Value + Sheets(2).range("B5").Value
range("A6").Value = range("A6").Value + Sheets(2).range("B6").Value

End Sub

Bonjour,

Voici une possibilité parmi d'autres :

sub test()

tA = activesheet.range("A1:A6").value
tB = sheets(2).range("B1:B6").value

for i = 1 to 6
    tA(i, 1) = tA(i, 1) + tB(i, 1)
next i

activesheet.range("A1:A6").value = tA

end sub

Cdlt,

Merci de votre réponse, cela a bien fonctionner.

Bonne journée

Cela indique une incompatibilité de type. Qu'y a-t-il en F46:F56 (de la feuille active !!! attention) et en F3:F13 de la feuille n°4 ?

D'ailleurs, ici, il y a 11 lignes alors je vais modifier le code pour le rendre plus générique :

Sub test()

tA = ActiveSheet.Range("F46:F56").Value
tB = Sheets(4).Range("F3:F13").Value
lim = application.min(ubound(tA), ubound(tB))

For i = 1 To lim
    tA(i, 1) = tA(i, 1) + tB(i, 1)
Next i

ActiveSheet.Range("F46:F56").Value = tA

End Sub

Il faut donc que vous regardiez les types des valeurs additionnées (si il y a du texte, forcément, ça n'ira pas) et que vous vous assuriez que la feuille active lors de l'exécution est bien celle imaginée. Sinon, il vaut mieux la préciser dans le code.

Edit : Très bien, je répondais à votre message avant édition .

Très bonne journée à vous aussi !

J'ai transformé le code a mon utilisation et je l'ai mis dans une feuille différente(feuille macro).

Cela de marche (erreur 424) pas pouvez vous m'aider ?

Sub test()

tA = Sheets(1).Range("F46:F56").Value
tB = Active.Range("F3:F13").Value

For i = 1 To 11
    tA(i, 1) = tA(i, 1) + tB(i, 1)
Next i

Sheets(1).Range("F46:F56").Value = tA

End Sub

Pardon je n'avais pas vu votre réponse juste avant ...

C'est la ligne :

tB = Active.Range("F3:F13").Value

qui bloque. Active ne correspond à rien.

Si vous savez que ces plages seront toujours sur les mêmes feuilles, il faut les définir par leur nom si possible (ou éventuellement leur index).

Sinon, il faut mettre :

tB = Activesheet.Range("F3:F13").Value

Bon je pense je suis une bille puisque avec ce code:

Sub test()

tA = Sheets(1).Range("F46:F56").Value
tB = ActiveSheet.Range("F3:F13").Value

For i = 1 To 11
    tA(i, 1) = tA(i, 1) + tB(i, 1)
Next i

Sheets(1).Range("F46:F56").Value = tA

End Sub

On me met maintenant erreur 13.
J'ai faits le même code avec celui que vous m'avaient dit précédemment et même histoire... en espérant que cela puisse se résoudre.

ps: je n'est pas compris cette histoire de nommer les plages ...

Relisez le commentaire où je vous réponds à ce sujet alors (vous aviez finalement trouvé seul).

Non, je me suis mal exprimé, je parlais de nommer les feuilles dans le code ou plus précisément de les désigner. Parce que si vous avez sur la feuille 2 par exemple des nombres en F3:F13 mais que sur la feuille 3 il y a du texte, alors si vous exécutez le code avec la feuille 3 étant active , incompatibilité de type.

Mais si vous décriviez ce que vous cherchez à faire vraiment et éventuellement joigniez un fichier, ce serait plus simple à résoudre

Alors la je comprend vraiment pas, sans toucher au code cela marche tout seul.

Donc le problème est résolu je vous remercie avec toute ma gratitude.

Je vous en prie !

Le code est fonctionnel. Le problème vient de la ligne Activesheet. Parfois vous exécutez le code à partir d'une feuille, ça marche. Vous vous rendez sur une autre feuille pour contrôler le résultat. Et là, la feuille active n'est plus la même. Cette nouvelle feuille active contient du texte dans la zone renseignée (F3:F13). Du coup, ça ne marche plus.

C'est pour ça qu'il faut désigner la feuille :

tA = Sheets("nomdelafeuille1").Range("F46:F56").Value
tB = sheets("nomdelautrefeuille").Range("F3:F13").Value

Cdlt,

Rechercher des sujets similaires à "addition plage"