Code VBA pour automatiser une manip simple
Résolu
jean777
-
@¿@ Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
@¿@ Messages postés 48 Date d'inscription Statut Membre Dernière intervention -
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 !!
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:
- Code VBA pour automatiser une manip simple
- Code ascii - Guide
- Code puk bloqué - Guide
- Iphone 14 simple - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
3 réponses
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
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
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.
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.
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
@+
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
@+