Macro qui fonctionne que partiellement

ciaamigo Messages postés 3 Date d'inscription samedi 5 octobre 2024 Statut Membre Dernière intervention 8 octobre 2024 - 5 oct. 2024 à 11:15
danielc0 Messages postés 1272 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 21 novembre 2024 - 8 oct. 2024 à 09:58

Bonjour,

j'ai une macro qui fonctionnait et qui ne va plus. Elle sert simplement à vider plusieurs champs dans plusieurs onglets en même temps. 

Elle est dédoublée vu que la fonction "array" n'acceptait pas assez d'arguments.

Elle fonctionne que pour les 2 premiers onglets ("AY" et "LP").

Merci au courageux qui me trouve une solution !

Voici la macro :

Sub effacer_tout()
' Macro enregistrée le 02.03.2009 par abc cde
'
    Sheets(Array("AY", "BW", "CB", "CH", "DH", "GT", "GV", "IF", "JI", "JN", "JW", "LJ")).Select
    Range("C4:J15,C16,C19:C21,C35,C39:D52,D19:D23,D26:D31,D35,D36,G19:G21,G35,H19:H23,H26:H31,H35").ClearContents
    Range("C4").Select
    Sheets(Array("LP", "MZ", "PR", "Réception", "SD", "YL", "DM", "VP", "AUX")).Select
    Range("C4:J15,C16,C19:C21,C35,C39:D52,D19:D23,D26:D31,D35,D36,G19:G21,G35,H19:H23,H26:H31,H35").ClearContents
    Range("C4").Select
    Sheets("AY").Select
    End Sub

A voir également:

2 réponses

danielc0 Messages postés 1272 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 21 novembre 2024 143
6 oct. 2024 à 19:25

Bonjour,

La syntaxe n'est pas correcte. Essaie :

Sub effacer_tout()
' Macro enregistrée le 02.03.2009 par abc cde
'
  Dim arr, sh
  Set arr = Sheets(Array("AY", "BW", "CB", "CH", "DH", "GT", "GV", "IF", "JI", "JN", "JW", "LJ"))
  For Each sh In arr
    sh.Range("C4:J15,C16,C19:C21,C35,C39:D52,D19:D23,D26:D31,D35,D36,G19:G21,G35,H19:H23,H26:H31,H35").ClearContents
  Next sh
  Set arr = Sheets(Array("LP", "MZ", "PR", "Réception", "SD", "YL", "DM", "VP", "AUX")).Select
  For Each sh In arr
    sh.Range("C4:J15,C16,C19:C21,C35,C39:D52,D19:D23,D26:D31,D35,D36,G19:G21,G35,H19:H23,H26:H31,H35").ClearContents
  Next sh
  Range("C4").Select
  Sheets("AY").Select
End Sub

Daniel


0
danielc0 Messages postés 1272 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 21 novembre 2024 143
7 oct. 2024 à 10:10

... Explication :

"Range", quand il n'est pas qualifié, se réfère à la feuille active, pas à l'ensemble des feuilles sélectionnées. La feuille active est la première des feuilles sélectionnées.

Daniel

0
ciaamigo Messages postés 3 Date d'inscription samedi 5 octobre 2024 Statut Membre Dernière intervention 8 octobre 2024
8 oct. 2024 à 07:56

la boucle fonctionne, cependant la commande "range("C4").select" ne fait pas son job. En effet, lors de l'exécution de la macro, la dernière cellule utilisée reste active et la cellule C4 ne devient pas la nouvelle cellule active. Merci de me redire.

0
ciaamigo Messages postés 3 Date d'inscription samedi 5 octobre 2024 Statut Membre Dernière intervention 8 octobre 2024
8 oct. 2024 à 08:02

je dois encore préciser que la commande "range("C4").select" a été mise dans la boucle et pas seulement à la fin

0
danielc0 Messages postés 1272 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 21 novembre 2024 143
8 oct. 2024 à 09:58

Bonjour à tous,

Ajoute :

Range("C4").Select

en début de macro. Ceci dit, je ne vois pas à quoi ça sert ?

Daniel

0