Passer un nom de feuille en variable - VB/VBA/VBS - Programmation
Marsh Posté le 13-06-2006 à 19:17:26
essaie avec ça
If UserForm1.OptionButton1 = True Then mafeuille = "feuil1"
If UserForm1.OptionButton2 = True Then mafeuille = "feuil2"
If UserForm1.OptionButton3 = True Then mafeuille = "feuil3"
Sheets(mafeuille).Select
Marsh Posté le 13-06-2006 à 19:22:21
Et avec qu'un If
For opt = 1 To 3
If Controls("OptionButton" & opt) = True Then mafeuille = "feuil" & opt
Next opt
Sheets(mafeuille).Select
Marsh Posté le 14-06-2006 à 09:40:11
3 lignes de « If ... » et trois syntaxes différentes pour faire la même chose. Et aucune n'est correcte à 100%.
« Workbook.Sheets("Feuil1" ) » et « Worksheets.Sheets("Feuil1" ) » sont incorrectes et justifient le message que tu as eu.
« Sheets("Feuil3" ) » peut fonctionner dans certains cas en fonction du Workbook actif.
Mais de toute façon la syntaxe correcte d'affectation d'un objet nécessite le mot clé « Set » :
Set Feuille = ActiveWorkbook.Sheets("Feuil3" )
ou
Set Feuille = WorkBooks("monWorkBook" ).Sheets("Feuil3" )
Ce code permet de passer l'objet Feuille en paramètre et pas seulement son nom.
Voir le code de e2prom pour passer seulement le nom (avec maFeuille déclaré de type String)
Marsh Posté le 14-06-2006 à 10:09:20
OK, merci ca passe maintenant, mais un autre pb est apparu sur la construction des graphes, avec ces lignes:
ActiveChart.SetSourceData Source:=Sheets(mafeuille).Range("A1" )
ActiveChart.Location Where:=xlLocationAsObject, Name:=mafeuille
J'ai essayé avec et sans "", mais il met "Incompatibilité de type".
Il s'agit d'un pb de conditions sur les variables passées en paramètre de Sheets?
Marsh Posté le 14-06-2006 à 10:11:12
OK tegu j'avais pas eu ton message
Effectivement ca doit pouvoir résoudre mon nouveau pb
Je vais essayer
merci
Marsh Posté le 14-06-2006 à 10:29:21
Rectification:
Effectivement les 3 lignes étaient <>, mais c'est parce que j'ai fait des tests, et meme la syntaxe set feuille machin n'a pas marché. Mais je crois savoir pourquoi: mes If sont dans le commandbar de UserForm2, alors que mes graphes sont dans un module. du coup, il ne transmet pas la valeur Feuille au graphe. Coment faire pour la rendre publique.
Marsh Posté le 14-06-2006 à 10:33:10
Pour déclarer une variable publique il faut le faire dans un module avec le mot clé Public :
Public Feuille As WorkSheet
Marsh Posté le 14-06-2006 à 11:52:00
OK, mais je l'ai déjà essayé, sans résultat. Dans mon module, la variable reste à Nothing.Dans mon If-set de mon bouton, au debugger, il met met bien "Vrai" ou "Faux", mais quand je passe les memes If-set dans le module, il laisse tout à "Faux"...
Marsh Posté le 14-06-2006 à 11:57:10
En fait il me met "Attribut incorrect dans une procédure Sub ou function...
Marsh Posté le 13-06-2006 à 16:40:57
Bonjour,
Je suis débutant en VBA et j'ai un pb avec une macro : j'ai un userform avec des boutons d'option et j'aimerais que le choix d'une option me permette de passer en variable le nom d'une feuille de classeur pour ensuite y insérer des graphiques... Mais qd je fais:
Dim Feuille As Worksheet
If UserForm2.OptionButton1 Then Feuille = Workbook.Sheets("Feuil1" )
If UserForm2.OptionButton2 Then Feuille = Worksheets.Sheet("Feuil2" )
If UserForm2.OptionButton3 Then Feuille = Sheets("Feuil3" )
dans mon commandbutton de UserForm2, il me met:
"Membre de méthode ou de données introuvable"
Qln peut-il m'aider svp? Est-ce une erreur de syntaxe? est-ce une erreur de "placement de code"?