Bonjour,
Je débute VBA comme beaucoup de gens qui viennent poser leurs questions ici, et je rencontre un problème dans mon code ...
Le but du jeux est pour chaque feuille de mon classeur de nettoyer le contenu de cellule/zone de cellules et jusque la tout va bien.
Toutefois, un peu avant ma boucle, je procède à la copie d'une zone d'une certaine feuille (avec un nombre de colonne fixe, mais pas les lignes) et souhaite faire un collage spécial de cette zone sur toutes mes feuilles.
Voilà le bout de code qui pose problème :
Le problème arrive au moment de la ligne [I10].PasteSpecial Paste:=xlPasteValues.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 If ActiveSheet.Name <> "FeuilZ" Then Sheets("FeuilZ").Activate zderniereligne = Range("A" & Rows.Count).End(xlUp).Row Range(Range("A3"), Range("E" & zderniereligne)).Copy For Each Sheet In Sheets If Sheet.Name <> "FeuilZ" Then Sheet.Activate [A3:F82].ClearContents [I10:M39].ClearContents [J5].ClearContents [J3].ClearContents [I10].PasteSpecial Paste:=xlPasteValues If [L1].Value <> zyear Then [L1].Value = zyear [A3].Select Else If ActiveSheet.Name <> "Feuil1" Then Sheets("Feuil1").Activate [A3].Select End If Next Sheet
Si je fait du pas à pas pour vérifier ce qu'il se passe, la copie est bien faite et est dans le presse papier, si je fait un clic droit dans une cellule, l'option collage spécial est bien dispo, mais des que le premier range ([A3:F82].ClearContents) arrive dans la boucle, l'option de collage spécial disparait et j'ai donc une erreur "La méthode PasteSpecial de la classe Range a échoué" au moment du collage.
Le débogage me surligne la ligne [I10].PasteSpecial Paste:=xlPasteValues.
J'utilise des clearcontents et un special paste car la mise en forme du tableau ne doit pas changer, uniquement les valeurs.
Je précise que le presse papier contient malgré tout ma copie, je ne peux juste pas la coller ...
J'avais auparavant divisé cette procédure en plusieurs petites, chacune sa tache, et tout roulait, mais j'avais du coup plusieurs procédures (3) qui lançait la même boucle each sheet in sheets et voulait optimiser en évitant d'avoir plusieurs boucles for each sheet in sheets et tout faire dans la même, mais le nettoyage de la zone concernée doit arriver avant le collage (normal vous me direz).
Auriez vous des idées ?
En espérant avoir été clair et en vous remerciant pour votre temps.
Partager