Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Aide VBA

4 réponses
Avatar
MOUHOUBI
Salut,
ayant oublié mes notions de VBA depuis pas mal d'années je sollicite
aimablement votre aide.

J'ai 1 tableau excel avec
1 colonne de chiffres de A1 à A10
1 plage de chiffres de C1 à E5

Je souhaite automatiser une tâche simple qui consiste à faire ça :
- Multiplier la plage C1 à E5 par A1
- Calculer la moyenne de la plage C1 à E5
- Mettre cette moyenne en B1
- Remettre la plage C1 à E5 comme elle était au début
- Recommencer avec cette fois A2

et recommencer ce processus jusqu'à A10...
A la fin je dois me retouver avec les moyennes successives en B1: B10
et ma plage C1 à E5 comme elle était au tout début.

Merci de votre aide.


--
Mon Blog : http://k.mouhoubi.free.fr/monblog/
Mon Twitt : http://twitter.com/kmouhoubi
Facebook : https://www.facebook.com/kmouhoubi
___________________________
/ )| MOUHOUBI Kamel |( \
/ / | kmouhoubi@hotmail.com | \ \
_( (_ | PGP Key ID 0xBAC2CA5B | _) )_
(((\ \)|_/ )___________________( \_|(/ /)))
(\\\\ \_/ / \ \_/ ////)
\ / \ /
\ _/ \_ /
/ / \ \

4 réponses

Avatar
MichD
Bonjour,

Une possibilité en supposant qu'il n'y a aucune cellule de la plage
A1:A10 et C1:C5 n'est vide.

'---------------------------------------
Sub test()

Dim R As Variant, S As Variant
Dim T(1 To 10), K(1 To 10)
Dim a As Integer, b As Integer

'Nom de l'onglet de la feuille à adapter au besoin
With Worksheetss("Feuil1") R = .Range("A1:A10")
S = .Range("C1:C5")
End With

For a = 1 To UBound(R, 1)
For b = 1 To UBound(S, 1)
T(a) = T(a) + (R(a, 1) * S(b, 1))
Next
K(a) = T(a)
Erase T
Next
Application.ScreenUpdating = False
Range("B1:B10") = Application.Transpose(K)
Application.ScreenUpdating = True

End Sub
'---------------------------------------

MichD
---------------------------------------------------------------
Avatar
MOUHOUBI
Le Wed, 10 Apr 2013 20:23:47 -0400, "MichD" a
écrit :

Une possibilité en supposant qu'il n'y a aucune cellule de la plage
A1:A10 et C1:C5 n'est vide.



Merci de la réponse mais je comprends pas ce que tu veux dire.



--
Mon Blog : http://k.mouhoubi.free.fr/monblog/
Mon Twitt : http://twitter.com/kmouhoubi
Facebook : https://www.facebook.com/kmouhoubi
___________________________
/ )| MOUHOUBI Kamel |(
/ / | |
_( (_ | PGP Key ID 0xBAC2CA5B | _) )_
((( )|_/ )___________________( _|(/ /)))
(\ _/ / _/ ////)
/ /
_/ _ /
/ /
Avatar
Jacquouille
Bonjour
Peux-tu préciser à la noble assemblée l'étendue de la plage:
C1:E5 comme tu l'écris ou C1:C5 comme l'a compris ton répondeur. lequel
mentionnait, AMHA, qu' aucune cellule des plages A1:A10 et C1:C5 ne pouvait
être vide.

Pour ce qui est de VBA, c'est comme le vélo, cela ne s'oublie pas.
Tu peux te faire ta macro via l'enregistreur, puis adapter.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MOUHOUBI" a écrit dans le message de groupe de discussion :


Salut,
ayant oublié mes notions de VBA depuis pas mal d'années je sollicite
aimablement votre aide.

J'ai 1 tableau excel avec
1 colonne de chiffres de A1 à A10
1 plage de chiffres de C1 à E5

Je souhaite automatiser une tâche simple qui consiste à faire ça :
- Multiplier la plage C1 à E5 par A1
- Calculer la moyenne de la plage C1 à E5
- Mettre cette moyenne en B1
- Remettre la plage C1 à E5 comme elle était au début
- Recommencer avec cette fois A2

et recommencer ce processus jusqu'à A10...
A la fin je dois me retouver avec les moyennes successives en B1: B10
et ma plage C1 à E5 comme elle était au tout début.

Merci de votre aide.


--
Mon Blog : http://k.mouhoubi.free.fr/monblog/
Mon Twitt : http://twitter.com/kmouhoubi
Facebook : https://www.facebook.com/kmouhoubi
___________________________
/ )| MOUHOUBI Kamel |(
/ / | |
_( (_ | PGP Key ID 0xBAC2CA5B | _) )_
((( )|_/ )___________________( _|(/ /)))
(\ _/ / _/ ////)
/ /
_/ _ /
/ /
Avatar
MichD
L'étendue de la plage a été revisée :

Dans les plages A1:A10 et C1:E5, il est supposé
qu'il n'y a pas de cellules vides.

'--------------------------------
Sub test()

Dim R As Variant, S As Variant
Dim T(1 To 10), K(1 To 10)
Dim a As Integer, b As Integer

'Nom de l'onglet de la feuille à adapter au besoin
With Worksheets("Feuil1")
R = .Range("A1:A10")
S = .Range("C1:E5")
End With

For a = 1 To UBound(R, 1)
For b = 1 To UBound(S, 1)
For C = 1 To UBound(S, 2)
T(a) = T(a) + (R(a, 1) * S(b, C))
Next
Next
K(a) = T(a)
Erase T
Next
Application.ScreenUpdating = False
Range("B1:B10") = Application.Transpose(K)
Application.ScreenUpdating = True

End Sub
'---------------------------------------




MichD
---------------------------------------------------------------