Macro avec boucle "For Each Feuille" pour une partie du nom

Macro avec boucle "For Each Feuille" pour une partie du nom - VB/VBA/VBS - Programmation

Marsh Posté le 31-03-2008 à 21:42:01    

Bonjour à tous!
 
alors voilà, je dois faire un projet VB, et je dois faire des opérations sur plusieurs feuilles (mais pas sur toutes les feuilles de mon classeur!).
Pour l'instant, j'ai ça:
 
"groupe = Array("ETF 22 01 2001", "ETF 23 01 2001", "ETF 24 01 2001", "ETF 25 01 2001", "ETF 26 01 2001", "ETF 29 01 2001" )
   
   For Each Feuille In Sheets(groupe)"...
 
où les ETF XXXX sont les noms des 6 feuilles. ça marche très bien, mais j'aimerais bien faire un truc plus général, au cas où j'ai plus que 6 feuilles.
L'idéal serait d'avoir une boucle du style For Each Feuille in Worksheet où le nom contient "ETF" (étant donné que c'est ce qui distingue ces feuilles des autres: elles commencent toutes par ETF). C'est possible ça?
 
Merci  :bounce:

Reply

Marsh Posté le 31-03-2008 à 21:42:01   

Reply

Marsh Posté le 01-04-2008 à 00:47:07    

Salut, qqch comme


Option Explicit
 
Sub Tst()
Dim Ws As Worksheet
    For Each Ws In Worksheets
        If Ws.Name Like "ETF ## ## ####" Then
            ...
        End If
    Next Ws
End Sub

Reply

Marsh Posté le 01-04-2008 à 20:09:42    

Merci, je vais regarder ça!

Reply

Marsh Posté le 01-04-2008 à 21:41:12    

Ok, ça a l'air de marcher. Et si maintenant je veux stocker dans une variable le nombre de feuilles qui répondent à ce critère.
C'est possible aussi ça?

Reply

Marsh Posté le 01-04-2008 à 22:24:44    

Oui,via une variable style compteur qui s'incrémente si la condition est remplie

Reply

Marsh Posté le 01-04-2008 à 22:28:51    

je suis en train de réfléchir à comment le faire avec un Count, mais ça ne marche pas.
 
Je fais ça parceque j'aimerais avoir ce nombre avant de lancer ma boucle.

Reply

Marsh Posté le 01-04-2008 à 23:12:26    

une variable Cpt=Cpt+1 si la condition de nom est remplie, initialisée à 0 avant la boucle


Message édité par kiki29 le 02-04-2008 à 04:48:46
Reply

Marsh Posté le 27-09-2010 à 17:53:35    

Bonjour,
 
J'ai essayé d'appliquer ce code mais lorsque VBA trouve une feuille qu'il doit traiter, il va directement sur "End IF", voici mes codes:
 
Dim ws As Worksheet
For Each ws In Worksheets
       If ws.Name Like "FC ###" Then
           
 
       Range("c3" ).Select
       End IF
Next ws
 
---------------
 
VBA trouve d'abord 4 sheets qui ne commencent pas par "FC", il les passe correctement, par contre, il est sensé trouvé FC Ton et effectuer le travail mais il ne le fait pas??
 
Vous avez une idée??

Reply

Marsh Posté le 27-09-2010 à 18:22:25    

Salut, regarde l'aide en ligne sur Like et remplace ### par ???
rajoute également un Ws.Activate avant le Range select

Reply

Marsh Posté le 27-09-2010 à 18:36:03    

kiki29 a écrit :

Salut, regarde l'aide en ligne sur Like et remplace ### par ???
rajoute également un Ws.Activate avant le Range select


 
 
Ah oui j'ai consulté l'aide et je vois que # n'est que pour des digits, effectivement ça marche
 
J'avais mis l'activate de la sheet mais par après je l'ai enlevé.
 
Merci beaucoup en tout cas, maintenant ça fonctionne :) et je ne m'attendais pas à une réponse si rapide  :bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed