Créer une fonction sans l'appeler

[Résolu]
Signaler
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
-
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

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013

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 ?
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Heu j'ai un doute là, le "Return" fonctionne en VB6 aussi?
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Nop, il faut attribuer la valeur à la fonction elle même

@++

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

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013

Merci bien, ca marche
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
"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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
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.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
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