Test avant soumission ;)

laurent45

XLDnaute Occasionnel
Bonjour le Forum,

Je ne sais pas si j'ai choisi le bon Forum(Excel ou le Salon), mais je voulais vous proposer de tester mon Appli avant de la soumettre.

Déjà, cela est-il possible ?

Si oui, comment faire ?

J'en ai fait un Autoextractible, pour qu'il soit dézippé dans au bon endroit, pour un bon fonctionnement. Et en plus, il fait 5.27Mo :whistle: . On est loin des 50Ko... :lol:

J'ai juste un petit problème... Certaine fois, à la fermeture, il me plante Excel97. Oui, je sais :eek: . J'entends déjà _Thierry (et d'autre du même avis) qui doit grogner. Mais tant que Microsoft ne proposera pas des Mise à jour à moindre prix, comme beaucoup d'autre le font, plutôt que racheter une version complète à prix :eek: ...

Enfin, le propos n'était pas là...

Merci de vos réponses.

EDITION : Les modif proposées par Pascal, Hervé et Jam sont mis en place
Retrouvez mon fichier ici

Message édité par: laurent45, à: 24/11/2005 10:23
 

Hervé

XLDnaute Barbatruc
Bonsoir laurent


Je n'arrive pas à installer ton fichier (archive endommagée).

Sinon j'avais téléchargé la premiere version.

A l'installation, ton appli s'installait dans c:\\casisses, créant un bug avec le chdir de l'évenementielle open.

A la fermeture, je ne retrouve plus mes barres d'etat, formules, ascenseur, listes des onglets, et je perd la barre d'outils visual basic.

Sinon, je trouve ton application très bien faite, très soigné, avec en plus une aide conséquente.

en espérant t'avoir aidé, car tel etait le but de mon intervention.

salut
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Moi personnellement contrairement au clone d'Hervé B) tout s'est bien passé a l'install

Bon j'aime pas trop les barres qu'on enlève mais bon tu laisses la principale au cas où

Sinon ton UF s'est bien ouvert mais je n'ai pas tester le remplissage j'ai plus rien en caisse que veux-tu :) :unsure:

Sinon côté design moi j'aime bien

Bonne soirée
 

laurent45

XLDnaute Occasionnel
Bonjour Hervé, Pascal, le Forum,

Désolé Hervé :eek: , j'ai tendance à vouloir aller trop vite :S
C'est la passion ;)

J'ai fait le test comme toi, et j'ai donc réparé mon erreur :ermm: :whistle:

Merci de vos appréciation.

Ce fichier peut-il être transmis sur le Site ?
Pensez-vous que ça puisse intéresser le XLDennes et les XLDiens ?

@+
 

Jam

XLDnaute Accro
Salut Laurent, Pascal, Hervé,

Bon j'ai regardé et testé (partiellement) ton appli et voici mes quelques petites remarques:

- Install: Si tu pouvais laisser le choix de l'emplacement aux utilisateurs ce sera parfait (moins il y a de chose à la racine de C: et mieux c'est en général). Pour cela tu peux utiliser Thisworkbook.Path afin d'obtenir le chemin de ton fichier XL et gérer le reste à partir de là.
Bravo pour l'utilisation d'un installeur (l'initiative est assez rare pour être soulignée). Bien joué.

- Les barres d'outils: je partage l'avis de Pascal concernant la 'disparition' momentanée des barres d'outils. Même si ce n'est pas très grave, il arrive souvent que des utilisateurs crée une multitude de barre, et il faudrait 1: que tu les retires toutes, 2: si on bascule vers une autre feuille les rétablir ;) Et comme l'a souligné Hervé en cas de plantage tu met le bazar dans un truc qui rend souvent nerveux l'utilisateur...et il risque de pas aimé ton appli à cause de ce détail :(

- Le démarrage est assez lent: En fait j'ai remarqué que tu jouais beaucoup avec la sélection des cellules...c'est lent en général. Essaie d'utiliser des noms de cellules pour accéder directement à la ligne ou carrément via un fichier INI. De même tu pourrais avant toute chose dans Workbook_Open mettre
Code:
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
histoire d'accélerer un peu et le rétablir une fois tes manip effectuées.

- Concernant: la gestion des objets dans tes pages...please, nomme-les et utilises des boucles pour assigner leur valeur. Ton code y gagnera en lisibilité et en rapidité.

- Les variables: Tu as de nombreuses variables non utilisées dans ton code (cf fichier joint). Supprime les ou à défaut REM-les. De même tu as de nombreuses variables en Variant (beurk, beurk). Evite si possible d'utiliser ce type. C'est consommateur de mémoire et ça pénalise la vitesse.

- J'ai remarqué (je ne sais pas si c'est forcément justifié) qu'il y avait beaucoup de répétitions de code...en générale cela signifie qu'il doit y avoir un moyen de transférer cela dans une procédure à part (les événements AfterUpdate dans le userform Accueil).

