Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1151 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Passer un nom de feuille en variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Passer un nom de feuille en variable

n°1386710
Rom168
Posté le 13-06-2006 à 16:40:57  profilanswer
 

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"?

mood
Publicité
Posté le 13-06-2006 à 16:40:57  profilanswer
 

n°1386882
e2prom
Posté le 13-06-2006 à 19:17:26  profilanswer
 

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

n°1386887
e2prom
Posté le 13-06-2006 à 19:22:21  profilanswer
 

Et avec qu'un If
 
For opt = 1 To 3
    If Controls("OptionButton" & opt) = True Then mafeuille = "feuil" & opt
Next opt
Sheets(mafeuille).Select

n°1387114
tegu
Posté le 14-06-2006 à 09:40:11  profilanswer
 

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)


Message édité par tegu le 14-06-2006 à 09:41:55
n°1387142
Rom168
Posté le 14-06-2006 à 10:09:20  profilanswer
 

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?

n°1387144
Rom168
Posté le 14-06-2006 à 10:11:12  profilanswer
 

OK tegu j'avais pas eu ton message
Effectivement ca doit pouvoir résoudre mon nouveau pb
Je vais essayer  
merci

n°1387161
Rom168
Posté le 14-06-2006 à 10:29:21  profilanswer
 

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.

n°1387165
tegu
Posté le 14-06-2006 à 10:33:10  profilanswer
 

Pour déclarer une variable publique il faut le faire dans un module avec le mot clé Public :
Public Feuille As WorkSheet


Message édité par tegu le 14-06-2006 à 10:33:54
n°1387264
Rom168
Posté le 14-06-2006 à 11:52:00  profilanswer
 

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"...

n°1387269
Rom168
Posté le 14-06-2006 à 11:57:10  profilanswer
 

En fait il me met "Attribut incorrect dans une procédure Sub ou function...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Passer un nom de feuille en variable

 

Sujets relatifs
[Vb.NET et Sharepoint] Usercontrol et variable de session (Résolu)array_filter + transmission de variable dans une fonction callback
feuille excel dans vbPb variable bool
[JavaScript] Récupérer une variable serveur[Résolu] Générer une variable
variable php sql[Flash / AS / C#.NET] Comment recuperer une variable?
url rewriting: erreur404, pb de variablegénerer graphique sur une feuille R2SOLU
Plus de sujets relatifs à : Passer un nom de feuille en variable


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR