Executer une macro sur plusieurs lignes??

Résolu/Fermé
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014 - 11 avril 2014 à 16:18
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 - 16 avril 2014 à 17:04
Bonjour,

je suis débutant enexel et encore null en macros ( c'est m'a première macro)



J'aimerais creér un macro qui exectute une serie de copier /coller pour plusieur s ligne s
au faite j'ai déja creé une macro à l'aide de l'enregistreur de macro sauf que ça fonctionne q'une seul fois, sur une ligne moi je voudrais qu'une fois elle termine le travail sur la ligne 3 =>> elle passe à la ligne 4 et exectute les memes taches ,
ce que je ve faire c'est :

j'ai un tableau avec des donnée qui sont à l'horizontal
je voudrais les copier/coller à la verticale (transposer) pour ce la

1-je selectionne la plage verte => je la colle dans le deuxième tableau à la verticale (transposé)
2- je selectionne la cellule bleu=> je la tire en bas (pour obtenir la meme cellule )dans le deuxième tableau
3-je selectionne la plage jaune=> je la colle dans le deuxième tableau à la verticale(transposé)
4-je selectionne la cellule rouge=> je la tire en bas (pour obtenir la meme cellule )dans le deuxième tableau
5-je selectionne la cellule orange=> je la tire en bas (pour obtenir la meme cellule )dans le deuxième tableau

voila une prise d'ecran de ce que je veux obtenir

https://www.zupimages.net/


voila le script que j'ai obtenu pour mon premier essai de macro:


Sub ESSAI16H()
'
' ESSAI16H Macro
'

'
Range("F3:K3").Select
Selection.Copy
Range("A17").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Range("B17").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("B17:B22"), Type:=xlFillDefault
Range("B17:B22").Select
Range("F1:K1").Select
Selection.Copy
Range("C17").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
Range("B3").Select
Selection.Copy
Range("D17").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("D17:D22"), Type:=xlFillDefault
Range("D17:D22").Select
Range("C3").Select
Selection.Copy
Range("E17").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFill Destination:=Range("E17:E22"), Type:=xlFillDefault
Range("E17:E22").Select
End Sub





merci par avance pour votre aide précieuse




A voir également:

8 réponses

ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
11 avril 2014 à 17:25
Bonjour

Peux tu envoyer une partie de ton fichier au format excel 2003 (fichier/enregistrer sous/Type ..... .xls) sur cjoint.com et joindre le lien obtenu à ton prochain message
N'oublies pas d'y ajouter des explications (pour plus de clarté, nomme les plages que tu veux copier et les plages où tu veux les coller)
Une solution sans macro est peut être possible, est ce que tu préfèrerait?

Cdlmnt
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
11 avril 2014 à 21:29
bonsoir merci pour ta réponse rapide

https://www.cjoint.com/?DDlvzLy9qLM


oui si y a possibilité j'aimerais bien, au fait j'ai mis qu'un extrait des lignes en réalité mon fichier contiens une centaine de lignes.

je te remercie beaucoup pour ton aide précieuse
0
Bonjour

Voila un Exemple de macro pour Transpose plusieur colonne

Sub TestA()
Dlig = Range("A" & Rows.Count).End(xlUp).Row
For C = 1 To 3
Range(Cells(12, C), Cells(Dlig, C)).Copy
Range("H" & C + 3).PasteSpecial xlPasteValues, , , True
Next
Application.CutCopyMode = False
[A1].Select
End Sub

A+

Maurice
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
11 avril 2014 à 21:26
merci pour votre réponse rapide je vais l'essayer
0
re
la meme par rapport a ton fichier

Sub transpose()
Application.ScreenUpdating = False
Dlig = 17
Flig = Range("A" & Rows.Count).End(xlUp).Row
For C = 1 To 5
Range(Cells(Dlig, C), Cells(Flig, C)).Copy
Range("F" & C + 2).PasteSpecial xlPasteValues, , , True
Next
Application.CutCopyMode = False
[A1].Select
End Sub

A+
Maurice
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
11 avril 2014 à 22:47
merci pour ta réponse

est ce que ce script tout seul marche ou il faut le rajouter a mon script??
parceque je l'ai copier coller sur une nouvelle macro et je l'ai executer mais ça ne marche pas
0
Bonjour
en retour ton fichier modifier

http://cjoint.com/?3DmktEW6tRh

A+
Maurice
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
13 avril 2014 à 20:29
merci beaucoup j'ai essayer mais ça marche pas bien
0

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 12/04/2014 à 12:01
Bonjour,

puisque tu débutes dans les macros, bienvenue à bord du Titanic :o), autant passer sur des bases saines

lorsque tu copies ou transposes uniquement des données , tu n'as généralement pas besoin de faire des copier-coller et des boucles fumeuses...
par ex :
tu veux copier les valeurs de C3:K3 en C12:K12
Range("C12:K12") = Range("C3:K3").Value
tu veux transposer les valeurs en A1:A19
Range("A11:A19") = Application.Transpose(Range("C3:K3"))
L'enregistreur de macro enregistre tes faits et gestes: point final

Edit:
de m^me,pour copier B3 en D17:D22
Range("D17") = Range("B3")
Range("D17").AutoFill Destination:=Range("D17:D22")

Et bien sûr, commence toujours tes macros par
Application.screenupdating=false
qui fige le défilement de l'écran (confort) et réduit de 80 fois le temps d'une macro

Michel
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
13 avril 2014 à 20:26
merci beaucoup pour ces informations
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
12 avril 2014 à 15:29
Une tentative avec ce que j'ai compris
https://www.cjoint.com/?3DmpCJguFbL

Cdlmnt
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
13 avril 2014 à 20:25
bonjour merci pour ton essai

ça marche super bien sauf à un détail prés la colonne "code" A16 affiche toujours
tci1-11
tci1-12
tci1-13
tci1-14
tci1-15
tci1-16

normalement une fois q'elle termine de transopser la pemirere ligne elle transeposera la lgne 2
qui est
tci2-11
tci2-12
tci2-13
tci2-14
tci2-15
tci2-16

puis
tci3-11
tci3-12
tci3-13
tci3-14
tci3-15
tci3-16

je sais que normalement je devrais modifier un truc simple pour que ça marche mais je suis tellement null en macro que je ne peut meme pas lire le script

je te remerci beaucoup pour ton aide
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
13 avril 2014 à 21:47
sos plz!!!!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
14 avril 2014 à 08:12
Tu râles après 1 heure d'attente ?
alors que tu as répondu à CCM81 après plus de 24 heures et de plus le dimanche soir pour voir si le boulot est fait question d'être prêt pour frimer lundi matin...

Comme toi, chacun a le droit au repos du WE: les contributeurs, bénévoles je te le rappelles, ne sont pas taillables et corvéables à Merci
tans pis pour toi au boulot
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
14 avril 2014 à 08:55
écoute je ne rale pas j'ai juste commenter mon poste pour le remonter, j'ai passée tous le we à travailler sur se ficher.
maintenant si tu peux m'aider ok sinon je te laisse mon num on se voie je te paie un verre pour ta contribution .merci
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 14/04/2014 à 19:00
@ michel
Salut à toi
effectivement les contributeurs même bénévoles ont droit à leurs week end de temps en temps et peuvent aussi s'occuper, toujours bénévolement, de leurs petits enfants, et ça peut même durer quelques jours!

@mr.denver
Désolé mais je ne dispose pas d'excel sur ma bécane actuelle, donc je ne pourrai que te donner quelques pistes.... si mes souvenirs sont bons
il doit y avoir une variable plagev qui prend la valeur Range(ligneverte) une seule fois avant la boucle for li = 1 to nbli (d'où la même ligne copiée à chaque tour de boucle)
tu dois la redéfinir à l'intérieur de cette boucle avec une instruction du genre
set plagev = Range(.....) où l'adresse doit prendre en compte la variable li
je ne peux pas faire mieux d'ici!

Bonne fin de journée à tous
0
mr.denver Messages postés 31 Date d'inscription lundi 24 mars 2014 Statut Membre Dernière intervention 7 août 2014
15 avril 2014 à 00:44
personne n'as forcer personne à l'aider.barre
est ce que ça vous a déranger ccm81 quand j'ai poster un commentaire pour remonter mon poste??
si, y'avais pas des personnes serviable comme vous ccm81 ce forum n'existerais pas
en ce qui concerne le fichier exel j'ai fini par abandonner l'idée de réaliser une macro, j'ai fait le travail manuellement c'st bon j'ai fini le travail.

je te remercie ainsi que tous les membre qui m'on aidé et Un grand merci à vous pour votre serviabilité
0
ccm81 Messages postés 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 425
Modifié par ccm81 le 16/04/2014 à 17:34
@ mr.denver

Tu reconnaîtra quand même que réactiver un post, au bout d'une heure un dimanche soir, ça peut crisper légèrement. Lorsqu'un membre prend en charge une question, il la mène au bout ou il déclare forfait, mais dans tous les cas, le suivi est assuré!
Regarde un peu le profil de michel_m, tu constatera qu'on ne peut pas le taxer de rechigner à aider son prochain, sans parler de ses compétences!
Je viens juste de reprendre contact avec ma bécane, et je vois que tu as laissé tomber le principe d'une macro, dommage, j'ai quand passé une ou deux heures à essayer de comprendre et de résoudre ton problème, sans compter les quelques minutes lundi, où j'ai essayé de te dépanner (tu avais tout ce qu'il fallait dans le code pour terminer la macro)

Bon, ceci étant, c'est le printemps, il fait super beau, restons zen :-)

PS. Peux tu quand mettre ton problème à résolu (puisqu'il l'est), c'est en haut à droite de ton premier post

Cdlmnt

ccm81
0