- Remarque générale: La cosmétique c'est super dans un programme et c'est aussi important. Cependant elle ne doit intervenir qu'en fin de développement une fois qu'on est sur (on l'est jamais vraiment hein :lol: ) que le code est au point. (Ex. j'ai pas la zoulie icone qui apparaît dans XL).

Bon, à part cela, je trouve ton programme très bien présenté avec de bonne idées. L'utilisation des pages est assez chouette (moi qui les ai souvent détestée :( ). Ton code est assez riche et cela montre le temps que tu y as passé.

J'espère que tu ne prendras pas mal ces quelques réflexions.
Bon courage pour la suite. [file name=Variables.zip size=667]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Variables.zip[/file]
 

Pièces jointes

  • Variables.zip
    38.9 KB · Affichages: 50
  • Variables.zip
    38.9 KB · Affichages: 53
  • Variables.zip
    38.9 KB · Affichages: 52

laurent45

XLDnaute Occasionnel
Bonsoir Jam, le fil, le Forum,

Jam écrit:
J'espère que tu ne prendras pas mal ces quelques réflexions.
Je te remercie beaucoup pour tes critiques. C'est tout ce que j'attendais en ouvrant ce post.

Je vais maintenant répondre aux modifications que tu me propose.

- Install: Si tu pouvais laisser le choix de l'emplacement aux utilisateurs ce sera parfait (moins il y a de chose à la racine de C: et mieux c'est en général).
Ce que je voulais protéger, c'est pour plus tard. Je souhaite faire des sauvegardes dans un sous-dossier ('Sauvegardes') du dossier 'CaissesV2.00'.

Pour cela tu peux utiliser Thisworkbook.Path afin d'obtenir le chemin de ton fichier XL et gérer le reste à partir de là.
Je ne l'avais pas vu comme cela. Pourtant j'ai recherché un moyen de faire ça, mais sans succès.
Je n'ai pas due mettre les bon mots clés. :unsure:

Bravo pour l'utilisation d'un installeur (l'initiative est assez rare pour être soulignée). Bien joué.
C'était le meilleur moyen pour avoir mon dossier où je le souhaitais. Et puis l'ouverture d'un 'Lisez Moi', j'aime bien (ça fait pro B) )

