UN RÉPERTOIRE TÉLÉPHONIQUE PERSONNEL, PUISSANT ET INTUITIF

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 - 22 juil. 2012 à 14:56
cs_laslawzibeu Messages postés 2 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 15 septembre 2012 - 15 sept. 2012 à 17:05
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54460-un-repertoire-telephonique-personnel-puissant-et-intuitif

cs_laslawzibeu Messages postés 2 Date d'inscription vendredi 15 mai 2009 Statut Membre Dernière intervention 15 septembre 2012
15 sept. 2012 à 17:05
l'homme n'est pas fait pour penser mais plutôt à réfléchir. "Laslaw Zibeu NDIAYE"
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
9 août 2012 à 15:18
Ouch, l'optimisation est trop chiante à faire, tout comme l'utilisation du lostfocus, pour un bénéfice discutable... Il y a sûrement des choses à faire pour ça aille plus vite et mieux, mais on va gagner des clopinettes pour des heures de boulot.

En ce qui concerne le modem, ça y est, j'ai intégré le test et modifié quelque peu l'allure de la fenêtre. Je n'ai plus qu'à répercuter tout ça dans l'aide : je mettrai le tout en ligne dès que ces modifs seront faites.

Merci pour le chapeau, mais attention à la poussière...
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
9 août 2012 à 13:57
Pour le lostfocus je ne voulais pas parler des erreurs eventuelles, ca comme tu le dis tu le traite au moment de la validation et c'est suffisant, j'ai bien compris l'idée.
Non, ce que je voulais dire, c'est seulement de faire apparaitre juste le traitement des majuscules, du coup l'utilisateur dès la première saisie est au courant qu'il y a traitement et du coup il n'essai plus de gérer manuellement. Rien d'une procédure obligée à cet endroit, tu fais comme tu le sens...
Sinon l'ensemble est plus que correct, il y a bien quelques procédures a optimiser, mais ce ne serait peut-être même pas percu par l'utilisateur final, l'application se suffit donc à elle même, digne d'une appli commerciale, chapeau bas...
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
9 août 2012 à 10:50
je ne sais pas trop ce qui se passe mais certains messages n'apparaissent plus (ici les 4 derniers), quand j'y accède depuis le mél d'information d'ajout d'un commentaire : je les ai vus hier et aujourd'hui ils ne sont plus là... Le plus curieux c'est que, quand je recharge le zip, je retrouve toutes mes billes !

Pour JLN : le plantage vient d'un bout de code qui aurait dû sauter mais que j'ai oublié là : dans toutes mes procédures un contrôle de présence est fait avant d'ouvrir un fichier et c'est facile à vérifier en faisant une recherche sur les instructions Open. En revanche, c'est vrai que je ne testais pas les fichiers de longueur 0 mais, s'agissant de fichiers de service, si on tombe sur ce cas, c'est qu'on a bricolé ce qui n'aurait pas dû l'être. Alors, mea culpa pour l'oubli de ce bout de code.

Tout est corrigé, en attendant la suite des coups de bâton.

Pour le lostfocus, je ne vois pas bien son intérêt : quand il y a erreur, la validation le signale. De plus, il ne fonctionne que quand on clique ailleurs et ça risque de désorienter : en général, quand il y a un message d'erreur, on a souvent tendance à ne se focaliser que sur ce qu'on était en train de faire et non sur ce qu'on a fait avant, même si le message est parfaitement clair, si tant est qu'il est lu...

Pour ce qui est de ta suggestion de modification du code destiné au modem, je l'ai prise en compte : la modification est faite. Pour le test du modem, j'ai une appli qui contient cette fonctionnalité et je vais ajouter son code au répertoire : elle provient d'un source pris ici et mis en forme selon mon goût.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
8 août 2012 à 14:32
J'ai par le passé développé des applis dans mon boulot (jeune retraité) necessitant l'utilisation de modem, je te donnes des tuyaux sur certaines choses à faire avant d'utiliser un modem compatible protocole AT cela évite les plantages du modem et de la machine et ces paramètres fonctionnent sur la plupart des modems AT.

Initialisation du modem (à faire à chacune des prises de main) ==> "ATV1Q0&A1&K6&R\N"
Pour numéroter (mais ca tu l'utilises déjà) ==> "ATDT"
Pour raccrocher ==> "+++ATH0"
Tester la présence (et le type) ==> "AT/I&V"
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
7 août 2012 à 10:40
Si tout de même, lors d'un lancement, j'ai utilisé le bouton "Consulter un annuaire" et là on se heurte à l'absence du fichier Nagigateur.rep tu devrais avoir plus de rigueur sur la présence et la taille des fichiers (le fichier peut être là mais de taille zero). Quand je dis rigueur, j'entend par là que le programme vérifie la présence et avant d'utiliser, vérifie la véracité des données (quelques fois la vérification de la taille suffit) Tu peux prévoir la création automatique des fichiers absents avec un contenu par défaut par exemple (pas forcément toujours possible, à voir...) Les champs nom et prénom mettent bien les majuscule où il faut, mais tu peux aussi utiliser le lostfocus pour que l'utilisateur puisse voir avant validation... Comme je te l'ai dis, demain je teste vraiment et je reviens ici donner mon avis.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
7 août 2012 à 10:11
Pour jacques-antoine
Pour moi qui fait de la domotique avant même que ce mot ne veuille dire quelques choses pour le commun des mortels, la disparition du port parallèle est la pire chose qui soit arrivé, car les cartes et cordons du commerce vendus pour soit disant palier à ce manque ne le sont pas. Ces interfaces ne peuvent être reliées qu'a une imprimante.
J'en viens à ton applis, je teste vraiment demain (pas encore le temps aujourd'hui) mais c'est promis, je viens mettre mon avis dès que c'est fait.
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
7 août 2012 à 09:50
pour ghuysmans99

J'ai quand même modifié en fonction de la remarque et le chemin complet figure à présent dans l'adresse, mais on ne tombe sur cet os que quand on utilise Internet Explorer, une connerie de plus de ce navigateur à la noix qui, quand le chemin n'est pas complet, ajoute http:// devant, une hérésie contraire à toutes les règles : un fichier n'est pas une adresse de site, il est local relativement à une application elle-même locale, sauf spécification contraire dûment définie dans l'adresse, en faisant figurer le nom du protocole http://... De ce point de vue, Firefox et Safari fonctionnent parfaitement, eux.
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
7 août 2012 à 08:44
J'avais testé l'aide en ne modifiant pas l'arborescence...
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
6 août 2012 à 10:30
pour ghuysmans99

Je ne mets jamais Option Explicit parce que je déclare systématiquement toutes les variables que j'utilise : celles déclarées en global commencent toutes par une majuscule qui les distingue des autres, les constantes sont totalement en majuscules et le tout est placé dans un module séparé du reste (.bas). Chacun a ses petites habitudes et les miennes me permettent d'avoir un code "propre", évident à lire donc à mettre au point (je sais immédiatement où ma variable est déclarée) et les commentaires plus qu'abondants.

Je n'ai que Windows XP pro, je ne peux donc tester que sous ce système. De plus, l'adresse dans la barre du navigateur devrait être de la forme

file:///[C:/]Aide_repertoire/Aide_repertoire.html
et non
http://Aide_repertoire/Aide_repertoire.html
qui suppose que l'exécutable se trouve sur un site Internet.

Pour que l’affichage de l'aide se fasse, il suffit que le répertoire d'aide soit sous celui de l'exécutable, ce qui me paraît tomber sous le sens, libre à qui le veut de modifier ce schéma et donc de modifier le source en conséquence...

J'ai ajouté au zip un fichier Lisez-moi qui donne les indications nécessaires relativement à l'arborescence attendue. Ce fichier était présent autrefois dans le zip, mais il a sauté au cours des différentes manips, sans que je m'en aperçoive.

Pour JLN

merci du soutien "les yeux fermés".... Je regrette aussi l'absence des ports série dans les nouvelles bécanes : les fabricants doivent penser que tout le monde fonctionne en mode USB ou wi-fi et que les autres méthodes sont ringardes. Si le progrès à parfois du bon, il est trop souvent une incitation au toujours plus qui n'a aucune nécessité pratique : c'est juste une nouvelle source de fric. Il n'y a qu'à regarder la foire d'empoigne actuelle avec les e-trucmuches : portables, tablettes, etc... Derrière tout ça, pas grand chose d'utile mais un gros tas de pognon à ramasser. Navrant.
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
30 juil. 2012 à 09:16
C'est vrai il existe d'autre applis sur le sujet, mais là c'est du concret, très complet, même si cela reste à améliorer.
Dommage que nos machines actuelles ne comportent plus de port serie, et du coup les modems se font rares.
De petites interfaces filaires donnent un port serie depuis un port USB, même moins performant qu'un vrai port COM, pour les modems c'est suffisant.
Rien que pour le partage d'une applis aussi avancé (je n'ai pas encore regardé le code) je met 10 !
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
23 juil. 2012 à 18:47
"les erreurs qui vont avec" : avec Option Explicit et des fonctions qui ont des paramètres avec des noms parlants, pas de problème... Des millions d'applications fonctionnent comme ça. Le problème avec les globales c'est qu'on ne voit pas directement ce qui leur arrive (quelle fonction/sub y a accès), et que ça prend de la mémoire pour rien (quoiqu'ici, ça n'ait pas d'importance, c'est seulement une question de "bonnes pratiques").

Le lancement du navigateur ne fonctionne pas sous Win7 (pas testé sous d'autres OS) : l'URL dans la barre est "http://aide_repertoire/Aide_repertoire.html".
La méthode que j'ai proposée fonctionne (testée). Attention, il faut lui donner un chemin complet vers le fichier - utilise App.Path.
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
23 juil. 2012 à 18:19
ghuysmans99

je voulais savoir comment remplacer l'un des éléments de la source... J'ai trouvé mais il faut renvoyer le zip complet.

Les variables globales, c'est une habitude qui me permet de m'affranchir des conneries, du type variable locale utilisée ailleurs et tronche quand ça ne fonctionne pas. Quand une variable est susceptible d'être utilisée à plusieurs endroits, je la mets en global - avec son initiale en majuscule - ce qui, au passage, me permet de la reconnaître comme globale et évite le passage d'arguments et les erreurs qui vont avec.

Ta suggestion de définir un type revient en quelque sorte à déclarer une structure pour laquelle il faut ensuite qualifier chaque élément. Je trouve que ça alourdit le code plus qu'autre chose puisque, au final, ça revient au même.

Pour le plantage que tu signales, j'attends un numéro d'au moins 10 caractères, pris obligatoirement dans la liste et là, il y a un contrôle strict du numéro, soit en ajout, soit en modif : jamais moins de 10 caractères numériques plus des espaces, des tirets, ou des deux points séparateurs, que je vire au moment de l'utilisation. En fait, il manquait un Locked = True dans les zones des numéros qui en empêche la saisie, laquelle peut être fantaisiste, la preuve. Comme quoi on ne verrouille jamais assez.

L'appel au navigateur se fait via une vieille procédure qui fonctionne et que je recopie au gré de ce que je ponds comme code, donc pas la peine de la remettre en question pour un effet identique.

C'est corrigé : la saisie d'un numéro est maintenant impossible. Il y aura sûrement d'autres âneries que je n'ai pas repérées...
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juil. 2012 à 20:27
N'ayant pas de modem (je pourrais essayer de faire fonctionner ça avec mon portable via Bluetooth, vu qu'il a l'air de simuler un modem, mais je n'ai jamais vraiment regardé comment faire), j'ai simplement voulu voir ce qu'elle faisait (en ne pensant pas que ça ne fonctionnerait pas "out of the box"). L'erreur se produit lorsque tu affectes le n° de port. J'ai essayé de mettre le On Error Resume Next devant et ça ne plante plus :)

En mettant "au hasard" 1234567 comme n° de mobile, l'appli se crashe
dans la fonction traiter_numeros_tel(num), dans la seconde boucle :
fin = Right(num, lgr - i) 'lgr-i=10-11

Pour le code source :
* C'est agréable de lire du code indenté et commenté
* Dommage qu'il y ait autant de variables globales...
* Certains groupes de variables (Num_ent->Cat_val et Num_ent_tmp...)
pourraient être remplacés par des Types : tu définis une seule fois un type
Entree [sans accents, je ne sais pas si ce bon vieux VB6 les apprécie toujours]
avec Num,Cat,Nom...->Cat à l'intérieur et ensuite tu peux faire
Public Ent As Entree, Ent_Tmp As Entree (et y accéder via Ent.Num, par ex.)
* La documentation est claire (schémas...)
* L'ouverture du navigateur sur une page peut se faire via ShellExecute :
Call ShellExecute(me.hWnd, "OPEN", nomFichierOuURL, "", "", SW_SHOWNORMAL)

Je n'ai pas trop compris ta question : quel ensemble ?
cs_jacques-antoine Messages postés 79 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 22 mai 2017
22 juil. 2012 à 18:26
j'ai un vieux système (Windows 98E) qui a migré vers XP Pro : je n'ai pas tous les logiciels "modernes" et j'ai donc fait avec ce que j'ai. Ceci dit, pour le commun des mortels, un fichier fait très bien l'affaire et c'est aussi rapide, sinon plus qu'une BDD. Mais, comme je l'ai dit, chacun est libre d'en utiliser une, à charge pour lui d'écrire le code : les procédures d'entrée/sorties sont regroupées au même endroit dans ce but (voir Repertoire_dcl dans les modules).

La gestion d'erreur était prévue mais mal foutue... Du coup, on sautait le code ad hoc. C'est corrigé mais ça n'explique pas le plantage, probablement dû à des circonstances locales, peut-être un problème de modem et/ou de code de commande : le mien est un Selfmemory 2000 à 56k et il ne cause pas de soucis, sauf qu'il faut parfois le réinitialiser.

Maintenant une question : comment fait-on pour pour remplacer l'un des éléments dans un ensemble?

En attendant, voici le code corrigé, qui remplace le contenu de la procédure Pb_composer_Click() de Form_composer :
<--------------------------------
Dim i As Integer
Dim lgr As Integer
Dim Commande, Buffer, poubelle As String

Erreur = NON

lgr = Len(Num_tel)
If lgr < 10 Then
Erreur = OUI
MsgBox "Numéro incomplet : longueur minimum de 10 chiffres"
Exit Sub
End If

Commande = "ATDT" + Num_tel + ";" + vbCr
MSComm1.CommPort = Num_port
MSComm1.Settings = "9600,N,8,1"

On Error GoTo plantage

MSComm1.PortOpen = True

MSComm1.InBufferCount = 0 ' vidage du tampon d'entrée
MSComm1.Output = Commande ' envoi du numéro pour composition

Timer_port.Enabled = True ' limitation de l'attente : 10 secondes
Do
poubelle = DoEvents() ' attendre la réponse OK du modem
If MSComm1.InBufferCount Then ' lecture des données du tampon
Buffer = Buffer + MSComm1.Input
If InStr(Buffer, "OK") Then ' réponse = OK : décrocher le combiné
Timer_port.Enabled = False
Beep
MsgBox "Décrochez le combiné ou prenez la ligne puis cliquez sur OK"
Exit Do
End If
End If
Loop

MSComm1.Output = "ATH" + vbCr ' déconnexion du modem
MSComm1.PortOpen = False ' fermeture du port
Exit Sub

plantage:

Erreur = OUI
MsgBox "Incident sur le port COM" & Num_port & ". Erreur " & Err.Number & "(" & Err.Description & ")"
<--------------------------------
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
22 juil. 2012 à 14:56
"les données sont placées dans un fichier, plus simple à utiliser qu'une base de données, laquelle n'est pas toujours présente chez l'utilisateur."

Même sans avoir installé Access, on peut quand même faire tourner une application qui utilise ce type de BDD. Le driver est présent par défaut sous Windows (à partir de Win2000 je crois)

Crash au premier lancement à la ligne "MSComm1.PortOpen=True", "Invalid port number".
Une gestion d'erreurs aurait été la bienvenue...
Rejoignez-nous