VBA: portée des variables
Résolu
NyectoD
Messages postés
23
Date d'inscription
Statut
Membre
Dernière intervention
-
NyectoD Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
NyectoD Messages postés 23 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un premier Userform dans mon document qui demande à l'utilisateur de saisir des données de type dates et autres, à partir de ces données le code va créer un nouveau document et réaliser des opérations (copie et analyse).
A la fin de mon code, j'appelle un autre Userform pour une nouvelle saisie de données de la part de l'utilisateur dans le but de réaliser des graphiques.
Pour cela j'ai essayé d'utiliser :
Workbooks("Nomdufichier").Activate
ou Workbooks("Nomdufichier").Select
Les mêmes méthodes avec le numéro du fichier (Workbooks(2).Select/Activate) ou avec ActiveWorkBook/ThisWorkBook me renvoient la même erreur.
J'ai un retour comme quoi l'indice d'appartient pas à la sélection (Erreur 9)
Mes Sub sont définies en public tout du long car des variables peuvent être réemployées plus tard.
Comment faire pour récupérer le focus sur mon document ?
Je ne sais pas si je suis clair, je reste à disposition pour de plus amples informations si besoin.
Merci d'avance,
J'ai un premier Userform dans mon document qui demande à l'utilisateur de saisir des données de type dates et autres, à partir de ces données le code va créer un nouveau document et réaliser des opérations (copie et analyse).
A la fin de mon code, j'appelle un autre Userform pour une nouvelle saisie de données de la part de l'utilisateur dans le but de réaliser des graphiques.
Pour cela j'ai essayé d'utiliser :
Workbooks("Nomdufichier").Activate
ou Workbooks("Nomdufichier").Select
Les mêmes méthodes avec le numéro du fichier (Workbooks(2).Select/Activate) ou avec ActiveWorkBook/ThisWorkBook me renvoient la même erreur.
J'ai un retour comme quoi l'indice d'appartient pas à la sélection (Erreur 9)
Mes Sub sont définies en public tout du long car des variables peuvent être réemployées plus tard.
Comment faire pour récupérer le focus sur mon document ?
Je ne sais pas si je suis clair, je reste à disposition pour de plus amples informations si besoin.
Merci d'avance,
A voir également:
- VBA: portée des variables
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
5 réponses
Avec une analyse pas à pas détaillé, je me rends compte que ma variable n'est plus déclarée et ne possède plus de valeur.
Je continue à chercher de mon côté, j'ai déclaré ma variable en public avant l'initialisation de mon premier UserForm mais elle n'est dorénavant plus visible même dans celui ci.
J'ai mis
Public NomCplt As String
Plus tard dans mon code, je lui donne une valeur de cette manière
NomCplt = Nom & "texte variable"
En pas à pas, la variable NomCplt n'est plus déclarée et ne renvoie rien.
Quelqu'un a une piste pour moi ?
J'ai mis
Public NomCplt As String
Plus tard dans mon code, je lui donne une valeur de cette manière
NomCplt = Nom & "texte variable"
En pas à pas, la variable NomCplt n'est plus déclarée et ne renvoie rien.
Quelqu'un a une piste pour moi ?
Salut,
Ou déclares tu ta variable NomCplt ? Dans un programme, dans un module ?
Sinon je comprend pas très ton problème... Quelle ligne de code provoque ton erreur ?
Je te propose de mettre ton fichier de manière anonymisé pour mieux comprendre les problèmes que tu rencontrent a l'aide de www.cjoint.com
Ou déclares tu ta variable NomCplt ? Dans un programme, dans un module ?
Sinon je comprend pas très ton problème... Quelle ligne de code provoque ton erreur ?
Je te propose de mettre ton fichier de manière anonymisé pour mieux comprendre les problèmes que tu rencontrent a l'aide de www.cjoint.com
Bonjour,
J'ai vu ton message hier mais impossible de me connecter pour répondre.
J'ai continué mes recherches durant un moment et j'ai finis par résoudre le problème. Cela venait du fait que ma variable NomCplt état déclarée dans mon premier Userform et non dans le module.
L'erreur était que l'objet était introuvable, en l'occurrence ma variable NomCplt qui n'était pas considérée comme existante.
J'ai trouvé ce site, en autres (en anglais) qui m'a éclairé.
http://www.cpearson.com/excel/codemods.htm
Je remercie aussi michel_m pour avoir déplacé mon message, je pense qu'il sera plus à sa place ici, et pour son message de 2008 sur le sujet sur lequel je bloquais.
J'ai vu ton message hier mais impossible de me connecter pour répondre.
J'ai continué mes recherches durant un moment et j'ai finis par résoudre le problème. Cela venait du fait que ma variable NomCplt état déclarée dans mon premier Userform et non dans le module.
L'erreur était que l'objet était introuvable, en l'occurrence ma variable NomCplt qui n'était pas considérée comme existante.
J'ai trouvé ce site, en autres (en anglais) qui m'a éclairé.
http://www.cpearson.com/excel/codemods.htm
Je remercie aussi michel_m pour avoir déplacé mon message, je pense qu'il sera plus à sa place ici, et pour son message de 2008 sur le sujet sur lequel je bloquais.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bon en fin de compte, je n'ai fait que déplacer le problème... *joie*
Je mets plus d'infos ici,
Je déclare ma variable NomCplt en public dans un module,
Sa valeur est fonction des données saisies par l'utilisateur dans mon premier Userform.
Le code de mon premier Userform récupère des données (variables) de classeurs fermés pour les copier dans un nouveau classeur (créer pour l'occasion) pour les analyser. Cette partie fonctionne, mes tests ne me renvoient plus d'erreurs.
A la fin de mon code, j'appelle un autre UserForm pour que l'utilisateur décide quels sont les graphiques qu'il veut voir apparaître.
C'est dans cet autre UserFrom que se pose mon soucis.
Je désire pour le moment, uniquement insérer un graphique vide dans un onglet spécifique du nouveau fichier dans lequel je pourrais insérer des données plus tard.
Me renvoie une erreur 1004 : Erreur définie par l'application ou par l'objet
Me renvoie une erreur 13 : Incompatibilité de type
Après je n'utilise surement pas la bonne méthode pour créer un graphique mais je dois avouer que je trouve la documentation en ligne assez floue.
Idée subsidiaire :
Est ce que si j'appelle mon deuxième Userform pour connaitre les graphiques que désire l'utilisateur et que je continue mon code dans le premier UserForm cela devrait fonctionner ?
Désolé de facto d'avoir de-résolu le sujet.
Je mets plus d'infos ici,
Je déclare ma variable NomCplt en public dans un module,
Sa valeur est fonction des données saisies par l'utilisateur dans mon premier Userform.
Le code de mon premier Userform récupère des données (variables) de classeurs fermés pour les copier dans un nouveau classeur (créer pour l'occasion) pour les analyser. Cette partie fonctionne, mes tests ne me renvoient plus d'erreurs.
A la fin de mon code, j'appelle un autre UserForm pour que l'utilisateur décide quels sont les graphiques qu'il veut voir apparaître.
C'est dans cet autre UserFrom que se pose mon soucis.
Je désire pour le moment, uniquement insérer un graphique vide dans un onglet spécifique du nouveau fichier dans lequel je pourrais insérer des données plus tard.
Sub BtnValider_Click() Dim Graph As Chart xlBook.Sheets("Graphs").Range(1, 1).Select Charts.Add
Me renvoie une erreur 1004 : Erreur définie par l'application ou par l'objet
Workbooks(NomCplt).Sheets("Graphs").Range(1, 1).Select Charts.Add
Me renvoie une erreur 13 : Incompatibilité de type
Après je n'utilise surement pas la bonne méthode pour créer un graphique mais je dois avouer que je trouve la documentation en ligne assez floue.
Idée subsidiaire :
Est ce que si j'appelle mon deuxième Userform pour connaitre les graphiques que désire l'utilisateur et que je continue mon code dans le premier UserForm cela devrait fonctionner ?
Désolé de facto d'avoir de-résolu le sujet.
Merci pour la correction, j'ai tendance à toujours confondre ces deux points.
En corrigeant, cela donne
J'ai donc une erreur 91 : variable objet ou variable de bloc with non définie
Dans l'autre cas (corrigé lui aussi), toujours le même problème. (Erreur 13).
Merci encore de se pencher sur mon problème.
En corrigeant, cela donne
xlBook.Sheets("Graphs").Range("A1").Select Charts.Add
J'ai donc une erreur 91 : variable objet ou variable de bloc with non définie
Dans l'autre cas (corrigé lui aussi), toujours le même problème. (Erreur 13).
Merci encore de se pencher sur mon problème.