- Les barres d'outils: je partage l'avis de Pascal concernant la 'disparition' momentanée des barres d'outils. Même si ce n'est pas très grave, il arrive souvent que des utilisateurs crée une multitude de barre, et il faudrait
1: que tu les retires toutes,
2: si on bascule vers une autre feuille les rétablir ;)
Et comme l'a souligné Hervé en cas de plantage tu met le bazar dans un truc qui rend souvent nerveux l'utilisateur...et il risque de pas aimé ton appli à cause de ce détail :(
J'ai rétablis les barres d'outils. Il n'y a que les onglets et les entêtes de colonnes et lignes, que je retire. Ils se rétablissent dès que l'on change de feuille (les entêtes).
C'est uniquement, pour que l'utilisateur ne puisse pas faire de modif sur les autres feuilles (c'était le souhait du demandeur, je peux presque dire client)

- Le démarrage est assez lent: En fait j'ai remarqué que tu jouais beaucoup avec la sélection des cellules...c'est lent en général. Essaie d'utiliser des noms de cellules pour accéder directement à la ligne ou carrément via un fichier INI. De même tu pourrais avant toute chose dans Workbook_Open mettre
Code:
With Application
    .ScreenUpdating = False
    .Calculation = xlCalculationManual
End With
histoire d'accélerer un peu et le rétablir une fois tes manip effectuées.
Pour ce qui est des sélections, je ne vois pas trop ce que tu veux dire.
En fait, j'avais commencé par faire un fichier INI, mais j'ai trop galéré avec les INPUT et OUTPUT (ou WRITE). J'ai une Aide (Excel97), qui est plus que limitée sur ce genre de sujet.
Pour le ScreenUpdating, il est vrai que j'aurais pu l'utiliser ici, alors qu'il est présent dans le reste du code...

- Concernant: la gestion des objets dans tes pages...please, nomme-les et utilises des boucles pour assigner leur valeur. Ton code y gagnera en lisibilité et en rapidité.
Que veux tu dire par nommes-les ?
Si ça concerne les TextBox de la page Chiffre, je trouvais plus simple de les gérer comme ça.

- Les variables: Tu as de nombreuses variables non utilisées dans ton code (cf fichier joint). Supprime les ou à défaut REM-les. De même tu as de nombreuses variables en Variant (beurk, beurk). Evite si possible d'utiliser ce type. C'est consommateur de mémoire et ça pénalise la vitesse.
Après utilisation de ton fichier .txt, j'ai fait le ménage. Mais pas tout :
La variable 'CvtMidi, CvtSoir, CARestMidi, CARestSoir, CAVAE5_5, CAVAE19_6'
est utilisée dans ModuleGeneral.Enregitrer.
Pour les Variant, il faut que je teste mes tableaux en Double.

- J'ai remarqué (je ne sais pas si c'est forcément justifié) qu'il y avait beaucoup de répétitions de code...en générale cela signifie qu'il doit y avoir un moyen de transférer cela dans une procédure à part (les événements AfterUpdate dans le userform Accueil).
Oui, j'avais au départ une fonction que Didier MyDearFriend m'a fait partager, mais avec un plantage de PC, je n'ai pu récupérer qu'une version97 d'Excel, et la fonction Replace ne fonctionnait plus. Comme certaines autres, que j'ai due modifier. d'où ces répétitions de code.
Je n'ai pas encore réessayé avec le Select dans les With proposé par notre Maître _Thierry.

Edition: Après réflexion (au fil du post, je réfléchi sur ce que j'ai écris avant), pour les évènements AfterUpdate, c'est pour avoir un séparateur décimal 'Français', plutôt qu'un point.

ReEdition: Replace ne fonctionne pas sous Excel97. J'ai refait des essais

- Remarque générale: La cosmétique c'est super dans un programme et c'est aussi important. Cependant elle ne doit intervenir qu'en fin de développement une fois qu'on est sur (on l'est jamais vraiment hein :lol: ) que le code est au point. (Ex. j'ai pas la zoulie icone qui apparaît dans XL).
Pour la fin du développement : il fallait que j'accélère pour mon client.
Tu n'as pas l'icône dans Excel ?
C'est pas cool !!
Vu le nombre de versions que j'en ai créées !!

Bon, à part cela, je trouve ton programme très bien présenté avec de bonne idées. L'utilisation des pages est assez chouette (moi qui les ai souvent détestée :( ). Ton code est assez riche et cela montre le temps que tu y as passé.
Un grand merci pour le temps que tu as consacré à cette critique très constructive.

Une dernière chose (pour ce soir). J'ai créé un fichier d'aide, mais je n'arrive pas à le faire prendre en compte par mon fichier.

Quelqu'un pourraît-il m'éclairer sur ce problème ?

Merci

Bonne nuit ! ;)

Edition : Toutes mes excuses Didier MDF

Message édité par: laurent45, à: 24/11/2005 15:14
 

Jam

XLDnaute Accro
Salut Laurent,

1. Concernant le nommage des controles de userform:
D'abord une petite précision: contrairement à son grand frère VB, VBA ne gère pas les index des controles (ex.: Textbox(1)). Donc pour contourner ce problème il faut nommer le control ex Textbox1 et ensuite on utilise son nom dans le code (ex.: controls('Textbox1'))

Donc quand je te parle de boucle je l'imaginais dans la lecture d'un range et de l'attribution des valeurs aux textbox. Par exemple si tes textbox son nommée de Textbox1 à Textbox10 et que tu les remplis à partir du range('A20') à range('A29').
Plutôt que d'écrire Textbox1=Range('A1') et ce 10 fois, une petite boucle fera beaucoup mieux l'affaire comme par exemple
Code:
For i=1 to 10
controls('Textbox' & i).text=Range('A' & i + 19).value
Next
Voila, en 3 lignes comment éviter d'en écrire 10 (ou plus). Autre avantage, si ton range se déplace, tu changes ou ajoute juste un paramètre (l'idéal c'est d'utiliser une plage nommée et de récupérer ses coordonnées via Range('monNom').columns, etc.) et ton code est vite (et bien) modifié. Sinon il faut que tu modifies autant de lignes que de ranges ou de controls. Cela devient vite fastidieux et source d'erreur.

2. Fichier INI
C'est pas toujours très pratique à utiliser mais une fois maîtrisé c'est tout bénéf surtout si tu utilises un installeur qui sait écrire dans l'INI.
Tu peux aussi utiliser la Registry qui est une tès bonne solution même si elle est rarement utilisée (Excel propose plusieur fonctions intégrées très simples d'utilisation). Normalement ton installeur doit savoir aussi écrire dans la registry ;)

3. Les barres d'outils:
Tu rétablis quand on change de feuille...pas de classeur :(

Voili voilou.
Je reviendrai peut-être à la charge si j'ai un peu de temps.

Bon courage

Message édité par: jam, à: 24/11/2005 11:43
 

Jam

XLDnaute Accro
Laurent,

Juste un petit truc concernant les feuilles. Tu dis vouloir cacher les barres d'outils, etc pour éviter que les utilisateurs aillent dans les feuilles. Y'a une solution toute bête: Met leur statut Visible en xlVeryHidden. Comme cela elles n'appaîtrons pas dans le menu Feuille>Afficher et resterons accessible lecture/écriture par ton code sans problème.

A+
 

laurent45

XLDnaute Occasionnel
Re Jam, le Forum,

Encore merci pour tes tuyaux Jam.

Mais pour la propriété xlVeryHidden des feuilles, je ne peux pas. J'ai des Select qui font fonctionner une fonction Sort pour la feuille CRT : Erreur !! 'GNAPP!!' :evil: comme dans la Pub.

Pour le nommage de cellules, je travaille dessus.

@+
 

Jam

XLDnaute Accro
Laurent,

Dans module CRTpage, j'ai 'optimisé' la sub suivante:

Sub AnnulerCRT()
Dim z As Byte
       
With Accueil_Form
                .CRTBox.Clear
                .SaisieCRTBox.Clear
' Vide les TextBox et les ComboBox
                .QuantiteCRTBox.Value = ''
                .TotalCRTBox.Value = '0,00'
               
For z = 0 To UBound(CRTTab, 1)
                       
With .CRTBox
                                .AddItem
                                .Column(0, z) = CRTTab(z, 0)
' Remise en place des données les saisies
                                .Column(1, z) = CRTTab(z, 1)
                       
End With
                        .SaisieCRTBox.AddItem CRTTab(z, 0), z
               
Next z
       
End With
End Sub

Hop gratos :lol:

Une question aussi:

Peux-tu me dire la différence entre :

Public Function MAJForm(T As String) As String
        MAJForm = Format(CDbl(T), '0.00')
End Function

Public Function MAJForm1(T As String) As String
        MAJForm1 = Format(CDbl(T), '0.00')
End Function
Dans le module ModuleGénéral ?

Bon courage, A+
 

laurent45

XLDnaute Occasionnel
Re Jam, le Forum,

[ol][li]Merci pour la Sub Gratos ;) [/li]

[li]Je me suis posé aussi la question !! :)
Donc => ARCHIVE :side: (poubelle)[/li][/ol]
On continue :

Pour faire des boucles de remplissage des TextBox, il faudrait que je les renomme toutes ! (si j'ai bien compris ce que tu me proposais). Et ensuite, nommer les groupes de cellules concernés, et faire des boucles pour remplir. C'est bien ça ?

Par contre, dans une plage nommée, dans quel sens sont lues les cellules. Par lignes ou par colonnes ? Ma logique voudrait que ce soit par ligne, mais je voudrais une confirmation. ;)

Merci

@+
 

Jam

XLDnaute Accro
Laurent,

Encore une petite proposition (attention je ne l'ai pas testé) pour remplacer dans le module ESPECESpage la sub InitializeESP():
- Elle montre l'histoire des boucles + le bon usage des with...end with

Sub InitializeESP()
Dim myArray As Variant
Dim i As Integer
myArray = Feuil3.Range('B26:B37').Value
With Accueil_Form
       
For i = 21 To 32
                .Controls('TextBox' & i).Value =
CInt(myArray(i - 20, 1))
       
Next
        .FondsCaisseBox.Value = MAJForm(Feuil3.Range('D41').Value)
       
If .OptionMidi Then
                .EcartESPBox.Value = MAJForm(CDbl(Feuil2.Range('B30').Value) -
CDbl(.TotalESPBox.Value))
       
End If
       
If .OptionSoir Then
                .EcartESPBox.Value = MAJForm(CDbl(Feuil2.Range('C30').Value) -
CDbl(.TotalESPBox.Value))
       
End If
End With
End Sub

A+
 

Jam

XLDnaute Accro
Laurent,

Tout à fait d'accord pour le byte un peu moins pour le variant (bon, là il s'agit plus d'une mesure de prudence...si un long ou un double vient à se glisser dans ton range il va falloir rajouter la gestion des erreurs ;)

Continue, je vois que cela rentre :woohoo: :woohoo: :woohoo:
 

Statistiques des forums

Discussions
312 492
Messages
2 088 925
Membres
103 984
dernier inscrit
maliko67