Macro qui fonctionne que partiellement

ciaamigo Messages postés 3 Statut Membre -  
danielc0 Messages postés 2191 Date d'inscription   Statut Membre Dernière intervention   -

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

2 réponses

  1. danielc0 Messages postés 2191 Date d'inscription   Statut Membre Dernière intervention   287
     

    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
    1. danielc0 Messages postés 2191 Date d'inscription   Statut Membre Dernière intervention   287
       

      ... 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
    2. ciaamigo Messages postés 3 Statut Membre
       

      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
  2. ciaamigo Messages postés 3 Statut Membre
     

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

    0
    1. danielc0 Messages postés 2191 Date d'inscription   Statut Membre Dernière intervention   287
       

      Bonjour à tous,

      Ajoute :

      Range("C4").Select

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

      Daniel

      0