pb avec une variable et workbooks activate en vba excel

  • Auteur de la discussion littlerainbow
  • Date de début

littlerainbow

Habitué
Bonjour!
je suis débutante en vba pour excel, et j'ai un petit problème.
J'ai créé un userform qui permet de saisir dans une zone de texte le nom du classeur dans lequel se trouve ce userform. Le nom que j'ai donné à cette zone de texte est "classeur". Je voudrais ensuite me servir de "classeur" (c'est à dire le nom que j'ai saisi) dans une macro à l'intérieur d'un workbooks activate. j'ai déclaré "classeur" comme variable globale.

Le code que j'essaye et qui ne marche pas est:
Code:
Workbooks classeur.Activate
[\code]

Par contre si je met le code avec le nom de mon classeur ça marche:
[code]
Workbooks ("nomduclasseur").Activate
[\code]

Mais je voudrais ne pas avoir à préciser le nom, mais juste indiquer la variable "classeur" qui contient le nom...
Pouvez-vous m'éclairer??? merci! 
Si je n'ai pas été claire, demandez-moi des précisions...
 

zeb

Modérateur
( Pour un premier post, c'est plutôt pas mal, mais il faut mettre un / pas un \ pour fermer ta balise :lol: )

Tu as essayé ça :
Code:
  Workbooks(classeur).Activate
?
 

littlerainbow

Habitué
Oui mais ça marche pas non plus, il me dit:
"erreur d'exécution 9, l'indice n'appartient pas à la sélection".
Je ne vois pas d'où vient le problème.... je me demande si c'est avec ma variable...
 

zeb

Modérateur
Avant utilisation de ta variable, fais un
Code:
MsgBox classeur
 

littlerainbow

Habitué
J'ai essayé en mettant dans le code du userform:

Code:
msgbox classeur

et ça indique bien ce que j'ai saisi dnas le champ "classeur".
Par contre en mettant le msgbox dans le code de ma macro, il ne contient plus rien. J'ai pourtant bien déclaré ma variable Public...
 

zeb

Modérateur
grrr.... VBA est un langage de m****.
Mais on peut améliorer ça : utilise la clause suivante partout dans ton code.
Code:
Option Explicit

Tu vas t'apercevoir que classeur n'est pas connu partout dans ton programme
 

zeb

Modérateur
( Travail personnel pour littlerainbow : Rechercher dans l'aide et/ou sur la toile ce qu'est la clause explicit. Comprendre son utilité. L'utiliser systématiquement en connaissance de cause )
 

littlerainbow

Habitué
La clause explicit était déjà mise dans mon code de userform, je l'ai rajouté dans le code de la macro. (si j'ai bien compris c'est une clause qui m'oblige à déclarer mes variables de façon explicite avant de les utiliser ) et j'ai réessayé avec les msgbox: même résultat: ma variable perd son contenu....
 

littlerainbow

Habitué
Je ne trouve toujours pas l'erreur.... je ne vois pas d'où vient le problème: ma variable est déclarée Public, en dessous de Option Explicit dans mon module.
Je saisi la valeur de "classeur" dans le champ du userform, je vérifie avec un msgbox dans le code du userform: "classeur" a bien la valeur saisie. Mais dès que je lance ensuite l'éxecution de ma macro dans le module: "classeur" n'a plus de valeur, le msgbox que j'ai placé dans le code du module est vide...
 

littlerainbow

Habitué
J'ai trouvé la solution!!!
Pour ceux que ça intéresse je m'explique:
il a fallu que je déclare un nouvelle variable globale nclasseur.
Ensuite dans le Userform, j'ai rajouté à la suite du champs "classeur" un champ "extention" qui est une zone de texte contenant les caratères .xls

Puis
Code:
nclasseur=classeur+extention

A partir de ce moment, la variable nclasseur gardait bien sa valeur.

Enfin j'ai fait:
Code:
Workbooks(nclasseur).activate

Je ne sais pas pourquoi il a fallut que la variable soit issue de la somme de deux autres pour qu'elle garde sa valeur ensuite dans le module... mais je me débrouille comme ça.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 080
Membres
1 586 396
Dernier membre
theo619
Partager cette page
Haut