Boucle VBA classeur

Bonjour,

J'ai réaliser une macro avec une boucle seulement elle ne marche que sur l'onglet ou je suis. J'aimerais qu'elle se réalise sur l'ensemble du classeur. Pouvez vous me dire quel est le problème ?
Pour info elle est copiée dans l'onglet ThisWorkBook

Sub testmacrobouclev2()
Dim fl As Worksheet
For Each fl In ThisWorkbook.Worksheets
If fl.Name <> "RECAPITULATIF" And fl.Name <> "Notes" Then
Application.MaxChange = 0.00001

Range("ChangeCell").ClearContents
Range("ChangeCell").Value = "50000"

Range("GoalSeekCell").goalseek Goal:=0, ChangingCell:=Range("ChangeCell")
End If
Next fl
End Sub

4 réponses

  1. Contributeur
    sheets(5).name

    m^me chose sur les autres

    Dim sheet inutile
    de m^me, si Range("ChangeCell") est une cellule nommée inutile de déclarer "changecell" (c"est du texte)
    pareil pour "GoalSeekCell"

    comme tu sembles débuter sur les macros, il vaut lieux apprendre les bases auparavant
    www.info-3000.com/vbvba/index.php
    1. Contributeur
      bonjour,

      et si tu nous disais où se trouve l'erreur ? (surlignage en jaune)

      1. Bonjour,

        QUAnd je fais le pas à pas de la macro il coupe au moment de passer de :
        If Sheet.Name <> "RECAPITULATIF" And fl.Name <> "Notes" Then
        à
        Sheet(5).Application.MaxChange = 0.00001

        Il me met erreur d’exécution 424 : Objet requis

        Je ne comprends pas ce qu'il me manque.
    2. Contributeur
      Bonjour

      Si tu veux garder le même nom dans plusieurs feuilles il faut préciser la zone d'action
      par ex en feuille2

      --


      ainsi quand tu écris
      sheets(2).range("Toto").select , tu vas dans la cellule C2 de la feuille 2
       Michel
      1. Merci à tous pour votre aide,j'ai un peu de mal à tout saisir !

        du coup qu'est ce qui cloche dans mon code, il me met "objet requis"?

        Sub testmacrobouclev2()
        Dim Sheet, ChangeCell, GoalSeekCell
        For Each Sheet In Worksheets

        If Sheet.Name <> "RECAPITULATIF" And fl.Name <> "Notes" Then
        Sheet(5).Application.MaxChange = 0.00001

        Sheet(5).Range("ChangeCell").ClearContents
        Sheet(5).Range("ChangeCell").Value = "50000"

        Sheet(5).Range("GoalSeekCell").goalseek Goal:=0, ChangingCell:=Sheet(5).Range("ChangeCell")

        Sheet(3).Application.MaxChange = 0.00001

        Sheet(3).Range("ChangeCell").ClearContents
        Sheet(3).Range("ChangeCell").Value = "50000"

        Sheet(3).Range("GoalSeekCell").goalseek Goal:=0, ChangingCell:=Sheet(3).Range("ChangeCell")

        End If
        Next Sheet

        End Sub
    3. Bonjour,
      Range("ChangeCell").ClearContents
      Vous ne pouvez pas avoir plusieurs cellules ou plages de cellules de meme nom......!!!!!
      1. donc il faut que je renomme chaque cellule de chaque onglet différemment ?
        La macro ne fait pas un traitement par onglet ?

        S'il n'y a pas d'autres solutions, comment cela se traduit dans le code en admettant que je les appellent ChangeCell1, ChangeCell2...