OVH Cloud OVH Cloud

Array

1 réponse
Avatar
EG
QUESTION 1 DE EG

Bonjour,

J'ai un fichier avec plusieurs feuilles (environ 60) dont=20
une feuille qui sert de s=E9lecteur. Dans cette feuille,=20
l'utilisateur choisi le ou les rapports d=E9sir=E9s et=20
pr=E9visualise ou imprime ces rapports.

J'ai essay=E9 avec l'outil des macros et voici ce que=20
l'outil me retourne.
Sheets(Array("TR01", "TR03", "TR05", "TR07")).Select
=C7a fonctionne.

Par contre, =E9tant donn=E9 que je ne sais pas les feuilles=20
que l'utilisateur choisira, j'ai =E9crit une proc=E9dure qui=20
me retourne ceci.
strFeuille =3D ""TR01", "TR03", "TR05", "TR07""
(o=F9 le premier et le dernier " provient du fait que ma=20
variable est de type string)
et je passe ensuite la commande suivante
Sheets(Array(strFeuille)).Select
mais l'application me retourne un message d'erreur que=20
voici=20
L'indice n'appartient pas =E0 la s=E9lection.

Je crois que c'est le type de variable choisi qui cause=20
le probl=E8me.

Pouvez-vous m'aider ?

Merci =E0 l'avance.

R=C9PONSE DE J-Dan

bonjour EG,

je ne saisis pas le lien entre le choix d'une page par=20
l'utilisateur et la ligne suivante :

Sheets(Array("TR01", "TR03", "TR05", "TR07")).Select
qui en selectionne 4. Mais tu peux corriger la suite :

Dim strFeuille as Variant (c'est un tableau)
strFeuille =3D Array("TR01", "TR03", "TR05", "TR07")
Sheets(strFeuille).Select 'pour selectionner les 4
Sheets(strFeuille(2)).Select 'pour selectionner la 3 =E8me.

Cela te convient-il ?

bon courage

QUESTION 2 DE EG

Bonjour,

Le lien avec le choix de l'utilisateur c'est que je ne=20
sais pas quel page il va choisir alors =E7a peut =EAtre TR08=20
et TR10 ou d'autres pages. De plus, il peut en choisir=20
une ou plusieurs. Alors je veux mettre dans mon Array=20
les pages que l'utilisateur aura choisi.

Avez-vous une autre solution ?

1 réponse

Avatar
J-Dan
EG,

Le lien avec le choix de l'utilisateur c'est que je ne
sais pas quel page il va choisir alors ça peut être TR08
et TR10 ou d'autres pages. De plus, il peut en choisir
une ou plusieurs. Alors je veux mettre dans mon Array
les pages que l'utilisateur aura choisi.


Pour detecter le choix de l'utilisateur, tu peux creer
avec les outils Visual Basic un combobox (zone de liste
modifiable in french) que tu positionnes dans la
page "qui te sert de selecteur" que j'ai appellee "menu".
Sur l'onglet de cette page, tu fais un clic droit -
"visualiser le code" et tu colles ceci :


Option Explicit
Dim num As Integer
Dim NomFeuille As String
Dim FeuillesTraitees() As Variant

Private Sub ComboBox1_Click()
NomFeuille = ComboBox1.Text
Sheets(NomFeuille).Select
Tableau_des_feuilles_utilisees
End Sub

Private Sub Tableau_des_feuilles_utilisees()
num = num + 1
ReDim Preserve FeuillesTraitees(num)
FeuillesTraitees(num) = NomFeuille
Cells(num, 1) = FeuillesTraitees(num)
End Sub

Toujours dans l'editeur VB, tu double-cliques dans
l'explorateur de projet (sur ta gauche) sur ThisWorkbook
et tu colles ceci :

Private Sub Workbook_Open()
With Sheets("menu").ComboBox1 'tu adaptes "menu" au nom
de ta feuille
.Text = "choisissez une feuille"
For i = 2 To Worksheets.Count
.AddItem Sheets(i).Name
Next
End With
End Sub

tu enregistres ton classeur.(sous un nom different ...)

L'onglet de ta feuille "menu" devra etre positionne a
gauche.
Le tableau FeuillesTraitees sera exploite dans le module
Feuilx(menu)

D'autres manieres de traiter ton probleme existent. Ceci
est un exemple de ce qui est faisable, il en existe
d'autres, a toi de l'adapter

Attention au soufflage de bronches en ce qui concerne les
messages dissemines hors de leur ficelle d'origine ;-))))

J-Dan