Action répétitive sur plusieurs feuilles de calcul

Résolu/Fermé
sab - 10 févr. 2016 à 17:05
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 - 19 févr. 2016 à 15:12
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
A voir également:

2 réponses

Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
Modifié par Theo.R le 10/02/2016 à 17:07
En soi il suffit d'ajouter juste en dessous du for... :
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é !
0
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
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31
12 févr. 2016 à 10:06
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 :
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..
0
sab > Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016
12 févr. 2016 à 10:25
ok je vais voir ce que je peux faire dès que possible et te redis.

Merci bonne journée
0
sabw > Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016
19 févr. 2016 à 14:53
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
0
Theo.R Messages postés 575 Date d'inscription vendredi 11 juillet 2014 Statut Membre Dernière intervention 30 mars 2016 31 > sabw
19 févr. 2016 à 15:12
Encore un conseil :

Au lieu de
Columns("O:U").Select
Selection.ClearContents


Essayez :
Columns("O:U").ClearContents


bonne continuation ;)
0