Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Concaténer des noms d'onglets

6 réponses
Avatar
RENAUD Eric
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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1
et 2 ne sont pas concernés) à la dernière feuille mais là aussi je sèche
D'avance merci

6 réponses

Avatar
MichDenis
Admettons que tes noms de feuilles soient en A1:A3
'--------------------------
Sub test()
Dim Toto()
Toto = Application.Transpose(Range("A1:A3").Value)
Sheets(Toto).Select
End Sub
'--------------------------

si tes données sont en ligne comme ceci :
'--------------------------
Sub test()
Dim Toto()
Toto = Application.Transpose(Application.Transpose(Range("A1:C1").Value))
Sheets(Toto).Select
End Sub
'--------------------------




"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1
et 2 ne sont pas concernés) à la dernière feuille mais là aussi je sèche
D'avance merci
Avatar
Tatanka
Salut Éric,

Si chaque cellule de la plage U1:Ux contient un nom
de feuille valide et s'il n'y a absolument rien sous Ux,
alors esaie ceci :

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

Serge

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1 et 2 ne sont pas concernés) à la dernière feuille mais
là aussi je sèche
D'avance merci



Avatar
RENAUD Eric
Bonjour,
Merci à tous les deux, c'est parfait

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1
et 2 ne sont pas concernés) à la dernière feuille mais là aussi je sèche
D'avance merci



Avatar
Tatanka
Salut Éric

Petite modif :

Sub Sélection_Feuilles()
Dim Feuilles()
Dim plage As Range
Set F = Sheets("Données")
Set plage = F.Range(F.[u1], F.[u65000].End(xlUp))
Feuilles = Application.Transpose(plage.Value)
Sheets(Feuilles).Select
End Sub

Serge


"Tatanka" a écrit dans le message de news:
Salut Éric,

Si chaque cellule de la plage U1:Ux contient un nom
de feuille valide et s'il n'y a absolument rien sous Ux,
alors esaie ceci :

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

Serge

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1 et 2 ne sont pas concernés) à la dernière feuille mais
là aussi je sèche
D'avance merci







Avatar
MichDenis
Un truc de même sans variable est aussi bon :

Sheets(Application.Transpose(Range("A1:A3").Value)).Select

Et pour ton code s'exécute bien peu importe la feuille active

Tu ajoutes le nom de la feuille où est ta plage
Sheets(Application.Transpose(Range("Feuil1!A1:A3").Value)).Select




"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

Bonjour,
Merci à tous les deux, c'est parfait

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1
et 2 ne sont pas concernés) à la dernière feuille mais là aussi je sèche
D'avance merci



Avatar
MichDenis
Et une dernière variante,

Si tu as donné à ta plage un NOM (menu insertion nom)

Ceci au cas où un usager puisse modifier le nom de l'onglet de la feuille !
Sheets(Application.Transpose(Range("NOM_PLage").Value)).Select



"MichDenis" a écrit dans le message de news:
%23QVQ%
Un truc de même sans variable est aussi bon :

Sheets(Application.Transpose(Range("A1:A3").Value)).Select

Et pour ton code s'exécute bien peu importe la feuille active

Tu ajoutes le nom de la feuille où est ta plage
Sheets(Application.Transpose(Range("Feuil1!A1:A3").Value)).Select




"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

Bonjour,
Merci à tous les deux, c'est parfait

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

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


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)
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


Comme solution de secours, je pourrais dire sélectionne de la feuille 3 (1
et 2 ne sont pas concernés) à la dernière feuille mais là aussi je sèche
D'avance merci