Passer le nom d'une feuille Excel dans une variable
Bonjour, voici mon problème :
Je souhaite créer une forme sur une des 5 feuilles de mon fichier excel via une macro, la feuille qu'il faut sélectionner est renseignée dans un fichier texte:
je lis le fichier texte, je récupère la valeur (1,2,3,4 ou 5) puis en fonction de cette valeur je dois sélectionner la feuille adéquate (Feuil1,Feuil2,Feuil3,Feuil4 ou Feuil5).
Voici le code utilisé (sélection de la feuille) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| If sheet = 1 Then
sheet_name = "Feuil1"
ElseIf sheet = 2 Then
sheet_name = "Feuil2"
ElseIf sheet = 3 Then
sheet_name = "Feuil3"
ElseIf sheet = 4 Then
sheet_name = "Feuil4"
ElseIf sheet = 5 Then
sheet_name = "Feuil5"
End If
'Ajout de formes automatique (Rectangle) dans la feuille
With sheet_name.Shapes.AddShape(msoShapeRoundedRectangle, 10, coord1, 80, 85)
.Name = "P0" & Project 'shape name
.TextFrame.Characters.Text = Project 'inside Text
.Fill.ForeColor.RGB = RGB(180, 130, 20) 'inside color
End With |
Mon problème c'est que la variable qui contient le nom de la feuille est de type String, j'ai déja essayé d'utiliser un type Worksheets en écriant sheet_name = worksheets("Feuil1").select mais ça ne marche pas non plus.
Ce code fonctionne uniquement quand je remplace sheet_name par le nom de la feuille directement (Feuil1 par exemple):
Code:
1 2 3 4 5
| With Feuil1.Shapes.AddShape(msoShapeRoundedRectangle, 10, coord1, 80, 85)
.Name = "P0" & Project 'shape name
.TextFrame.Characters.Text = Project 'inside Text
.Fill.ForeColor.RGB = RGB(180, 130, 20) 'inside color
End With |
Auriez-vous une idée de comment faire pour régler ce problème ? Sans avoir à copier 5 fois la même chose pour chaque feuille dans un mega IF :weird:
Merci d'avance pour votre aide