monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007
-
30 juil. 2007 à 17:10
monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007
-
31 juil. 2007 à 10:29
Hello!
Il y a un certain temps, Mpi avait résolu mon probleme de declaration de feuille Excel en global, maintenant j'ai tendance à croire que c'est la suite ( et fin) pour ce probleme de déclaration!!
Finalement, pour la déclaration de feuille j'ai créer une procédure M_Declaration, dans laquelle jai fait ma déclaration de feuilles excel.
j'apelle la procédure avant chacune de mes fonctions.
lorsque je désire changer le nom d'une feuille, j'ai juste à changer le nom dans la procédure M_Declaration.
j'aimerais avoir cette meme possibilité avec le classeur!
Voici comment est mon module de declaration:
Public wk1, wk2, wk3, wk4 As Worksheet ' feuilles
Public WB As Workbook 'classeur
Public Sub M_Declaration()
Set WK1 = Worksheets("feuill1")
Set WK2 = Worksheets("feuill2")
Set WK3 = Worksheets("feuill3")
Set WK4 = Worksheets("feuill4")
'Set WB = ActiveWorkbook 'test 1
'Set WB = Workbooks("Classeur.xls") 'test 2
'Set WB = Workbooks("C\...\Classeur.xls") 'test 3
End Sub
ensuite dans les autres procédure et fonction, je fais des appels aux feuilles ainsi:
Wb.wk1.range...
pour le test 3, la faute est dans la procédure M_declaration--> "l'indice n'appartient pas a la selection"
pour les deux tests precedant ( test 1 et test 2 ) jobtien l'erreur suivante : "propriété ou methode non géré par cet objet" .
Encore une fois, je suis à court d'idée et j'espere tombé sur un ange de l'informatique tombé du ciel...
please, angel, help me!
Monaldinho.
faites comme moi, éssayer d'éviter le coté obscur de la force
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 31 juil. 2007 à 03:14
Dans ta déclaration suivante
Public wk1, wk2, wk3, wk4 As Worksheet ' feuilles
seul wk4 est déclaré comme une WorkSheet. Les autres sont As Variant
Il faut déclarer le type pour chaque variable... On est pas en C
Public ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet, ws4 As Worksheet
Public wb1 As WorkBook, wb2 As Workbook
Maintenant que tes variables sont déclarées, tu veux les initialiser
La méthode que tu utilises pourrait éventuellement fonctionner, je pense, en autant que les feuil1 à 4 existent bien... et que te Workbooks existent aussi.
Le mieux, en tout cas le plus simple, serait d'initialiser au fur et à mesure que tu en as besoin.
Ça ne sert à rien de déclarer une panoplie de variables si tu ne les utilises pas toutes.
Un simple objet Worksheet peut être initialisé, utilisé et terminé à l'intérieur d'une même procédure. Cette méthode est souvent utilisée avec des objets Recordset. Ça ne sert souvent à rien de les traîner tout au long du programme.
Mais là, ça dépend aussi de ton programme et de l'utilité de ces variables-objets.
Si tu dois garder ces objets "vivants", commence par déclarer le Workbook
Set wb1 = Activeworkbook
ensuite le Worksheet
Set ws1 = wb1.Sheets("Feuil1")
Par la suite, un seul appel à ws1 devrait suffire (sans mettre le nom du workbook -> wb1)
Par sa déclaration ws1 est déjà "lié" à wb1
Donc,
ws1.Range("...") devrait suffire
Ne pas oublier de fermer tous ces objets et de les mettre = Nothing en terminant.
monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007 30 juil. 2007 à 18:31
re - hello !
euh... s'il vous plait, laissez des commentaires que je sache au moins si vous n'avez aucune idée de comment faire ou si vous trouvez le texte resumant mon probleme trop long au point que vous etes pas arrivés au bout...
si il est trop long, je peux le re-résumer! faut absolument qu'on me dirige car je sais vraiment pas ou aller!
merci!
Monaldinho.
faites comme moi, éssayer d'éviter le coté obscur de la force
monaldinho
Messages postés74Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention25 octobre 2007 31 juil. 2007 à 10:29
Hello !!!!
Merci de toute ces indications!
Pour tout te dire, j'ai beaucoups de procédures, dans certaines j'utilise deux feuilles Excel, dans une autre trois feuilles, des fois je suis amené à les utiliser toutes en meme temps.
J'ai fais l'initialisation comme tu me l'as conseillé et ca marche comme sur des roulettes!
Je pige pas pourquoi j'y ai pas pensé!! initialisé d'abord le classeur, puis initialisé les feuilles avec le classeur!!!
Voila comment j'ai fait cette partie de declaration :
J'ai créer une procédure M_Declaration en faisant l'initialisation comme tu me l'a proposé.
J'ai créer une procédure M_UnDeclaration dans laquelle j'ai mis tout les feuilles à "nothing"
Et en debut de procédure j'apelle "M_declaration" et En fin de procédure j'apelle "M_undeclaration"
En tout cas merci beaucoup Mpi!
Je te souhaite une exelente journée!
A++
Monaldinho
faites comme moi, éssayer d'éviter le coté obscur de la force