Concaténer des noms d'onglets

RENAUDER

Nous a quitté
Repose en paix
Bonjour,
Je balaye une plage de cellules de U1 à Ux, cellules contenant des noms d'onglets (Ass. Modules, Ass.baio, Ass.Cont ...)
Je souhaite concaténer ces valeurs dans une variable (NomFeuille) pour l'exploiter ensuite avec la commande :
Sheets(Array(NomFeuille)).Select
au lieu de
Sheets(Array("Ass. Modules", "Ass.baio", "Ass.Cont")).Select
car le nombre de noms de feuilles varie.
Lorsque j'écris le contenu de ma variable NomFeuille avec Debug.Print, je lis
"Ass. Modules","Ass.baio","Ass.Cont"
et cela semble correct mais ça ne passe pas avec Sheets(Array(NomFeuille)).Select

Code:
Sub SelectionMultiOnglets()
    Dim NomFeuille As String
    Dim C As Variant
    Sheets("Données").Select
    Range("U1:U3").Select
    ' U1 = Ass. Modules
    ' U2 =Ass.baio
    ' U3=Ass.Cont
    For Each C In Selection
        NomFeuille = IIf(NomFeuille = "", """" & C.Value & """", NomFeuille & "," & """" & C.Value & """")
    Next C
    Debug.Print NomFeuille
    ' Je souhaite en balayant ma plage U1:U3 (qui peut varier jusqu'à Ux) récupérer la variable NomFeuille
    Sheets(Array(NomFeuille)).Select    ' ça ne ramène pas les doubles quotes)
    ' Résultat souhaité
    'Sheets(Array("Ass. Modules", "Ass.baio", "Ass.Cont")).Select
End Sub
 
Dernière édition:

sousou

XLDnaute Barbatruc
Re : Concaténer des noms d'onglets

Bonjour RENAUDER

Voici une piste qui ne reprend pas ton cas particulier, mais qui doit résoudre ton problème
Utilises un tableau pour définir ton ARRAY
Dans cette exemple qui sélectionne toutes les feuilles d'un classeur tu peux remplir ta table avec les nom des feuilles ou avex leur index ca fonctionne pareil.

Dim table()

Sub deb1()
For n = 0 To Sheets.Count - 1
ReDim Preserve table(n)
table(n) = Sheets(n + 1).Name 'ou index
Next
For n = 0 To UBound(table)
MsgBox table(n)
Next
Sheets(table()).Select
End Sub
 

RENAUDER

Nous a quitté
Repose en paix
Re : Concaténer des noms d'onglets

Bonjour,

Sans réponse, j'ai eu l'info sur msnews.microsoft .com (microsoft.public.fr.excel)
Ca aidera peut-être d'autres personnes
Code:
Sub Sélection_Feuilles()
    Dim Feuilles()
    Dim plage As Range
    Set plage = Sheets("Données").Range([U1], [U65000].End(xlUp))
    Feuilles = Application.Transpose(plage.Value)
    Sheets(Feuilles).Select
End Sub
'Admettons que les noms de feuilles soient en A1:A3
'--------------------------
Sub Test()
    Dim Feuilles()
    Feuilles = Application.Transpose(Range("A1:A3").Value)
    Sheets(Feuilles).Select
End Sub
'--------------------------
'Si les données sont en ligne comme ceci :
'--------------------------
Sub Test()
    Dim Feuilles()
    Feuilles = Application.Transpose(Application.Transpose(Range("A1:C1").Value))
    Sheets(Feuilles).Select
End Sub
 

Statistiques des forums

Discussions
312 321
Messages
2 087 237
Membres
103 497
dernier inscrit
JP9231