Code VBA pour automatiser une manip simple

Résolu/Fermé
jean777 - 16 janv. 2008 à 17:13
@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 - 17 janv. 2008 à 18:23
Bonjour,

D'avance merci de votre précieuse aide.

Difficile de débuter dans ce monde qu'est VBA, mais j'ai une urgence me permettant pas de me plonger à fond la dedans. MEs recherches sur google sans succès.

Voici mon problème:

Mon book excel possède 3 feuilles: une de données historiques sur des cours d'actions (Data), une autre se référant à ces données historiques sur une période et calculant un résultat (Input), enfin une dernière feuille reprenant le résultat de la feuille précédante pour chaque scénario (Result).

Dans la feuille data il y a les cours historiques sur 10 ans, mes caluculs se font sur une période de 3 ans. Donc la feuille Input fait appel aux données de la feuille Data. L'idée est que pour chaque scénario les données copiées de la feuille Data soit décallées d'une ligne et coller dans la feuille Input. C'est une période de 3 ans glissante en d'autres termes. Pour chacun dse scénarios il y aura donc un résultat dans une cellule de la feuille Input, et il faut copier ce résultat dans la feuille Result mais décaler d'une place pour garder l'historique des scénario.

Ai-je été clair?

Il s'agit de faire une boucle séléctionnant une zone de la feuille data décallée d'une ligne à chaque itération, tout comme le résultat qui doit etre coller dans la feuille Result mais décallé d'une ligne

Si qqun peut me donner un coup de main ca serait super, merci infiniment d'avance !!
A voir également:

3 réponses

@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 6
16 janv. 2008 à 21:47
tu peux donner un exemple style
feuille data : données de A1 a D:8
Feuille Input : ces donnees ont leur relations de B:1 a D:9
feuille Result : les relations sont dur C:1 ? est ce ca . les donnees 2 de data sont ou? les relations sur les 2 autres feuilles ou?
merci de renseigner sur ces points
0
oui bien sûr, merci de votre réponse!

Sur la feuille data les données s'étalent sur la zone B3 à P6500: ce sont les historiques complets des cours de bourses, mais pour chaque scénario de mon étude j'ai besoin de 1080 données, il font donc faire glisser à chaque itération de la boucle les données d'une ligne.

Exemple:

Pour le scénario 1: Copier-coller les ligne B3 à P1083 de la feuille Data dans la feuille Inpout à l'emplacement B3 à P1083, le résultat des difféerents calculs va apparaitre sur cette meme feuille Input en cellule A1, il faut copier-coller ce résultat sur la feuille Result à l'emplacement B1.

Scénario 2: Copier-coller les ligne B4 à P1084 (+1) de la feuille Data dans la feuille Inpout à l'emplacement B3 à P1083, le résultat des différents calculs va apparaitre sur cette meme feuille Input en cellule A1, il faut copier-coller ce résultat sur la feuille Result à l'emplacement B2 (+1).

etc pour 1000 scénarios... d'où la nécessité d'une macro !

J'espère que vous m'avez compris. J'ai réussi à coder la manipulation pour le scénario 1 mais je ne sais pas comment coder le décallage d'une ligne à chaque itération.
0
@¿@ Messages postés 48 Date d'inscription samedi 5 janvier 2008 Statut Membre Dernière intervention 23 mai 2009 6
17 janv. 2008 à 18:23
salut

voici ce que je te propose
d abord declarer deux variables a incrementer

dim x, y as integer
on initialise la variable
x= 0
y=1
'on lance la boucle
do while worksheets("Data").range("B" & (3+x)).Value <>""
'on selectionne les cellules a copier
worksheets("Data").range("B" & (3+x) & ":P" & (1083 + x)).copy
worksheets("Input").range("B3").paste
worksheets("Input").range("A1").copy
worksheets("Result").range("B" & y).paste
y=y+1
x=x+1
loop

moi je ferai un truc comme ca: comme j ai ecris de memoire et en texte, j ai pas testé, mais ce devrait etre correct
sinon teste une macro sur le copy/paste sur une selection multiple mais garde la syntaxe des X et Y

@+
0