Code dans "Thisworkbook" mais par pour toutes les feuil

Bonjour à tous!

Je voudrais savoir s'il existait un moyen de faire un code pour l'ensemble du classeur, sauf pour 3 feuilles.

Sachant que j'ai un classeur avec 20 feuilles et que les 20 feuilles apparaissent au fur et à mesure du temps (elles portent le nom d'un mois comme index).

Je n'ai pas de fichier exemple pour le moment, mais si vous avez des idées pour m'aiguiller je suis preneur!

Merci!

Bonjour Grem94,

Je suggère une feuille "Paramètres" avec le nom des feuilles (colonne A) et l'indicateur de traitement (colonne B - valeurs Oui ou Non).

Le code parcourt la liste des feuilles du classeur, et pour chacune, il vérifier le paramètre ci-dessus...

Ou alors, les feuilles à ne pas traiter comportent un caractère particulier (un numéro ?) dans leur nom, et la boucle ci-dessus en tient compte...

Il y a sans doute d'autres idées... 8) A+ Daniel

Bonjour,

Ce que j'ai fais pour mon classeur de 80 feuilles:

J'ai crée un module avec le programme que tu veux appliquer et dans chaque feuille ou tu veux lancer la macro tu mets:

Private Sub Worksheet_Activate()
Le_nom_de_ton_programme

End Sub

Et comme ça, lorsque tu dois corriger ta macro, tu la corriges juste dans ton module

Bonjour le fil

Ouuuu laaaa a23peter43

Il faut par contre inclure le "Activate" dans tes 80 feuilles

Une solution simple et efficace (du moins je trouve )

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  ' Si nom de feuille simple, on sort de la procédure si le nom de la feuille est l'un des 3
   If InStr(1,"Accueil,Menu,Params", Sh.Name) > 0 Then Exit Sub
  ' Si nom de la feuille similaire à d'autres
  If InStr(1, Sh.Name, "ANALYSE 1") > 0 Then Exit Sub
  ' Le code pour traiter OnChange ICI

A+

C'est ça

Mais un Ctrl C + Crtl V c'est assez rapide puis ça n'est pas amener à bouger par la suite. Il n'a que 20 feuilles dans son classeur

(Bon j'avoue ce n'est pas du tout optimisé mais je ne suis pas un expert en VBA)

Re,

a23peter43 a écrit :

(Bon j'avoue ce n'est pas du tout optimisé mais je ne suis pas un expert en VBA)

C'est ça

L'inconvénient de ce que tu fais, pour moi,

Lorsque tu dois pour X raisons copier une feuille du classeur dans un autre, je parle bien de copier la feuille et non copier les valeurs de la feuille, et bien à ce moment précis tu es embêté avec ta

Private Sub Worksheet_Activate()

car le code généraliste ne se trouve pas dans le nouveau classeur

Ceci dit, selon l'utilisation de chacun, cela peut ne pas avoir d'incidence

Au plaisir

Il n'y a pas moyen de faire un truc genre si on est entre la feuille 1 et 6 alors on sort de la procédure?

Bonjour

Grem974 a écrit :

Il n'y a pas moyen de faire un truc genre si on est entre la feuille 1 et 6 alors on sort de la procédure?

Non pas vraiment et en plus c'est dangereux

Grem974 a écrit :

Il n'y a pas moyen de faire un truc genre si on est entre la feuille 1 et 6 alors on sort de la procédure?

y'aurait bien un truc du genre :

Sub toto()
For i = 7 To Application.Worksheets.Count
Worksheets(i).activate
'traitement des  Worksheets(i)
Next
End Sub

Re ouisansdoute

Comme c'est là tu as lu le fil en travers

Il aurait fallut préciser si dans chaque feuille tu mets le code de a23peter43

A+

BrunoM45 a écrit :

Re ouisansdoute

Comme c'est là tu as lu le fil en travers

Il aurait fallut préciser si dans chaque feuille tu mets le code de a23peter43

A+

Je comprends, je suis repartie de la première question posée

Grem974 a écrit :

faire un code pour l'ensemble du classeur, sauf pour 3 feuilles

Si on connait la position des feuilles à ne pas traiter...

Bonjour à tous,

Je trouve que grem974 devrais préciser comment il veut que se fasse l'appel de sa macro.

Au coup par coup par un bouton ?

A l'activation d'une feuille comme proposé différentes fois ?

Autre fonctionnement désiré ?

En sachant que si c'est feuille par feuille sur leur activation, une formule utilisant une valeur d'une autre feuille non encore mise à jour retournera un résultat erroné.

Avec un fichier exemple détaillant les points importants tu auras des réponses plus adaptées.

eric

Bonjour à tous!

Je précise un petit peu les choses parce que je vois que ma question n'est pas claire. En fait, j'ai un tableur avec 6 feuilles au départ.

elles sont ordonnées et constantes. Avec une macro j'exécute un code qui copie la 6ème feuille et renomme celles-ci par le nom d'un mois. Ces 12 nouvelles feuilles en plus de la 6ème s'adaptent par un code placé dans "thisworkbook".

Le problème est que ce code je ne veux pas qu'il s'applique aux 5 premières. Parce que c'est un code qui sert à masquer des lignes et des colonnes (donc plutôt gênant pour travailler sur les 5 feuilles).

Est-ce plus éclaircissant?

Merci de votre aide

Bonjour,

tu ne réponds pas à la question : comment tu veux déclencher ton code.

Sinon la 1ère proposition de brunoM45 correspond à ton besoin.

Légèrement modifié pour balayer toutes les feuilles :

Sub test()
    Dim sh As Worksheet
    For Each sh In Worksheets
      If InStr(",Accueil,Menu,Params,", "," & sh.Name & ",") = 0 Then
        ' feuille pas dans la liste
        ' traiter la feuille
        ' ton code ici...
      End If
    Next sh
End Sub

A mettre sur un bouton par exemple.

Les feuilles à ne pas traiter son listées dans ",Accueil,Menu,Params,". Bien mettre la "," de début et celle de fin.

eric

Rechercher des sujets similaires à "code thisworkbook toutes feuil"