Sélectionner plusieurs onglets via variable

Bonjour,

Il y a un truc qui m'échappe là pourquoi ça ne fonctionne pas ?

tt = "AA" & "," & "BB" & "," & "CC" & "," & "DD" & "," & "EE" & "," & "FF"

Sheets(tt).Select

J'ai essayé :

Sheets(Array(tt)).select

et rien à faire alors que si je fais :

Sheets(Array("AA", "BB","CC","DD" ,"EE","FF")).select

Ca marche

On peut m'expliquer ?

Bonjour Jefekoi,

Ici, tt est une variable de type string, une chaine de caractères. Ca ne peut pas fonctionner à moins qu'un onglet soit nommé AA,BB,CC,DD,EE,FF.

Il faudrait plutôt faire :

sub test()
t = array("AA", "BB", "CC", "DD", "EE", "FF")
'ou alors
tt = "AA,BB,CC,DD,EE,FF"
t = split(tt, ",")
sheets(t).select
end sub

Cdlt,

Bonjour et merci 3GB

En fait je veux récupérer les noms des onglets à part 4 que je connais les noms.

C'est pour en faire une copie sur un autre classeur (mais les 4 ne doivent pas être copié)

je sais faire ça :

Dim Arr() As String
Dim i As Integer

For i = 5 To Worksheets.Count
Arr(i) = Worksheets(i).Name
Next i

Mais comment les sélectionner si je ne connais pas les noms ?

L'exemple que tu as donné est très bien pour récupérer les onglets dont l'index est supérieur à 4.

Il faut juste redimensionner le tableau à un moment (avant la boucle avec un simple redim ou pendant avec un redim preserve) puis faire la copie à la fin :

sub test()
Dim Arr(), i&
with worksheets
    redim Arr(1 to .count - 4)
    For i = 5 To .Count
        Arr(i - 4) = Worksheets(i).Name
    next i
end with
sheets(Arr).copy
end sub

Cdlt,

Magnifique merci

Je vais corser un peu

en fait je le colle dans deux fichiers vierge et dans deux dossiers différent

For X = 0 To 1
    ActiveWorkbook.SaveAs Filename:=Sauv(X) & Fichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Next

Haaaa j'ai trouvé ;)

Sheets(Arr).Select
Sauv(0) = "C:\Users\pseudo\Desktop\"
Fichier = "FichierTest"
Sheets(Arr).Copy
ActiveWorkbook.SaveAs Filename:=Sauv(0) & Fichier, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

Nickel ! Bon, je propose quand même un petit code pour le plaisir, cette fois-ci en copiant toutes les feuilles et en supprimant les 4 premières :

Sub test()
dim tRep, Fichier$
tRep = array("C:\Users\pseudo\Desktop", "C:\Users\pseudo\Downloads") 'sans antislash fin - tableau avec repertoire destination
Fichier = "FichierTest" 'nom fichier
for each dossier in tRep 'pour chaque dossier destination
    Copier dossier, Fichier 'appel macro copier pour le dossier en cours et le fichier Fichier
next e
end sub

sub Copier(RepDest, Filename as string)
thisworkbook.worksheets.copy 'copie des feuilles
application.displayalerts = false 'desactiv alertes
with ActiveWorkbook 'avec classeur actif, créé à l'instant
    for i = 4 to 1 step - 1 'de 4 à 1 en décrémentant de 1
        .sheets(i).delete 'suppression feuille i
    next i
    .SaveAs Filename:=RedDest & "\" & Filename, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False 'sauvegarde
    .close true 'fermeture
end with
application.displayalerts = true  'reactiv alertes
end sub

Cdlt,

Merci 3GB, intéressant, je ne sais pas encore si je vais l'utiliser mais ta source est bien faite j'ai appris de belles choses.

je vais la tester ce soir.

Merci

Rechercher des sujets similaires à "selectionner onglets via variable"