Assistant à l'édition de fonctions immediate if imbriquées

Soyez le premier à donner votre avis sur cette source.

Vue 7 722 fois - Téléchargée 432 fois

Description

J'ai eu l'idée de ce programme après avoir dû écrire des requêtes "sql Access" comportant des fonctions Iif imbriquées sur plusieurs niveaux. J'ai aussi le souvenir de fonctions "Si" dans Excel qui m'avaient bien fait galérer. La méthode du "copier/coller" a ses limites, il suffit d'une petite erreur dans la sélection d'une virgule ou d'une parenthèse pour que la fonction plante.

L'éditeur présenté dans cette source élimine tous les soucis de virgules et de parenthèses, il permet de créer l'imbrication dans une arborescence de fonctions, puis de récupérer le texte de l'imbrication. Il peut également afficher l'arborescence de fonctions déjà écrites et peut être paramétré pour fonctionner avec les "Iif" de VB, les "SI" d'Excel ou tout autre terme défini par l'utilisateur.

Conclusion :


J'ai mis cette source en niveau 2 parce qu'elle est difficile à mettre en oeuvre sur une nouvelle machine. Depuis sa mise en place sur le site, elle a été modifiée de façon à faciliter le rétablissement des références et le lancement de l'exécution dans l'environnement de développement. La procédure de mise en route décrite dans le fichier "A lire.txt" a été modifiée en conséquence.

Une install du programme est disponible à la page :
http://riconuch.free.fr

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
140
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
16 décembre 2006

Voilà, j'ai ajouté un paramètre "écartement des contrôles", pour cela il fallait remplacer l'écartement fixé à 250 twips dans le code par une variable dont la valeur, toujours de 250 par défaut, peut être modifiée dans la fenêtre de configuration (de 0 à 9999 twips).

En ce qui concerne un affichage vertical de l'arborescence, je pense que le plus simple serait de créer un deuxième contrôle en le dessinant en fonction d'un affichage vertical, et de réutiliser tout le code du premier contrôle en inversant les traitements des coordonnées horizontales et verticales.

Pour ce qui est de la procédure "Reorganise", j'avais été rebuté par la complexité de l'algorithme à créer pour répartir les contrôles selon plusieurs axes de symétrie. Je n'avais trouvé aucun algorithme pouvant être adapté au cours de mes recherches et toutes les solutions que j'avais envisagées nécessitaient de monter et descendre plusieurs fois l'arborescence en retouchant les emplacements, ce qui n'était décidément pas trop propre.

Pour une utilisation réelle du programme le nombre de niveaux reste limité et le calage vers la gauche de la procédure "Arrange" ne présentait pas de réel inconvénient, j'ai donc laissé tomber malgré mon "souci du détail" ;o) et je suis passé à d'autres projets. Si le coeur t'en dit de reprendre cette source et même de la redéposer après modification, elle est là pour ça.

Il y avait un bug qui pouvait survenir lors du collage d'une grosse fonction dans la fenêtre de texte, à l'affichage de l'arborescence. En effet, l'appel de la fonction GetNewPos devait se faire par le contrôle principal sans quoi une partie de l'arborescence pouvait être négligée et certains contrôles superposés. Dans la procédure "CreateCtl", la fonction "GetNewPos" doit être appelée comme suit :
lngTestPos = MasterCtl.GetNewPos(.Niveau, .Id)

Je viens de me rappeler qu'il y avait des fautes de frappe dans une boîte de dialogue que j'ai oubliées de corriger avant de télécharger le zip. Tant pis, ça sera pour la prochaine fois. Bonne prog', je suis dispo pour de l'aide dans la mesure de mon temps libre.

Amicalement,
Rico
Messages postés
140
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
16 décembre 2006

Salut JCJ, mieux vaut tard que jamais. Je suis content d'apprendre qu'au moins une personne ait pu faire fonctionner le projet. Il y a très longtemps que je ne me suis plus penché sur ce code et je suis en train de me rafraîchir la mémoire.

A+
Rico
Messages postés
3
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
2 août 2006

Hello, j'arrive après la bataille...
Bon, je suis parvenu à lancer l'appli (pas Appil), en suivant à la lettre les instructions du 'A lire.txt'.
J'ai recherché dans mes bases Access des IIF, j'ai pris le premier de niveau 5 (quand même) pour faire des tests. Tout semble fonctionner comme attendu.
Mais comme chacun a ses goûts, je voulais modifier l'écart entre les Box IIF et là, il faut rentrer dans le code de l'ocx... Malgré la clarté du code (bravo!), les passages de paramètres entre exe et ocx (et en récursif!) dépassent mon niveau
actuel en VB.
Donc je voulais suggérer les améliorations suivantes à ce source:
- pouvoir choisir l'espacement entre les box,
- pouvoir choisir entre une arboressance verticale ou horizontale,
- finir la procédure Réorganise (qui devrait remplacer/compléter Arrange).

Encore bravo pour ce code, je vais beaucoup apprendre gràce à lui et j'espère apporter moi-même les modifs suggérées.

A+ (c'est pas un nom de langage c'est pour dire à plus tard ;)
JCJ
Messages postés
140
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
16 décembre 2006

Merci Appil... Pourrais-tu me faire savoir si tu as réussi à lancer l'exécution, car pour l'instant je ne suis pas sûr que quiconque y soit arrivé...
Messages postés
208
Date d'inscription
mercredi 10 avril 2002
Statut
Membre
Dernière intervention
11 juin 2014

Iif est l'une de mes fonctions conditionnelles préférées, ta source est sûrement intéressante. D'après la capture, ça à l'air bien fait. Merci pour la source.

Bonne programmation
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.