Microsoft 365 Répétition macro sur nombre de lignes X

thoch63

XLDnaute Nouveau
Bonjour à tous ;

J'aurai besoin de votre expertise pour réaliser une macro Excel

Je dois répéter ma macro sur 350 lignes, savez vous quelle code mettre pour que ma macro en automatique aille chercher ligne par ligne ?

Voici mon code macro:




Sub Macrotesttemplate()
'
' Macrotesttemplate Macro
'

'
Range("A2").Select
Selection.Copy
Sheets("TEMPLATE 1").Select
ActiveWindow.SmallScroll Down:=9
Range("B22").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
Range("B23").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("C2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
ActiveWindow.SmallScroll Down:=-21
Range("B3").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("D2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
Range("B8").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("E2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
Range("B11").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("F2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
Range("B10").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
Range("G2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H2").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1").Select
Range("B7").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Sheets("TEMPLATE 1").Select
Application.CutCopyMode = False
Sheets("TEMPLATE 1").Copy After:=Sheets(2)
Sheets("Sheet1").Select
Range("A3").Select
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
ActiveWindow.SmallScroll Down:=9
Range("B22").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B23").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-21
Sheets("Sheet1").Select
Range("C3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B3").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("D3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B8").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("E3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B11").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("F3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B10").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("G3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B4").Select
ActiveSheet.Paste
Sheets("Sheet1").Select
Range("H3").Select
Application.CutCopyMode = False
Selection.Copy
Sheets("TEMPLATE 1 (2)").Select
Range("B7").Select
ActiveSheet.Paste
End Sub




Merci à tous ! :)
 
Solution
Re,
@Phil69970 ;)
@thoch63 : Je partage l'avis de Phil69970. En effet, le code ci-dessous plantera au-delà de 255 onglets.
VB:
Option Explicit

Sub Macrotesttemplate()
    Dim i As Long, dl As Long, Sh As Worksheet
    Application.DisplayAlerts = False
    'on supprime toutes les feuilles "Template.."
    For Each Sh In Worksheets
        If Sh.Name Like "Template*" Then
            Sheets(Sh.Name).Delete
        End If
    Next

    'on traite les lignes
    With Sheets("INFOS BRUTS")
        dl = .Range("A1").CurrentRegion.End(xlDown).Row

        For i = 2 To dl
            Sheets.Add(After:=Worksheets("template")).Name = "Template" & i - 1    'on ajoute et on nomme les feuilles...

cp4

XLDnaute Barbatruc
Bonsoir,

Pas très clair! Tu as édité un code brut obtenu avec l'enregistreur de macro. Que tu peux déblayer en retirant les select, selection, ActiveWindow.SmallScroll Down:=xx, etc...
Exemple de simplification:
VB:
Application.ScreenUpdating = False
With ActiveSheet
.Range("A2").Copy Sheets("TEMPLATE 1").Range("B22")
'la même chose pour les autres cellules
End With
Application.ScreenUpdating = True

Bonne soirée.

Edit: Bonsoir @Phil69970 ;)
 

thoch63

XLDnaute Nouveau
Désole , je ne suis pas très doué en Excel donc tout devient vite compliqué pour moi …

Je veux copier toutes les infos de la ligne 2 de la feuille "INFOS BRUTS " et les retranscrire sur la feuille "Template" dans les bonnes cellules

Quand toutes ces infos sont ajoutés à "Template"
Créer une copie de la feuille Template

Et ajouter les infos de la ligne 3 de la feuille "INFOS BRUTS "


Mon problème est que je ne sais pas comment apprendre cette automatisation à ma macro pour qu'elle répète l'action jusqu'à la ligne 300 par exemple
 

Pièces jointes

  • Exemple macro excel.xlsx
    22.9 KB · Affichages: 5

cp4

XLDnaute Barbatruc
Je veux copier toutes les infos de la ligne 2 de la feuille "INFOS BRUTS " et les retranscrire sur la feuille "Template" dans les bonnes cellules

Mon problème est que je ne sais pas comment apprendre cette automatisation à ma macro pour qu'elle répète l'action jusqu'à la ligne 300 par exemple
Bonjour,

@thoch63 :
1- Tu nous laisses deviner qu'elles sont les bonnes cellules.
2- tu nous dis copier les infos de la ligne 2, ensuite jusqu'à au moins 300 lignes.

Faudrait-il comprendre que tu cherches à créer une feuille pour chaque ligne de la feuille INFOS BRUTS?

A+
 

thoch63

XLDnaute Nouveau
Bonjour,

@thoch63 :
1- Tu nous laisses deviner qu'elles sont les bonnes cellules.
2- tu nous dis copier les infos de la ligne 2, ensuite jusqu'à au moins 300 lignes.

Faudrait-il comprendre que tu cherches à créer une feuille pour chaque ligne de la feuille INFOS BRUTS?

A+
Bonjour!

Par exemple :

Cellule A2 (INFOS BRUT) copié vers Cellule B22 (Template)
Cellule B2 (INFOS BRUT) copié vers Cellule B23 (Template)
Cellule C2 (INFOS BRUT) copié vers Cellule B3 (Template)

Il faut que les cellules A2 à H2 soient copiés vers les cellules correspondante sous TEMPLATE

C'est exactement ça , il faut créer une feuille TEMPLATE remplis avec toutes les infos de chaque ligne INFOS BRUTS

J'ai mis un exemple en PJ d'où les infos doivent être copiés


Merci beaucoup en tous cas pour la réactivité :)
 

Pièces jointes

  • Exemple macro excel.xlsx
    23 KB · Affichages: 5

Phil69970

XLDnaute Barbatruc
Re

Avec 350 onglets c'est pas la peine de te dire que le résultat sera INGERABLE o_O
Désolé mais perso je me refuse à faire un fichier avec 350 onglets qui te sera inexploitable .

Pose toi la question comment tu retrouveras facilement le 189eme onglet
qui correspond à la ligne 189 ==> c'est pratiquement impossible ....

@Phil69970
 

thoch63

XLDnaute Nouveau
Re

Avec 350 onglets c'est pas la peine de te dire que le résultat sera INGERABLE o_O
Désolé mais perso je me refuse à faire un fichier avec 350 onglets qui te sera inexploitable .

Pose toi la question comment tu retrouveras facilement le 189eme onglet
qui correspond à la ligne 189 ==> c'est pratiquement impossible ....

@Phil69970
Re @Phil69970 ,

Je ne sais pas si une feuille s'appelle un onglet ,

Mais le but 1° n'est pas de savoir retracer les feuilles,
C'est juste de pouvoir ajouter les informations de chaque ligne à une feuille
Le but n'est pas de retracer mais avoir un gain de temps considérable

Pour t'expliquer, c'est une campagne d'appel sortants que j'ai à réaliser pour mes études
Et j'ai un fichier client de 350 lignes avec toutes les infos que tu retrouve dans la feuille "infos brut" à recopier 1 par 1 sur chaque feuille " Template" pour ensuite dispatcher à mon équipe

Thoch
 

Phil69970

XLDnaute Barbatruc
Re

Je ne sais pas si une feuille s'appelle un onglet ,

Oui feuille= onglet voir l'image de ton fichier ou tu as 3 onglets (feuilles si tu préfères) maintenant imagine que tu en as 350 :oops:

1637920675490.png


Fais déjà un essaie en créant 50 onglets(feuilles) même vide pour voir ce que cela donne.

@Phil69970
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 154
Membres
112 670
dernier inscrit
Flow87