Excel : étendre une macro
Captain_Dunliver
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
snotlingate Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
snotlingate Messages postés 17 Date d'inscription Statut Membre Dernière intervention -
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 ?
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:
- Excel : étendre une macro
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
7 réponses
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
- 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
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+
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+
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
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
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 .
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 .
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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 ! =)
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 ! =)