Créer une fonction sans l'appeler

Résolu
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013 - 31 mai 2008 à 18:40
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 31 mai 2008 à 20:45
Voila mon souhait : créer une fonction qui s'utilise comme, par exemple, Asc() ou Left$()

J'écrirait, par exemple
ChoseModifiée=MaFonction(ChoseAModifier)

sachant que dans mon module j'ai

Public Function MaFonction(ChoseAModifier as String)
...
...
...
... donne un résultat
End Function

J'espere être clair, mon but étant de ne pas avoir à faire écrire le résultat dans une variable par ma fonction pour ensuite avoir à aller la récupérer...

Merci d'avance

18 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 19:14
Option Explicit




Public Function 
MaFonction(
ByVal 
CheminFichier
As String
)
As String

    MaFonction = Right$(CheminFichier, InStrRev(CheminFichier, ""))
End Function

Sub exmple()
    Dim Ret As String
    
Ret = MaFonction("C:\...\...\MonFichier.Txt")
MsgBox Ret
End Sub

~
<small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
3
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
31 mai 2008 à 18:47
Salut,

Donc tu veux créer une fonction comme toutes les autres fonctions du monde si je comprend bien

Je ne comprend pas, il est impossible de ne pas faire comme tu le veux... Autrement dit, tu n'a rien a faire de spécial.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 18:49
perso, j'ai rien compris à ta demande. Suis peut être trop frit, tu me diras..

Une fonction à pour but de renvoyer qque chose. (donc déjà pense à la typer : Public Function MaFonction(ChoseAModifier as String) As TYPE)

Bref, as-tu un exemple plus concrêt ?
Ta dernière phrase, je ne la comprends pas

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
31 mai 2008 à 19:08
Je vais essayer de donner un exemple plus concret :

MaFonction à pour but par exemple d'extraire le nom d'un fichier depuis sont chemin d'accès complet

Donc je tappe
MaFonction("C:\...\...\MonFichier.Txt")

Dans mon module j'ai donc
MaFonction(CheminFichier as String)

For i = 1 To Len(CheminFichier)
    If Left$(Right$(CheminFichier, i), 1) = "" Then Exit For
    NomFichier = NomFichier + Left$(Right$(NomComplet, i), 1)
Next i

Enf Function

la variable NomFichier contient le résultat demandé...

Comment faire pour que dans ma form, je puisse simplement faire
A=MaFonction("C:\...\...\MonFichier.Txt")
et que A prenne alors le nom extrait par la fonction ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
31 mai 2008 à 19:16
Harf, tu ne sais pas retourner la valeur à partir de ta fonction...

Public Function MaFonction(CheminFichier as String) As String
    For i = 1 To Len(CheminFichier)
        If Left$(Right$(CheminFichier, i), 1) = "" Then Exit For
        NomFichier = NomFichier + Left$(Right$(NomComplet, i), 1)
    Next i
    Return NomFichier
End Function
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
31 mai 2008 à 19:17
Heu j'ai un doute là, le "Return" fonctionne en VB6 aussi?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 19:18
Nop, il faut attribuer la valeur à la fonction elle même

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 19:19
De plus, dans ce cas de figure, il vaut mieux éviter la boucle.

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
PrinceSilk Messages postés 56 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 26 mai 2013
31 mai 2008 à 19:20
Merci bien, ca marche
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
31 mai 2008 à 19:23
"Nop, il faut attribuer la valeur à la fonction elle même"


OK merci (Return fonctionne en .NET)
"De plus, dans ce cas de figure, il vaut mieux éviter la boucle."
Bien d'accord, mais je voulais pas m'amuser à modifier le code
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 mai 2008 à 19:23
Non Kevin, Return n'existe pas en VB6, c'est qu'en .Net

D'ailleurs en .Net on aura pas besoin de fonction, on utiliserait directement System.IO.Path.GetFileName

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
31 mai 2008 à 19:25
D'ailleurs en .Net on aura pas besoin de fonction, on utiliserait directement System.IO.Path.GetFileName
Là n'est pas la question

Merci quand même (c'est vieux pour moi ce VB6)
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 19:28
En tout cas, le framework a l'air d'être 'blindé' de fonctions, c'est bien ça !
Faudrait que je m'y mette un jour, mais pas motivé.

Casy, tu t'y es mis en combien de temps ? (et en tant que professionnel, ou pour toi perso, hors taf ?)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 mai 2008 à 19:37
En perso, en quelques semaines (2 à 3 mois), essentiellement pour répondre aux questions sur le forum du temps ou j'étais au chomage, c'est peut-etre d'ailleurs le meilleur apprentissage que j'ai pu avoir.

Ensuite en tant que pro, je peux pas vraiment dire, je suis loin de tout maitriser (je fais vraiment pas assez de prog en VB dans la boite ou je suis actuellement) et quand j'ai repris le boulot, j'avais déjà bien assimiler la philosophie du langage. Donc même si je connais pas tout, j'ai naturellement le reflexe d'aller fouiller dans le framework.

Par contre, maintenant quand je dois faire du VB6, c'est dur, vraiment très dur. Ca ressemble vraiment à un dinosaure comparé à .Net

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
31 mai 2008 à 19:42
Je me permet de te répondre aussi mortalino

C'est clair qu'au début tu t'y perd un peu avec ce gros framework bourré de classes, mais dès que tu comprend un peu sa structure tu y trouve très facilement ce dont tu as besoins. Et grace à IntelliSense, la plupart du temps tu n'as même pas besoins d'aller sur MSDN pour savoir à quoi sert une classe, une procédure ou une fonction (on y va surtout pour avoir un exemple de code).

Reste à apprendre les différences du langage en lui même (les Handles pour les événements par exemple), mais ce n'est pas grand chose non plus.

Ce qui prend du temps, c'est de connaitre toutes les possibilité. Genre au début tu codera tes fonctions comme tu le fais d'habitude (en VB6), puis un jour tu découvre qu'il existe une classe dans le framework qui te fais tout ça en 2 ligne de code

Je pense qu'en une 10aines d'heures tu commence déjà à être à l'aise avec le framework.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 19:46
Lol, ok merci

Par contre, maintenant quand je dois faire du VB6, c'est dur, vraiment
très dur. Ca ressemble vraiment à un dinosaure comparé à .Net

C'est ça qui m'embête dans l'histoire. Je commence petit à petit à maitriser les bases de VB6, et pareil, sait où chercher. Mais j'ai encore tellement de chose à apprendre avec cet outil de dev que je n'ai pas encore l'envie de l'abandonner pour apprendre autre chose (pis c'est une passion, pas mon taf, donc pas non plus trop trop de temps pour apprendre 50 langages).
En fait je commence seulement à m'amuser avec, et ça m'a pris 2 ans !!

D'où mon apréhension pour vb.Net, va me falloir du temps pour être à l'aise, et j'adore VB6, mais tôt ou tard, il y aura un choix à faire (et il est vite fait, le framework étant d'actualité et plus le VB6)

Don 2 ou 3 mois pour toi = un poil plus pour moi, sachant que l'idéal serait de faire les deux en parallèle.
Merci pour tes infos

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 mai 2008 à 19:50
Ok, merci Kevin

J'ai effectivement remarqué que la Msdn locale était très riche. Pis avec mon bouquin de 1200 pages, je devrais m'en sortir.
Reste à trouver cette motivation qui me fait défaut à propos du FrameWork.

De toute façon, faudra que je m'y mette tôt ou tard !! C'est la loi de Murphy, VB6 étant obsolète
Là je suis en train de voir avec ma société pour passer un CIF en tant que Développeur Logiciel en 8 mois, ça serait pas mal, pour connaitre les bases d'autres langages + les bases informatiques (bits, octets, processeurs, enfin tous les trucs de bas niveau)

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
31 mai 2008 à 20:45
Petite astuce pour apprendre le VB.Net plus raidement, systématiquement désactiver la référence Microsoft.VisualBasic dans les projets.

Tu vas galérer bien plus parce que tu ne pourras plus faire du code VB6, mais ça va t'obliger à chercher les solutions dans le framework, chose que tu ne fera pas naturellement si tu continus à coder à la mode VB6.

La principale chose à retenir en .Net c'est la notion d'objet, chose totalement absente en VB6 et qui a toujours été vraiment manquante. VB6 ne connais pas l'objet, en .Net, tout est objet, de la plus simple variable à la classe la plus complexe qui soit.

Une fois que tu as compris le principe de l'objet, tu as compris plus de 50% du fonctionnement du framework.
.Net et le framework, par l'intermédiare de VB évidement mais aussi des autres langages, c'est la Programmation Orientée Objet à la portée de tous.
Ce qui a été rédibitoire pour beaucoup (moi le premier) en C++ est devenu un plaisir avec .Net.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Rejoignez-nous