Difficulté pour utiliser une variable avec application.run

Goufra

XLDnaute Occasionnel
Bonsoir à vous,

J’avance à pas de géant d’escargot !
Deux problèmes que je n’arrive pas à résoudre.

1/ variable avec application.run

code 1 ne fonctionne pas :
lancement = Range("j9").Value
Application.Run lancement
La valeur de la cellule J9 est : "'Contrôle2 en cours.xls'!ShowUserForm2"

En remplaçant J9 par l'expression "'contrôle .... " directement dans la macro cela fonctionne soit après application.run soit en se servant de la variable lancement !

Ainsi le Code 2 fonctionne !
La cellule J9 a été copiée dans la macro après run
Application.Run "'Contrôle2 en cours.xls'!ShowUserForm2"

Le Code 3 fonctionne aussi !
lancement = "'Contrôle2 en cours.xls'!ShowUserForm2"
copié / collé après le signe égal de la cellule j9 "'Contrôle2 en cours.xls'!ShowUserForm2"
Application.Run lancement

J’ai besoin d’une variable pour utiliser différents fichiers dont l’un d’entre eux se nomme : Contrôle2 en cours.xls

Je suis perplexe …. Depuis 2 ou 3 heures …. si vous pouviez m’aider et trouver une soulution pour utiliser la variable lancement = range("n2").value


2/ Problème pour concaténer.
La cellule N2 est obtenue par concaténation, Je suis toutefois obligé de bidouiller. Le signe ‘ avant et après - Contrôle2 en cours.xls - n’apparaît pas ! cf fichier joint cf cellule J1

La totale ! je me noie certainement dans un verre d’eau !!!!!

Au fait j’ai excel 2002

D’avance merci aux insomniaques !
Cordialités xldiennes.
 

Pièces jointes

  • goufra.xls
    26.5 KB · Affichages: 86
  • goufra.xls
    26.5 KB · Affichages: 93
  • goufra.xls
    26.5 KB · Affichages: 88

JNP

XLDnaute Barbatruc
Re : Difficulté pour utiliser une variable avec application.run

Bonjour Goufra :),
Vu qu'il n'y a pas une ligne de code dans ton fichier, pas facile de t'aider...
Pour l'apostrophe, si tu utilises CAR(39) au lieu de ', ça devrait le faire. Le problème est que ' est la façon de forcer une cellule au format texte, donc elle disparait du résultat de la cellule...
Pour le passage de variable, le plus simple, c'est d'utiliser Call
Code:
Sub Lancement(ALancer as String)
ALancer.Open
End Sub
Sub Test
Fichier = "Test.xls"
Call Lancement(Fichier)
End Sub
Bon courage :cool:
 

Goufra

XLDnaute Occasionnel
Re : Difficulté pour utiliser une variable avec application.run

Bonjour JNP,

Merci au lève tôt ou couche tard que tu es !

Je suis désolé mais j’ai encore tout faux !!!!

J’ai inséré en fin de la macro que j’utilise depuis le classeur - pilote- c'est le nom de sa variable


Windows(clas).Activate ' FICHIER CONTENANT LE USERFORM
Sheets ("index").Activate


Call lancement(clas)
End sub
nota je crois avoir compris que : lancement ="showuserform2"



Puis j’ai inséré dans le même module avant ma macro :

Sub Lancement(ALancer As String)
ALancer.Open
End Sub

J'obtiens erreur de compilation

J’ai joint le fichier goufra suite pour que tu puisses constater ce que j’ai écrit dans la macro que j’ai insérée. Elle contient des bouts de la macro que j’utilise.

J’ai 2 fichiers ouverts j’utilise 2 variables pour aller de l’un à l’autre..

Windows(pilote).Activate

Windows(clas).Activate

A partir du fichier pilote je veux lancer un userform dans le fichier clas

J'espère avoir été clair ..... ce n'est pas évident de s'expliquer.

Concernant l'utilisation de car(39) pour mon pb de ', je ne sais pas faire, aurais-tu un lien ou un tuto pour que je puisse comprendre, j'ai cherché sans succès avec CAR(39) ou CAR rien.

Bref je ne suis pas doué du tout et je te remercie pour l'attention que tu me portes.
Cordialement
 

Pièces jointes

  • goufra suite.xls
    31 KB · Affichages: 79
  • goufra suite.xls
    31 KB · Affichages: 88
  • goufra suite.xls
    31 KB · Affichages: 86

Goufra

XLDnaute Occasionnel
Re : Difficulté pour utiliser une variable avec application.run

Bonsoir JNP,

Je suis toujours coincé
Je n'ai toujours pas la réponse pour utiliser une variable et n'ai toujours pas réussi à faire fonctionner ton code.

1/ Un début de réponse
insérer au dessus de la macro du classeur 1 que j'utilise pour lancer la macro dans un classeur 2 :
Public MyVar As String
après
myvar="'Contrôle2 en cours.xls'!ShowUserForm2"
puis
application.run myvar
cela fonctionne. une progression par rapport à mes débuts ..... mais ce n'est pas une variable utilisable à partir d'une feuille.

Mais si j'écris au bon endroit ds la macro Myvar = Range("e10") par exemple j'obtiens une erreur 9 :

L'indice n'appartient pas à la sélection

J'ai essayé de mettre la variable dans le classeur 2 et de la définir ds ma macro au bon endroit j'obtiens le même bugmême bug

2/ pour le car(39) il fallait utiliser le signe égal !!!


Dans l'attente bien cordialement.
 

Goufra

XLDnaute Occasionnel
Re : Difficulté pour utiliser une variable avec application.run

Bonsoir SKOOBI,

Je te remercie pour ton aide à venir.

Je souhaite donc pouvoir utiliser une variable pour ouvrir le classeur Qcm puis lancer la macro showuserform2 les deux opérations à partir de Pilote.

La solution qui consiste à utiliser VBA project à partir de outil puis cocher références pour le 2 ème ne me convient pas. J'ai besoin de pouvoir utiliser une variable.


Nota l'onglet copier permet de définir le nom des deux classeurs et le chemin
Navré j'ai été long mais il m'a fallu dégraisser les deux fichiers.

Avec mes remerciements
Cordialement
 

Pièces jointes

  • pilote.xls
    66 KB · Affichages: 97
  • QCM.xls
    138.5 KB · Affichages: 103
  • pilote.xls
    66 KB · Affichages: 85
  • QCM.xls
    138.5 KB · Affichages: 78
  • pilote.xls
    66 KB · Affichages: 84
  • QCM.xls
    138.5 KB · Affichages: 90

skoobi

XLDnaute Barbatruc
Re : Difficulté pour utiliser une variable avec application.run

Bonjour Goufra,

La solution qui consiste à utiliser VBA project à partir de outil puis cocher références pour le 2 ème ne me convient pas. J'ai besoin de pouvoir utiliser une variable.
?!? :confused:

Enlève les guillemets en C6 dans le classeur QCM feuille index:
Code:
[B][SIZE=5][COLOR=red]"[/COLOR][/SIZE][/B]'QCM.xls'!ShowUserForm2[B][SIZE=5][COLOR=red]"[/COLOR][/SIZE][/B]

puis modifie le code comme ceci:

Code:
MyVar = [B][COLOR=blue]"'"[/COLOR][/B] & Range("c6").Value                   '    "'Contrôle2 en cours.xls'!ShowUserForm2"
Application.Run MyVar

Test et dis-nous.
 
Dernière édition:

Goufra

XLDnaute Occasionnel
Re : Difficulté pour utiliser une variable avec application.run

Bonsoir SKOOBI,

Je te remercie tu m'enlèves une épine du pied.
Commet disent les anglais, what a pity ! Bref le nez dans le guidon puis après cela devient évident ... quand une bonne âme vient t'aider.

Je pense que tu dois connaître le code auquel je faisais allusion précédemment , je l'ai trouvé dans mes recherches sur le forum du site.

Il s'agit de lancer les macros du classeur 2 depuis le classeur1 les doigts dans le nez !
1/ Classeur 2 (ici QCM )
Alt F11 puis Menu Outils / Propriétés de VBAproject / nom du projet : mettre un nom à la place de vbaproject (Etude par exemple)

2/ Classeur 1 (ici pilote)
Alt f11 puis Menu outils / Références / dans le tableau propsé cocher la case contenant Etude (dans cet exemple)

Tu peux ensuite appeler depuis le classeur 1 (pilote) les macros du classeur 2 ( QCM )

Avec mes plus vifs remercements
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 178
Messages
2 085 984
Membres
103 079
dernier inscrit
sle