Excel : étendre une macro

Fermé
Captain_Dunliver Messages postés 4 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 19 février 2013 - 18 févr. 2013 à 18:36
snotlingate Messages postés 17 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 7 décembre 2013 - 19 févr. 2013 à 22:24
Bonjour,

Sur excel, je souhaite créer une macro sur une feuille1 qui me permette de copier plusieurs informations d'une même ligne, de les coller sur une feuille 2 puis d'imprimer la feuille 2: cela me permettrait d'imprimer une page de garde (en feuille 2) en lien avec la saisie effectuer en feuille 1.

Alors j'ai réussi à concevoir la macro pour une ligne (ligne 7) que j'ai intégrer dans un bouton :

Sub impression()
'
' impression Macro
'

'
Range("B7").Select
Selection.Copy
Sheets("Feuille 2").Select
Range("A5").Select
ActiveSheet.Paste
Sheets("Feuille 1").Select
Range("D7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuille 2").Select
Range("A6").Select
ActiveSheet.Paste
Sheets("Feuille 1").Select
Range("F7").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuille 2").Select
Range("A7").Select
ActiveSheet.Paste
Range("C8").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1
End Sub


Mon problème est que j'aimerais étendre cette macro sur toutes les lignes de ma feuille 1 (recopie vers le bas) mais on ne peut pas étendre une macro comme une formule ! La recopie du bouton sur les lignes en dessous permet de copier le bouton avec la macro initiale mais cette dernière est liée à la ligne 7 (alors que je souhaiterais qu'elle copie-colle-imprime la ligne 8, 9, 10, etc).

Y a t-il une solution ?


A voir également:

7 réponses

snotlingate Messages postés 17 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 7 décembre 2013
Modifié par snotlingate le 18/02/2013 à 21:45
J'ai quelque notions de VBA mais pour t'aider il faut que je saisisse correctement ce que tu souhaite réaliser. Tu veux copier une colonne?/une ligne?/une cellule? de ta feuille 1 vers la feuille 2. Au mieux pour l'instant tu peux essayer avec :
- Columns ("C:C").Select ..................où la lettre "C" est ta colonne
-Selection.Copy
-Sheets("Feuille 2").select
-Range("A1).select
-ActiveSheet.Paste

ou sinon tu peux essayer avec la ligne :
- Rows("1:1").Select......................tu peux remplacer "1" par le numéro de ta ligne
-Selection.Copy
-Sheets("Feuille 2").select
-Range("A1).select
-ActiveSheet.Paste

Et pour tester ta macro n'oubli pas "Application.ScreenUpdating = False" au début et "Application.ScreenUpdating = true" à la fin ça annule le rafraîchissement de l'écran puits le remet tu gagneras du temps et pour voir les actions de macro fait F8 ou pas à pas
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
18 févr. 2013 à 22:32
Bonjour,
Ce que tu dis ne colle pas vraiment, en gros
Tu copie B7, D7, F7 (données en ligne)
Tu colle sur A5, A6, A7 (données en colonnes)
Comment tu veux continuer ?
A+
0
captain_dunliver
18 févr. 2013 à 22:47
C'est un exemple, je pourrai très bien copier toute la ligne et coller les données sur une autre ligne, en colonne ou même disperser sur une autre feuille.

Ce que je souhaite faire :
1 - copier la macro en ligne 7 et la coller en ligne 8
2- la macro en ligne 8, une fois activée, copiera les données de la ligne 8 vers la feuille 2 et non de la ligne 7 vers la feuille 2.

C'est pas évident d'être explicite,

Merci d'avance d'essayer de me décoder :)

Bonne soirée
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 18/02/2013 à 23:19
C'est pas évident d'être explicite,
Là tu l'a dis... :-)
Poste un exemple de ce que tu veux faire avec..
En feuille 1 une dizaine de lignes que tu veux copier
En feuille 2 le résultat souhaiter.
Tu peu le déposer sur https://www.cjoint.com/ par exemple
Edit : Et pas des exemple avec des je pourrais bien.. NON de VRAIS exemples

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Captain_Dunliver Messages postés 4 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 19 février 2013 2
19 févr. 2013 à 12:43
Alors je souhaite copier plusieurs cellules d'une ligne(pas toute la ligne) et les coller sur une autre feuille.

Je ne rencontre pas de difficulté à créer une macro mais à la reproduire sur les lignes en dessous de façon à ce qu'elle copie les cellules de la ligne sur laquelle le bouton avec la macro intégrée se trouve.

à la manière d'une formule en fait : la recopie vers le bas d'une formule permet d'adapter la formule en fonction de la cellule dans laquelle elle se trouve.

Exemple : en A1 : =somme(A1:A10)

si je recopie la formule vers le bas, j'aurai alors :
B1 : =somme(B1:B10)
C1 : =somme(C1:C10)
etc...

La question centrale de ce sujet est : peut on recopier une macro à la manière d'une formule (comme ci-dessus) ?

Merci d'avance
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
19 févr. 2013 à 14:38
Re,
Puisque tu veux pas mettre un exemple...
Voir avec les fonctions personnalisées.
A+
0
snotlingate Messages postés 17 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 7 décembre 2013
Modifié par snotlingate le 19/02/2013 à 22:27
Bon d'après ce que j'ai compris tu pourrais faire cela :
tu dimensionnes une variable "a" en nombre, sa donne : dim a as integer
puis : a=0
tu sélectionnes ta cellule de départ par exemple B5 mais tu n'écris pas Range(... mais tu écris cells(a+5:2) : explication a+5 correspond au numéro de la ligne et le 2 à la colonne B
il ne te reste plus qu'à exécuter une boucle en ajoutant 1 à "a" a chaque fois


et si c'est une histoire de gain de temps et non d'automatisation incrémente ! =)
0