VBA : additionner des Range

  • Initiateur de la discussion Michael
  • Date de début
M

Michael

Guest
Rebonjour :)

Je voudrais savoir comment aditionner des lignes de données entieres envba...

Ex: aditionner range("A1:D1") et range("A2:D2") et afficher les résultats en A3 à D3.

Merci bcp!

MichaeL
 
G

Gérard DEZAMIS

Guest
Bonjour Michel
Ce qui revient à faire la somme de A1:A2 et ensuite à "tirer" cette formule jusque D3
Ensuite copier coller spécial valeur de façon à faire disparaitre la formule.
A placer sur un bouton :

Sub add()
Application.ScreenUpdating = False
Range("A3").Select
ActiveCell.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
Range("A3").Select
Selection.AutoFill Destination:=Range("A3:D3")
Range("A3:D3").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Range("A1").Select
End Sub

A +
GD
 
@

@+Thierry

Guest
Bonsoir Gérard, Michael, Le Forum

Une autre approche 100% VBA sans passer par Formule :

Sub AdditionVba()
Dim Cell As Range
Dim MyVal As Double

For Each Cell In Sheets("Feuil1").Range("A1:D1")
MyVal = MyVal + Cell + Cell.Offset(1, 0)
Cell.Offset(2, 0) = MyVal
MyVal = 0
Next
End Sub



Sinon on peut aussi faire par Formules écrites par VBA comme ceci :

Sub FormulaVba()
Dim i As Byte

For i = 1 To 4 '(Colonne de A à D)
Cells(3, i).Formula = "=SUM(" & Cells(1, i).Address & ":" & Cells(2, i).Address & ")"
Next
End Sub


Et pour mon ami Gérard, regarde ta macro sans Select :

Sub add()
With Range("A3")
.FormulaR1C1 = "=SUM(R[-2]C:R[-1]C)"
.AutoFill Destination:=Range("A3:D3")
End With

With Range("A3:D3")
.Copy
.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
End With

Range("A1").Select 'sauf celui là !!
End Sub

Du coup il n'a plus vraiment besoin de Application.ScreenUpdating = False...

Si tu vois les "vieux" fils de discussion, tu verras qu'ils y en a pas mal à qui j'ai fait la "guerre" aux Selects... Mais je crois qu'ils sont contents depuis !

Bonne Soirée
@+Thierry
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal