RÉPERTOIRE TÉLÉPHONE SIMPLE VB2008 EXPRESS EN LIEN AVEC FICHIER EXCEL (AFFICHAGE

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 8 nov. 2009 à 16:29
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 - 12 nov. 2009 à 17:07
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/50822-repertoire-telephone-simple-vb2008-express-en-lien-avec-fichier-excel-affichage-datagridview

Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
12 nov. 2009 à 17:07
je suis aussi automaticien et cela fait que peu de temps que je programme en VB.NET
Il faut oublier tous tes reflexes des API.
Exemple dans ta sub tu utilises Byref ce qui indique à la sub qu'elle modifira la valeur d'entrée (pas besoin de valeur de sortie en somme), Utilise au début comme en S7, les Byval qui eux lise la varaible passé en paramétre mais sans la modifier, il te faudrat alors une var de sortie à la fin des déclaration d'entrée de sub entre parenthése et sans nom, juste le type de valeur retourné.
ex :
Private Sub Mon_inc (byval X as integer) as integer
return X + 10 ' ajoute 10 à X
End sub
utilisation : tyty Mon_inc(6) // tyty 60
sinon avec byref (à vérifier)
Private sub Mon_inc (byref X as integer)
return X+10
end sub
utilisation : Mon_inc(tyty) // tyty = tyty + 10
je t'invite fortement à lire les tutos dispo sur le net et sur ce site pour bien commencer, lis aussi mes sources car j'ai le même "esprit" que toi de formation et je les commente largement ;)
@++ un 5/10 pour l'encouragement
stef68600 Messages postés 42 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 26 juillet 2013
10 nov. 2009 à 20:10
Bonjour,

merci de vos commentaires constructifs. Effectivement quand on n'a pas l'habitude il y a des choses qui nous échappent...

Par contre j'ai essayé de factorisé comme vous le conseillez, mais j'arrive pas. j'ai essayé de faire un module pour faire des espaces dans les numéros de tel, ex 0101010101 pour avoir 01 01 01 01 01. j'ai une petite question : c'est normal qu'on ne puisse pas avoir la variable d'entree identique à la variable de sortie ?

module espace
sub traitement (byref entree as string,byref sortie as string)

ici le code... qui fonctionne

end sub
end module

utilisation :

espace.traitement (textbox1.text,textbox1.text)

ça marche pas !

dim tampon as string
tampon=textbox1.text
espace.traitement (tampon,textbox1.text)

ça marche !

déroutant pour un automaticien, car si on fait le prog sans "tampon" sur un automate ça fonctionne !

en tout cas merçi pour vos remarques.
cs_Blodox Messages postés 134 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 24 octobre 2010
9 nov. 2009 à 16:21
Yes,
il y a aussi qqch qui me gêne, c'est le nom de fichier en "dur", j'aurais plutôt mis ça dans un petit fichier d'init, ce qui permet une plus grande portabilité,
imagines que tu déplaces ton appli dans un répertoire "D:\MesApplisAMoi\repertoire", dans ta class actuelle, il te recréera un fichier vide sur C:\(racine) et ne saura plus retrouver ton "bon" répertoire, alors que là, dans l'évènement Form_Load, il te suffit de charger l'emplacement du fichier et de l'ouvrir et le tour est joué... De plus tu n'es pas obligé d'avoir un nom spécifique, ainsi, tu peux avoir "D:\MesApplisAMoi\repertoire\Mon Repertoire Perso.xls", "D:\MesApplisAMoi\repertoire\Mon Repertoire Professionnel.xls", etc, quitte à rajouter un radiobutton pour sélectionner entre "Perso" et "Pro", etc...

D'acord avec ADN56 pour les autres améliorations

Sinon, c'est bon
Je mets 7 à titre d'encouragement...
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
8 nov. 2009 à 16:29
salut, je lis ton code et si je peux me permettre voici ce que je trouve à corriger pour que les débutants partent sur de bonne base.
10. 'test si repertoire existe sinon creation du repertoire
11. If My.Computer.FileSystem.DirectoryExists("C:\repertoire") Then
12. Else
13. My.Computer.FileSystem.CreateDirectory("C:\repertoire")
14. End If
Plus lisible :
If NOT My.Computer.FileSystem.DirectoryExists("C:\repertoire") Then My.Computer.FileSystem.CreateDirectory("C:\repertoire")

Ensuite place option explicit et strict à on et tu verra un tas de correction à apporter.
du style :
15. 'lecture fichier du mois
16. Dim oExcel As Object
17. Dim oBook As Object
18. Dim nom_fichier
19. Dim fichierexiste
xx. Dim xlUp = 0 '!!!!!!!'

nom_fichier et fichierexiste sont quoi ? un string et un booléen ? ben il faut lui dire !
Dim nom_fichier as string = ("c:\repertoire\mon repertoire.xls")
Dim fichierexiste as boolean = My.Computer.FileSystem.FileExists(nom_fichier)

Nomme les controles, les dix textbox et les boutons surtout.
Dans le form load tu fais la même chose que dans le BP7_click.
Ton index i (qui n'est pas typé en integer) tu écris i i + 1.0 ce qui le bascule en double alors qu'il n'y a pas besoin un tableau excel 65635 lignes max de mémoire. Donc : dim I as integer, puis i += 1 pour incrémenter l'index.

Il y a moyen de gagner pas mal de lignes de code en factorisant les .cell(i,x).value = textbox(x).text en utilisant les tags par exemple. Sur le bouton11 par exemple tu peux faire un for each control in controls, tester si c'est une textbox et lui placer un text vide. Utilise aussi une fonction pour ouvrir et fermer ton fichier cela évitera de modifier partout dans le code le jour ou tu voudras utiliser un opendialogue pour laisser l'user choisir son fichier. Tu écris plusieurs du code identique c'est pas ffacile à lire.

Pour ce qui est de l'utilité du code, ben voila quoi. Bonne continuation et souviens toi que c'est pour te faire allez dans le sens de la bonne prog que je te dis cela ;) @++
Rejoignez-nous