Variable public dans un module

Résolu
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 - 1 juin 2015 à 19:09
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 - 2 juin 2015 à 19:15
Bonjour,

je cherche a déclarer une variable dans un module, et dans une fonction me servir de cette variable.
Apparemment ma variable ne se met pas a jour ; un petit exemple pour etre plus clair :

Module Module1
    Public OldStr As String

    Public Function test(ByVal Str As String) As String

        If OldStr = Str Then
            Return "Chaine identique"
            OldStr = Str
        Else
            Return "Chaine differente"
            OldStr = Str
        End If

    End Function


End Module

Lorsque j exécute :

MsgBox(test("aaa"))




Le retour est toujours "chaine différente" la variable oldstr ne reçoit pas la valeur de str ? normalement au bout de la seconde passe elle devrait être identique ?

Ou est l 'erreur ?

10 réponses

NHenry Messages postés 15111 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 avril 2024 159
1 juin 2015 à 19:16
Return retourne le résultat et sort de la fonction.
En pas à pas, tu l'aurais vu tout de suite.
1
Très juste !!! merci beaucoup
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 juin 2015 à 19:15
Bonjour,
La déclaration d'un variable ne concerne que sa portée et son type.
Où et comment l'as-tu initialisée ?
Initialisée ou non initialisée. Telle est la question !

J' "adore" au passage que l'on se foule le poignet pour dire que toto = toto (relis le code que tu as écrit, s'il te plait !)
0
non toto n est pas égale a toto justement ?????

En gros je cherche a faire un fonction qui me renvoie une valeur si elle n est pas identique a la précédente ?

la c est un code de test
Premier clic ça me renvoie pas identique et je cherche a faire qu au second ça me met identique !!

Dsl mais je code en amateur ; et en Vb6 ca fonctionner ! enfin si ma memoire est bonne
0
"Où et comment l'as-tu initialisée ?
Initialisée ou non initialisée. Telle est la question ! "

tu entend quoi par initialisé ?
Public OldStr As String
elle est déclare au niveau du module ?
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 1/06/2015 à 21:17
C'est une plaisanterie ?
J'espère que oui, car sinon ...
Regarde ce que tu as écrit (bis répetita :
     If OldStr = Str Then  ' ====>>> si titi = toto
Return "Chaine identique"
OldStr = Str ' =====>>> alors titi = toto !!!!
Else ' =====>>> sinon
Return "Chaine differente"
OldStr = Str ' ====>>> titi = toto !!!
End If


Hé bé !!!! Quelle splendide démonstration de logique ! Acec ou sans informatique/code ...
Et tu ne sais pas ce que veut dire initialiser une variable ? Vraiment ? ===>> je trouve assez surprenant et bien au-delà de mes forces et de ma "religion" d'avoir à t'expliquer ce que veut dire cela....
Bonne chance.

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
1 juin 2015 à 21:18
Héé béééé qué malheur !!! comme on dit dans ma région !!
Oui comme je le disais je débute ; mais je ne te demande rien.

A l'avenir ne repond pas a un post si le sujet te semble bien trop bas du chapeau et loin de ton niveau qui doit être proche de l'excellence !!!

Merci a NHenry qui a parfaitement compris ma question (maladroitement posé certes !!) et a répondu a mon interrogation.
0
NHenry Messages postés 15111 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 avril 2024 159
1 juin 2015 à 21:19
L'initialisation par défaut suffit, je pense pour le premier tout.
Ensuite, le problème vient surtout que "Return" sort de la fonction et donc n'exécute pas l'assignation qui suit.
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
1 juin 2015 à 21:21
Oui tout a fait , une grosse erreur de débutant et de logique (pour le return)
Mais bon j'apprends :) merci encore.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 juin 2015 à 21:41

toto = "identique"
If oldsgtr <> str then
toto = "differente"
OldStr = Str
End If
return "chaîne " + toto
0
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
Modifié par pcpunch le 2/06/2015 à 19:19
Module Module1
    Public OldStr As String

    Public Function test(ByVal Str As String) As String

        If OldStr = Str Then
            
            Return "Chaine identique"
        Else
            
            OldStr = Str
            Return "Chaine differente"
        End If

    End Function


La fonction test "aaa" renvoie differente lors de la premiere passe et identique lors de la seconde.

pas grand intérêt ici, mais c'est pour que ma fonction qui est lancer toute les x secondes ne revoit quelque chose que si la valeur est changer !

l'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai ...
0
Rejoignez-nous