Action répétitive sur plusieurs feuilles de calcul
Résolu
sab
-
Theo.R Messages postés 575 Date d'inscription Statut Membre Dernière intervention -
Theo.R Messages postés 575 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai fais la macro ci-dessous pour une action que je veux répétitive sur toutes les feuilles de mon classeur sauf que la macro ne va pas sur la feuille 2 et les suivantes donc le for next ne marche pas.
Sub essai()
Dim k As Integer
Dim i As Integer
Sheets("Recap").Select
k = Sheets.Count
For i = 1 To k
Range("a3").Select
Columns("a:I").Select
Selection.FormatConditions.Delete
Columns("O:U").Select
Range("O2").Activate
Selection.Copy
Columns("A:A").Select
Range("A2").Activate
ActiveSheet.Paste
Columns("O:U").Select
Range("O2").Activate
Application.CutCopyMode = False
Selection.ClearContents
Range("A1:G2").Select
Selection.Copy
Range("O1:U1").Select
ActiveSheet.Paste
Range("I1:M2").Select
Application.CutCopyMode = False
Selection.Copy
Range("V3").Select
ActiveSheet.Paste
Columns("I:M").Select
Range("I2").Activate
Application.CutCopyMode = False
Selection.ClearContents
Range("V3:Z4").Select
Selection.Copy
Range("I1:M1").Select
ActiveSheet.Paste
Range("V3:Z4").Select
Application.CutCopyMode = False
Selection.Clear
Next
End Sub
J'ai fais la macro ci-dessous pour une action que je veux répétitive sur toutes les feuilles de mon classeur sauf que la macro ne va pas sur la feuille 2 et les suivantes donc le for next ne marche pas.
Sub essai()
Dim k As Integer
Dim i As Integer
Sheets("Recap").Select
k = Sheets.Count
For i = 1 To k
Range("a3").Select
Columns("a:I").Select
Selection.FormatConditions.Delete
Columns("O:U").Select
Range("O2").Activate
Selection.Copy
Columns("A:A").Select
Range("A2").Activate
ActiveSheet.Paste
Columns("O:U").Select
Range("O2").Activate
Application.CutCopyMode = False
Selection.ClearContents
Range("A1:G2").Select
Selection.Copy
Range("O1:U1").Select
ActiveSheet.Paste
Range("I1:M2").Select
Application.CutCopyMode = False
Selection.Copy
Range("V3").Select
ActiveSheet.Paste
Columns("I:M").Select
Range("I2").Activate
Application.CutCopyMode = False
Selection.ClearContents
Range("V3:Z4").Select
Selection.Copy
Range("I1:M1").Select
ActiveSheet.Paste
Range("V3:Z4").Select
Application.CutCopyMode = False
Selection.Clear
Next
End Sub
A voir également:
- Action répétitive sur plusieurs feuilles de calcul
- Action - Guide
- Télécharger film d'action gratuitement et rapidement - Télécharger - TV & Vidéo
- Comment faire un livret avec des feuilles a4 - Guide
- Action fans - Accueil - Guide arnaque
- Concurrent action - Guide
2 réponses
En soi il suffit d'ajouter juste en dessous du for... :
De plus précisez bien "Next i" et pas juste "Next" en fin de boucle.
Après votre code est très lourd et pourrait être optimisé !
Sheets(i).Select
De plus précisez bien "Next i" et pas juste "Next" en fin de boucle.
Après votre code est très lourd et pourrait être optimisé !
Bonjour,
Merci pour ton aide mais j'avais trouvé entre temps.
En effet mon code est lourd, je vais essayer d'optimiser mais je commence
seulement une auto formation en vba donc c'est un peu difficile.
si tu peux me donner une idée de départ ça m'aiderait.
Cdlt
Merci pour ton aide mais j'avais trouvé entre temps.
En effet mon code est lourd, je vais essayer d'optimiser mais je commence
seulement une auto formation en vba donc c'est un peu difficile.
si tu peux me donner une idée de départ ça m'aiderait.
Cdlt
pas de souci j'ai commencé pour ma part VBA seul il y a 1 an donc je comprends ^^
Conseils :
1) supprimez tous les .Select possibles ! ça commence par les .Select inutiles comme la 1er dans les 2 suivant :
2) Pour les copier-coller, au lieu de :
Essayez :
PS: ça contribuera au 1) ;)
ça me semble déjà un bon début pour épurer votre code et gagner en performance. Pour la suite, on verra si des boucles ou autre peuvent être mises en place pour des actions répétitives car je vois bcp de copier-coller..
Conseils :
1) supprimez tous les .Select possibles ! ça commence par les .Select inutiles comme la 1er dans les 2 suivant :
Range("a3").Select
Columns("a:I").Select
2) Pour les copier-coller, au lieu de :
Range("O2").Activate
Selection.Copy
Columns("A:A").Select
Range("A2").Activate
ActiveSheet.Paste
Essayez :
Range("A2").value = Range("O2").value
PS: ça contribuera au 1) ;)
ça me semble déjà un bon début pour épurer votre code et gagner en performance. Pour la suite, on verra si des boucles ou autre peuvent être mises en place pour des actions répétitives car je vois bcp de copier-coller..
Bonjour, me revoilà j'ai réussi à optimiser du coup la macro ressemble à ça et le mieux ça fonctionne bien, merci pour les tuyaux ça m'a bien aidé.
Sub dailyjour()
Dim K As Integer
Dim I As Integer
K = Sheets.Count
For I = 1 To K
Sheets(I).Activate
Range("a3").Select
Columns("A:G").Value = Columns("O:U").Value
Columns("O:U").Select
Selection.ClearContents
Range("O1:U2").Value = Range("A1:G2").Value
Range("V3:Z2").Value = Range("I1:M2").Value
Columns("I:M").Select
Selection.ClearContents
Range("I1:M2").Value = Range("V3:Z2").Value
Range("V3:Z2").Select
Selection.ClearContents
Range("A3").Select
Next I
Sheets(1).Select
Range("A3").Select
End Sub
Sub dailyjour()
Dim K As Integer
Dim I As Integer
K = Sheets.Count
For I = 1 To K
Sheets(I).Activate
Range("a3").Select
Columns("A:G").Value = Columns("O:U").Value
Columns("O:U").Select
Selection.ClearContents
Range("O1:U2").Value = Range("A1:G2").Value
Range("V3:Z2").Value = Range("I1:M2").Value
Columns("I:M").Select
Selection.ClearContents
Range("I1:M2").Value = Range("V3:Z2").Value
Range("V3:Z2").Select
Selection.ClearContents
Range("A3").Select
Next I
Sheets(1).Select
Range("A3").Select
End Sub