Action répétitive sur plusieurs feuilles de calcul [Résolu/Fermé]

Signaler
-
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
-
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

2 réponses

Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
25
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é !
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
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
25
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..
>
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016

ok je vais voir ce que je peux faire dès que possible et te redis.

Merci bonne journée
>
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016

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
Messages postés
575
Date d'inscription
vendredi 11 juillet 2014
Statut
Membre
Dernière intervention
30 mars 2016
25 > sabw
Encore un conseil :

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


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


bonne continuation ;)