OVH Cloud OVH Cloud

[Aide] crétion (boucle?) macro

6 réponses
Avatar
typo
Bonjour,

Quelqu'un parmi vous aurait-il la gentillesse de m'aider à ajouter une
boucle (je crois que cela s'appelle comme çà?) aux 2 macros suivantes?

1ere macro : J'aimerai pouvoir avoir une macro qui puisse copier la cellule
A1 puis se mettre en attente en B1.
Puis lorsque la macro doit est relancée, elle devrait faire le même travail
mais en descendant d'une ligne. C'est à dire: dans l'exemple: copier la
cellule A2 puis se mettre en attente en B2,...

Après essai ds Excel voici le mauvais résultat que j'obtiens:
Sub 1()
Range("A1").Select
Selection.Copy
Range("B1").Select
End Sub



2nde macro : Coller (ce qu'il a en mémoire) là ou la cellule est active (par
exemple ex:C1). Puis descendre d'une ligne (C2) et aller sur la gauche (B2).
nb: là je ne pense pas qu'il soit nécessaire d'inclure la cellule C1 de mon
exemple?

Après essai ds Excel voici le mauvais résultat que j'obtiens:
Sub 2()
ActiveSheet.Paste
Range("B2").Select
End Sub

Mille mercis d'avance,
Typo

6 réponses

Avatar
mateos francois
bonjour typo
où veux tu copier le contenu de ta cellule A1 ?
Avatar
typo
Bonjour francois
où veux tu copier le contenu de ta cellule A1 ?
En B2. Merci ;)


Avatar
anomymousA
Bonjour, typo

Ce que tu demandes peut être décrit de manière assez générale par comment
puis-je copier quelque chose qui est dans une cellule vers une autre cellule
et/ou comment puis-je me déplacer vers une cellule ?

Dans le principe, l'instruction pour copier s'appelle "copy". Il existe de
multilples façons de copier ( pour t'en convaincre fais manuellement la
séquence Excel "Copier/Coller/Collage Spécial").
Dans l'exemple de syntaxe suivant, on copiera tout
(valeurs/formules/formats...) d'une cellule vers l'autre.
SI tu écris Range("A1").copy Range("A2"), tu demandes à Excel de copier dans
la même feuille dans la cellule A2 ce que contient la cellule A1 ainsi que
son contenant (formats essentiellement).tu n'as pas besoin de te déplacer
vers A1 puis de selectionner A1 pour copier puis de se déplacer vers A2 , de
selectionner A2 , puis de coller. L'instruction copy fait la copie sans
déplacemnt physique si j'ose dire.

Si tu veux te déplacer quelque part sur une feuille , il faut dire à Excel
où tu veux aller et ce que tu veux faire.
Pour celà , utilises p.e Range("C1").activate. En écrivant cette
instruction, tu dis à Excel de se déplacer vers la cellule C1 et d'y rester.

A partir des instructions précédentes, tu peux déjà faire des choses. Mais
tu en apprendras bien plus si tu utilises l'enregistreur automatique de
Macros qui traduit grosso modo en langage VBA ce que tu fais manuellement
avec ta souris et ton clavier.

Bon courage et à + si besoin.


Bonjour,

Quelqu'un parmi vous aurait-il la gentillesse de m'aider à ajouter une
boucle (je crois que cela s'appelle comme çà?) aux 2 macros suivantes?

1ere macro : J'aimerai pouvoir avoir une macro qui puisse copier la cellule
A1 puis se mettre en attente en B1.
Puis lorsque la macro doit est relancée, elle devrait faire le même travail
mais en descendant d'une ligne. C'est à dire: dans l'exemple: copier la
cellule A2 puis se mettre en attente en B2,...

Après essai ds Excel voici le mauvais résultat que j'obtiens:
Sub 1()
Range("A1").Select
Selection.Copy
Range("B1").Select
End Sub



2nde macro : Coller (ce qu'il a en mémoire) là ou la cellule est active (par
exemple ex:C1). Puis descendre d'une ligne (C2) et aller sur la gauche (B2).
nb: là je ne pense pas qu'il soit nécessaire d'inclure la cellule C1 de mon
exemple?

Après essai ds Excel voici le mauvais résultat que j'obtiens:
Sub 2()
ActiveSheet.Paste
Range("B2").Select
End Sub

Mille mercis d'avance,
Typo





Avatar
typo
Cher "anomymousA",

Merci pour ces explications. Toutefois :

(...)tu n'as pas besoin de te déplacer
vers A1 puis de selectionner A1 pour copier puis de se déplacer vers A2 ,
de

selectionner A2 , puis de coller. L'instruction copy fait la copie sans
déplacemnt physique si j'ose dire.


Oui je m'en suis rendu compte mais je désire explicitement ce que j'ai écris
car j'utilise excel en parallele avec un programme automate ("macro magic").


Si tu veux te déplacer quelque part sur une feuille , il faut dire à Excel
où tu veux aller et ce que tu veux faire.
Pour celà , utilises p.e Range("C1").activate. En écrivant cette
instruction, tu dis à Excel de se déplacer vers la cellule C1 et d'y
rester.


A partir des instructions précédentes, tu peux déjà faire des choses. Mais
tu en apprendras bien plus si tu utilises l'enregistreur automatique de
Macros qui traduit grosso modo en langage VBA ce que tu fais manuellement
avec ta souris et ton clavier.


Oui merci. C'est le résultat que j'ai montré mais comme j'ai une très longue
colonne en A (A1, A2 etc...) je souhaiterai une macro en automatique si
possible.

Bon courage et à + si besoin.
Merci.


Par déduction , j'ai presque trouvé ma seconde macro gràce à la FAQ mais
elle va a droite au lieu de gauche(!) :

Déplace la cellule active d'une ligne vers le bas et deux colonnes vers la
droite
Sub DeplaceCellActive()
ActiveSheet.Paste
Dim LigVar, ColVar
LigVar = 1
ColVar = 1
Selection.Offset(LigVar, ColVar).Select
End Sub


Merci d'avance,
typo

Avatar
typo
Eureka pour ma deuxième macro ;-) :

Par déduction , j'ai presque trouvé ma seconde macro gràce à la FAQ mais
elle va a droite au lieu de gauche(!) :


Là elle va bien à gauche en mettant -1 au lieu de 1 pourla variable colonne.
;-)

Déplace la cellule active d'une ligne vers le bas et deux colonnes vers la
gauche

Sub DeplaceCellActive()
ActiveSheet.Paste
Dim LigVar, ColVar
LigVar = 1
ColVar = -1
Selection.Offset(LigVar, ColVar).Select
End Sub

Avatar
typo
Saltu à tous de nouveau,
J'ai trouvé une façon plus simple pour ma premiere macro (ma demande en fait
était en fait trop complexe pour mes besoins! Et le fait de trouver une
solution à la deuxième macro m'a aidé pour la première). :-)

Mille mercis à ceux qui m'ont lu et aidé. ;-)
typo