Rapport de message :*
 

Re: Aide sur la compatibilité

Titre du sujet : Re: Aide sur la compatibilité
par myDearFriend! le 31/12/2007 13:30:14

Bonjour PowerPlus, le Forum,

Je te rassure, ta procédure Workbook_Open() située dans ThisWorbook se lance bien à l'ouverture du classeur (à condition que l'utilisateur active bien les macros à l'ouverture du classeur )

Tout d'abord, un avis personnel : les classeurs verrouillés (avec ou sans période d'essai), je n'y crois pas. N'importe quel utilisateur un peu averti saura contourner le verrouillage de toutes façons. D'ailleurs, tu en as l'aperçu ici, si l'utilisateur n'active pas les macros à l'ouverture du classeur, ton code ne sert plus à rien... Par ailleurs, je ne suis pas trop fan non plus des applications avec période d'essai et paiement ensuite...

Concernant ton code VBA maintenant, juste quelques remarques pour l'instant (que j'espère constructives) et se limitant à la syntaxe utilisée :[list=1]
[*]Procédure Workbook_Open :
Tu devrais échanger l'expression
Application.Run "test"
par
Test
(on peut aussi utiliser l'instruction Call mais c'est inutile ici).
L'unique nom de ta macro suffit à appeler cette dernière.

[*]Procédure CommandButton1_Click :
Plutôt que
Range("secur!B11").Value
j'utiliserais
Sheets("secur").Range("B11").Value
Pour faire référence à une cellule (ou une plage de cellules) d'une feuille de calcul particulière, on cible l'objet par une expression comme : Sheets("NomDeLaFeuille").Range("ReferenceDeCellule"). On respecte ainsi la hiérarchie des objets. De même, si on veut cibler une plage dans un autre classeur, on fera :
Workbooks("NomDuClasseur").Sheets("NomDeLaFeuille").Range("ReferenceDeCellule")

[*]Procédure TextBox1_Change :
L'expression [secur!B11] équivaut à Sheets("secur").Range("F11"). Même si c'est plus court, je te conseillerais d'utiliser la seconde façon de l'exprimer. Utiliser les crochets [] revient à utiliser la méthode evaluate() qui force donc Excel à évaluer l'expression comprise entre crochets et qui, à mon avis, utilisé sans mesure, peut ralentir une application VBA (c'est un avis tout à fait personnel). Par ailleurs, pourquoi utiliser tantôt une méthode et tantôt une autre dans un même projet ?

[*]Procédure Test :
La ligne de code :
Dim nombre As Integer
devrait se trouver juste après la ligne Sub Test(). Les déclarations de variable se font toujours en début de procédure, jamais en plein milieu.
[/list]
Voilà, j'espère que ces quelques points te seront utiles.

Cordialement,