Comment copier une colonne dans x feuilles pour les coller dans une même feuill

A

albert

Guest
Bonjour,

Dans la feuille 2, la colonne G8 est copiée jusqu'à la dernière ligne. Elle est collée avec collage spécial dans la feuille "Rendements", colonne B2 jusqu'à la dernière ligne

Je voudrais renouveler l'opération pour la feuille 3 jusque n…
Pour coller dand la feuille Rendements, de C2 à colonne n…

Je suppose qu'il faut faire des boucles, mais mes essais sont restés infructueux…

Sub SelectRend()

Sheets(2).Range("G8").Activate
Range("G8").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("Rendements").Select
Range("B2").Select
ActiveSheet.Paste Link:=True


End Sub





Quelqu'un peut m'aider à m'en sortir ???

D'avance merci

albert
 

Pièces jointes

  • exercice.zip
    12 KB · Affichages: 30
  • exercice.zip
    12 KB · Affichages: 32
  • exercice.zip
    12 KB · Affichages: 34
V

Vériland

Guest
Bonjour Albert et bonjour le forum,

Tiens j'ai un p'tit creux pendant la pause café... personnellement si j'ai bien compris ta question c'est ainsi que je procéderais dans VBA pour copier les données des autres feuilles :

Sub SelectRend()
'------------------------------------------------------
'selection plage de la feuille 2
'------------------------------------------------------
Sheets(2).Select
Range("G8").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.Copy
Sheets("Rendements").Select
Range("B2").Select
ActiveSheet.Paste Link:=True
'------------------------------------------------------
'selection plage de feuille 3
'------------------------------------------------------
Sheets(3).Select
Range("G8").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("Rendements").Select
Range("C2").Select
ActiveSheet.Paste Link:=True
'------------------------------------------------------
'selection plage de feuille 5
'------------------------------------------------------
Sheets(5).Select
Range("G8").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("Rendements").Select
Range("d2").Select
ActiveSheet.Paste Link:=True
'------------------------------------------------------
'selection plage de feuille 6
'------------------------------------------------------
Sheets(6).Select
Range("G8").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("Rendements").Select
Range("E2").Select
ActiveSheet.Paste Link:=True
End Sub

A mon avis y'a forcement plus simple... j'suis pas un vrai Macrologue... mais ça a l'avantage de fonctionner...

A+ Vériland
 
A

albert

Guest
merci Veriland, ça marche à merveille,
je ne m'attendais pas à avoir une réponse aussi rapide.

.... et si je fais 40, voire 50 colonnes... Tu as une idée pour faire des boucles
(de mon côté, je vais chercher, si je trouve, je fais un post avec le code

sincères salutations
albert
 
V

Vériland

Guest
Re Albert,

Voilà qui va te faire plaisir je pense... la macro suivante que je t'ai créée fait le résultat que je t'ai donné auparavant mais en boucle... je te laisse découvrir son principe, ça a l'avantage d'être plus facile a paramétrer...

Sub SelectionLigneEtColle()
'-----------------------------------
A = 4
B = 2
col = 1
'-----------------------------------
For I = 1 To A
Sheets(B).Select
Range("G8:g22").Select
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Selection.Copy
'-----------------------------------
Worksheets("Rendements").Activate
If col = 1 Then Range("B2").Select
If col = 2 Then Range("C2").Select
If col = 3 Then Range("D2").Select
If col = 4 Then Range("E2").Select
ActiveSheet.Paste Link:=True
Application.CutCopyMode = False
'-----------------------------------
B = B + 1
col = col + 1
'-----------------------------------
Next I
End Sub

Du coup c'est moins long... non !!??!!

Bonne continuation

A+ Vériland
 
A

albert

Guest
merci Veriland
je t'ai envoyé mon travail sur email
il est possible que la mise à jour des cours bogue- il faut indiquer l'adresse du disque dur dans la macro 1 (à chercher avec l'enregistreur de macro)

albert
 
@

@+Thierry

Guest
Bonsoir

Tu te débrouilles bien VBriland ! oups !! Vériland !! lol

