sélectionner les feuilles en fonction de leur nom

J

Jo38

Guest
Bonjour à tous,

je dispose de plusieurs feuilles dans un classeur. Je voudrais en sélectionner certaines en fonction de leur nom. Par exemple toutes les feuilles du classeur ayant un nom contenant la racine 'ABC'. C'est à dire les feuilles suivantes : 'ABC-1','ABC-2','ABC-toto'.

Je suis pas très expérimenté en VBA et je vous remercie infiniment de m'apporter une réponse si vous avez une idée.

Bonne soirée à tous.

Jo38
 

Hervé

XLDnaute Barbatruc
Bonsoir

J'ai pas trouvé le code pour sélectionner plusieurs feuilles en VBA :whistle:

Par contre, tu sais que tu n'ai pas obligé de les sélectionner pour pouvoir travailler dessus (c'est même déconseillé).

par exemple, ce code te donne les noms des feuilles commencant par ABC :


Code:
Public Sub selectionfeuille()
Dim ws As Worksheet

For Each ws In Worksheets
    If Left(ws.Name, 3) = 'ABC' Then
        MsgBox (ws.Name)
    End If
Next ws

End Sub

Si tu en dis un peu plus, on pourra surement t'aider.

Salut
 
T

Thomas®

Guest
Bonsoir Jo38, le forum,

afin de d'englober tout ce qui comporte 'ABC-', je te conseil
l'utilisation de la fonction

Like '*ABC-*' de ce fait tout ce qui comportera ABC- sera englobé dans ta recherche.

ensuite pour ce qui est de selectionner plusieur feuilles je sais pas si tu peux le combiner a 'like'

'With Sheets(Like '*ABC-*')'

je suis novice en macro donc je ne sais pas si cela peu ce faire,
mais je sais que les gens du forum vont surement t'apporter la reponse et surement me corriger :eek:

mais ne sachant pas ce que tu veux faire...

si tu souhaites recupérer des info qui ce trouve dans tes feuilles
tu peux plutot opter pour une boucle du grenre

For to

je consulterai ce poste afin d'aprendre comment faire
bonne chance
Thomas
 
J

jo38

Guest
Bonsoir Hervé et Thomas,

je vous remercie de votre réponse. Hervé, ta solution fonctionne bien et je t'en remercie.

Cependant, je ne parviens pas à finir ma macro. En fait, une fois sélectionné toutes les feuilles nécessaires, par exemple celles qui comportent 'ABC', je souhaite leur insérer à toutes une copie de cellules sur la même ligne.

Pour cela, j'ai essayé le code suivant, mais ça ne fonctionne pas.

Public Sub selectionfeuille()
Dim ws As Worksheet

Feuil3.Select
Cells.Select
Selection.Copy

For Each ws In Worksheets
If Left(ws.Name, 3) = 'ABC' Then

ActiveSheet.Paste
End If
Next ws

End Sub

Pourriez-vous m'aider à finir ma macro, svp. Je vous en serez très reconnaissant, d'autant plus qu'il ne doit pas manquer grand chose.

Merci d'avance.

@ bientôt.

Jo38.
 

Hervé

XLDnaute Barbatruc
re

J'ai compris que tu voulais copier toutes les cellules de la feuille 3, vers les feuilles dont le nom comporte 'ABC' en premier caractères

Public Sub selectionfeuille()
Dim ws As Worksheet

'Pour chaque feuille du classeur
For Each ws In Worksheets
'si les 3 premiers caractères du nom sont 'ABC'
If Left(ws.Name, 3) = 'ABC' Then
'alors copie les cellules de la feuille3 vers cette feuille à partir de la cellule A1
Feuil3.Cells.Copy Destination:=Sheets(ws.Name).Range('a1')
'fin de condition
End If
'prochaine feuille
Next ws

End Sub

Quelques remarques :

.cells correspond à l'ensemble des cellules d'un onglet, soit environ 16 millions de cellules.

Donc dans ce code, tu copies 16 millions de cellule X par le nombre de feuilles correspondant au critères.

J'espère que tu n'a pas beaucoup de feuilles ou une bonne machine.

tu peux limiter la copie à une plage définie par avance.

par exemple la plage A1:F12

Feuil3.Range('A1:F12').Copy Destination:=Sheets(ws.Name).Range('a1')

Enfin, si tu utilises un bouton pour lancer ta macro, saches que celui-ci sera également copié (sauf bien sur dans le cas d'une copie de plage définie).

Voila

Salut
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 348
Membres
103 526
dernier inscrit
HEC