Sélection de plusieurs feuilles dont le nombre et le nom change

G

gilles

Guest
Bonjour à tous,
J’ai un problème de sélection de feuille dans une macro.

J’ai chercher pas mal dans le forum croyant trouver mon bonheur, j’ai trouvé des sujets qui m’on fait avancé mais je n’ai pas réussi à aller jusqu’au bout c’est pourquoi je demande votre aide.

En effet, je voudrais sélectionner des feuilles dans un classeur. Le nom des feuilles est variable et le nombre aussi est variable.

Le nom des feuilles est écrit dans des cellules de la feuille sommaire.

J’ai toujours dans ce classeur trois feuilles dont le nom ne change pas: sommaire ; Données brutes ; Quotation et suivent ensuite mes feuilles 010F314 ; 020F314 ; 030F314.. etc.

Ce sont les dernières feuilles que je voudrais sélectionner pour enlever une colonne.

Exemple de classeur :
sommaire ; Données brutes ; Quotation ;010F314 ; 020F314 ; 030F314
sommaire ; Données brutes ; Quotation ;020F316 ; 030F316 ; 040F316; 050F316

J’ai essayé avec le bout de macro ci-dessous ça fonctionne a condition que j’ai autant de feuilles que la macro attend c’est-à-dire ici 5 feuilles sinon ça plante.

Mais dans mon classeur j’ai un nombre de feuilles qui varie.

Sheets("sommaire").Select
f1 = Cells(12, 3).Value
f2 = Cells(13, 3).Value
f3 = Cells(14, 3).Value
f4 = Cells(15, 3).Value
f5 = Cells(16, 3).Value

Sheets(Array(f1, f2, f3, f4, f5)).Select

Je ne sais pas si cela est possible de sélectionner de la 4eme feuille jusqu’a la dernière (C'est-à-dire tout prendre après Quotation)

Merci d’avance pour votre aide.
 
G

gilles

Guest
merci gremlins ça me simplifie la vie de selectionner le numéro de feuille mais malheuresement ça ne résout pas mon problème de nombre de feuilles aleatoires. Ce qui est dommage c'est qu'il n'y a pas de fonction qui permette de selectionner toutes les feuilles sans se soucier ni du nombre ni du nom (du genre allsheet) comme ensuite je deselectionne mes 3 feuilles sommaire donnees et quotation et le tours est joué.

merci
 
R

Rai

Guest
Bonjour Gilles

Je vais être obligé de te contredire, mais je suis sûr que cela t'arrange ;o))

Il existe une méthode pour sélectionner TOUTES les feuilles d'un classeur.
ThisWorkbook.Sheets.Select

Où Sheets désigne la collection des feuilles du classeur ... donc toutes.

Ca marche aussi pour les autres collections.

Bonne aprèm

Rai
 
B

Bricofire

Guest
Bonjour,

le pb vu sous ce jour serait de passer une liste d'arguments variable à la fonction Array avec Worksheets, ça je ne sais pas faire, une liste sous forme d'une variable string ne passe pas, donc ?

Par contre en lisant bien ta première question, il est peut-être possible de traiter le pb feuille à feuille... en utilisant Worksheets.Count

du genre :

A = Worksheets.Count

For I = 4 to A
Worksheets (I) . Select
le code de ca queux tu veux faire sur la feuille
Next I

cordialement,

ps : répond sur le fil si c'est OK , ce que tu cherches...

Bfr
 
B

Bricofire

Guest
Bonjour,

Mais si ça marche si j'ai compris ton besoin premier, copie ce qui suit dans un module de ton classeur (éditeur VBE) et lance la routine....

Fais le sur un classeur d'essai car ça te fera sauter la 3ème colonne de toutes tes feuilles après la 3ème... à chaque lancement...

--------------------
Option Explicit ' mets toujours ça en début de module, ça évite pas de sottises...
Sub Gloub()

Dim A
Dim I

A = Worksheets.Count

For I = 4 To A ' 4 si tu veux garder les 3 premières intactes !
' on peut facilement demander le nb de feuiile à sauter à l'utilisateur si besoin..
Worksheets(I).Select
Range("C3").Select 'sélectionne la première cellulle de la colonne à effacer
Selection.EntireColumn.Delete ' efface la dite colonne..
Next I 'passe à le feuille suivante etc... jusqu'à la dernière

End Sub


---------------------
Cordialement,

Bfr
 
G

gilles

Guest
Bricofire

Bon je viens de tester la macro.

Ca coince à la selection de cellule, la je ne comprends pas. Je suis surpris que çà coince là. Ca ne me paraissait pas etre çà le plus dur pourtant.

Il selectionne bien la 4ème feuille mais il ne veut pas activer ce cellule par la fonction Range.

J'ai essayé avec la selection de colonne
Columns("E:E").Select
mais çà donne la meme erreur.

ou peut-etre que ces fonctions ne sont pas compatibles avec l'activation de feuille Worksheets(I).Select.

Merci

je restest d'autres choses au cas ou ...
 
B

Bricofire

Guest
bonjour Gilles,
On y arrivera,

Petit conseil, au lieu de dire ça coinc ou ça donne une erreur, dis plutôt : " j'ai ce message d'erreur :.....".
Donc envoie-moi la nature du message qu'il te mets, ça sera tout de suite explicite !

cordialement,

Bfr
 
H

Hervé

Guest
Bonjour à tous

Un code qui fonctionne car testé :

Sub vev()
Dim I As Byte
For I = 4 To Worksheets.Count
Worksheets(I).Columns(3).Delete
Next I
End Sub


Attention : l'utilisation de l'index de la feuille, sous-entend que tu n'auras jamais à déplacer des feuilles.

Salut
Hervé
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 335
Membres
103 190
dernier inscrit
silverwolf854