Executer une macro sur plusieurs lignes??
Résolu
mr.denver
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
ccm81 Messages postés 10909 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Executer une macro sur plusieurs lignes??
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Écrire plusieurs lignes dans une cellule excel mac - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
8 réponses
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
Edit:
de m^me,pour copier B3 en 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
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").Valuetu 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
Une tentative avec ce que j'ai compris
https://www.cjoint.com/?3DmpCJguFbL
Cdlmnt
https://www.cjoint.com/?3DmpCJguFbL
Cdlmnt
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
ç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
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
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
@ 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
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
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é
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é
@ 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
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
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