Il te manque plus qu'à déclarer tes variables et on va pouvoir partir en vacances avec Ti et STéphane !!

@+Thierry

PS :
====> Dim A As Integer, B As Integer, Col As Integer, I As Integer

NB :
On serait bien sûr tenté d'écrire :
Dim A, B, Col As Integer

Mais John Walkenbach explique bien dans son bouquin que celà équivaut à écrire : (dans l'aide aussi à "Dim" exemple)
Dim A As Variant, B As Variant, Col As Variant, I As Integer

Par contre ceci pour les "pros" qui tapent du VB comme une opératrice de saisie ... :
Dim A%, B%, Col%, I%
= Dim A As Integer, B As Integer, Col As Integer, I As Integer

Dans l'exemple de Vériland les 4 variables sont de type "Integer" (2octets en mémoire), si elles ne sont pas déclarées (ou mal déclarées) elles seraient systématiquement considérées "As Variant" qui est le seul moyen que le visual basic a de gérer "n'importe quoi" (pouvant contenir des données numériques, des chaînes de string ou des dates) 16 à 22 octets (plus la longueur de la chaîne)

D'où l'importance de savoir déclarer les variables dans l'optimisation maximum de tout programme... D'ailleurs je recommande vivement à Albert de copier cette déclaration en Integer juste en dessous du : "Sub SelectionLigneEtColle ()... çà ira toujours plus vite...

Arf avant de partir, comme Ti l'a déjà recommandé....

"Option Explicit" en haut (au top) de chaque module, comme çà vous êtes OBLIGE de déclarer les variables !! (il y a même l'option pour que tous les nouveaux modules contiennent cette "Option d'être explicit" et de ne pas faire bosser l'ordi pour rien....... (et d'éviter des plantages plus ou moins graves)

Bon çà y est c'est un PS qui fait un roman !!

Bonne Nuit, j'ai un programme à finir pour le bureau... et pour demain...
@+Thierry
 
A

albert

Guest
merci Thierry,
en effet lorsque je travaille sur macro je ne pense pas toujours à déclarer les variables...

j'ai rectifié.

J'en profite pour manifester mon admiration sur la capacité de vériland à traiter les boucles.... moi j'ai passé des heures à chercher (en vain)...

Cordialement

albert
 
V

Vériland

Guest
Albert, permet moi de t’adresser mes remerciements sur ce post...je suis très touché à propos de ton admiration sur mon exemple en boucle...

Il faut savoir que cette solution aurait pu être donnée par plusieurs personnes présentes sur ce site...la vérité c’est que la plupart ont même un niveau bien supérieur au mien...il se trouve qu’à ce moment j'étais disponible...

Je suis un utilisateur d’Excel parmi d’autre et j’essaye de transmettre ce que j’ai appris...je ne détiens pas le avoir absolu...Je me suis investi sur ce post car il correspondait à mes compétences...en même temps à chaque fois que je réponds je désire venir en aide à un collègue en difficulté, je tiens à le satisfaire...quelque part je me lance même une défi personnel...j'entends par collègue une personne passionnées par Excel désireux de trouver une aide...

A l'heure où je te parle, j'en connais certains qui auraient peut-être fait un post "allo pass" pour cette solution...c’est pas du tout ma philosophie...surtout à l'intérieur de ce forum...j’espère juste que les évènements survenus dernièrement n’auront pas entachés la motivation de ceux qui s’investissent d’une manière spontanée...

Bon là je vais regarder ton fichier et lui apporter certaines adaptations suivant le niveau de mes compétences...je te tiens au courant

Bonne continuation

A+ Vériland
 
A

Absolut

Guest
J'ai une question: j'exploite un fichier Excel avec un programme en visual basic. Lorsque je copie ma selection et que je la colle je ne recupere plus que les valeurs, je perd les formules....what can I do?
Merci.
 

Discussions similaires

Réponses
2
Affichages
722

Statistiques des forums

Discussions
313 091
Messages
2 095 189
Membres
106 210
dernier inscrit
Céline 161918