Boucle sur toutes les feuilles sauf une

Bonjour à vous les magiciens du VBA

Je voudrais appliquer ce code, qui fonctionne bien si j'ai 10 feuilles, mais le nombre de feuilles du classeur peut être variable.

En fait je voudrais exclure la feuille "Compil" et que la boucle se fasse sur toutes les feuilles ne portant pas le nom "compil"

J'ai essayé ceci (en pj). Mais d'une part, la macro devient très lente.. d'autre part je n'arrive à lui dire For j = 1 to.... "Compil" (qui est la dernière feuille du classeur.

code vba

Votre aide me sera (encore) précieuse !

Merci

Bonjour,

si "Compil" est TOUJOURS la dernière feuille du classeur je procéderais ainsi :

Compte le nb de feuille et retire 1 :

NbDeFeuilles = ActiveWorkbook.Sheets.Count - 1

Après tu fais ton :

For j=1 to NbDeFeuilles

Cordialement

Bonjour Biddaddy154,

Je dois faire quelque chose qui ne va pas... en procédant comme tu l'as proposé je n'ai que les 10 premières lignes de la feuille 1...

Comment faut il déclarer la variable "NbreDeFeuilles" ? (je pense que mon problème vient de là..

Re,

dans ta macro Compiler essayer de virer ces lignes de codes pour voir

for j = 1 to 10
sheets(j).select

remplace par

 ws.select

et du coup n'oublie pas d'enlever ton

next j

Cordialement

Re,

Merci pour ton aide.. mais je ne comprends pas du tout

J'avais remplacé la commande "For each.... then" par le compteur...

Et là ... je ne sais pas du tout comment faire...

Re,

Je crois que cela fonctionne avec ta première proposition. J'avais oublié de "réactiver" le select (cf encadré rouge).

code vba

Je fais d'autres essais, mais ca semble ok.

Mille merci !

J'aurais fait ainsi pour info :

Sub Compiler()
    Application.ScreenUpdating = False

    EffaceConsolidation

    For Each Ws In ActiveWorkbook.Sheets
        If Ws.Name <> "Compil" Then
            Ws.Select
            DerniereLigne = Range("A100000").End(xlUp).Row
            For i = 14 To DerniereLigne
                Row(i).Select
                Selection.Copy
                Sheets("Compil").Select
                LastRowConsolidation = Range("A1000000").End(xlUp).Row + 1
                Cells(LastRowConsolidation, 1).Select
                ActiveSheet.Paste
                Application.CutCopyMode = False
            Next i
        End If
    Next
End Sub

Bonjour,

Oui cela semble plus "propre". Je vais modifier en ce sens.

Merci encore

Rechercher des sujets similaires à "boucle toutes feuilles sauf"