Valeur non accessible car "privée" que se passe t'il ? [Résolu]

Attila54 409 Messages postés jeudi 30 juin 2005Date d'inscription 21 novembre 2013 Dernière intervention - 15 nov. 2011 à 09:57 - Dernière réponse : ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention
- 15 nov. 2011 à 13:29
Bonjour,
Sur un log comportant 2 forms que j'appelle form1 et form2, j'ai un calcul simplissime a faire

Form1 contient trois textbox A et B qui contiendront des nombres calculés compris entre -5.00 et +5.00 a deux decimales pres et TextboxC qui contient une valeur calculee et dont la valeur se situe dans les memes fourchettes que textbox A et B

Comment se fait ce calcul
Pour la textboxA : je vais chercher une valeur calculée dans Form2 dans une textboxD et je multiplie cette valeur par 0.25

Pour la textbox B : Je prends la valeur negative de textboxA et je lui ajoute la valeur de TextboxC

Tout ceci se fait retrospectivement, c'est a dire :
- J'entre les valeurs dans form1, je clique sur calcul et toutes les valeurs des textbox calculées dans le form sauf A et B s'affichent

- j'ouvre form2, form1 se cache et un calcul se fait automatiquement.
Les valeurs contenues dans Form1.A et Form1.B sont calculées

- Je clique sur un bouton qui me ramène a Form1 et cache form2, les valeurs s'affichent alors dans form1

J'ai donc fait :

Dans form2 pour respecter la retrospectivité
 
'En debut de form2
    Dim valD As Double
'Calcul de A
        valA = valD * 0.25
        Form1.A.Text = (valA).ToString("0.00")
        valB = -valA + (Form1.ValC)
        Form1.B.Text = (valB).ToString("0.00")


En debut de form1 j'ai
Dim valC As Double
    Dim valA As Double
    Dim valB As Double


J'ai bien sur mis les visible False et Visible True aux bons endroits
Tout fonctionne niveau affichage mais au niveau calcul j'ai l'erreur suivante :

Projet.Form1.ValC n'est pas accessible dans ce contexte, car il est 'Private'


Je ne comprends absolument pas ce qui se passe et quel est le sens de cette erreur
Merci de m'eclairer
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_ShayW 3238 Messages postés jeudi 26 novembre 2009Date d'inscription 14 mars 2018 Dernière intervention - 15 nov. 2011 à 10:52
3
Merci
Salut
Dim ValC As String 
équivalent à
 private ValC as string


donc si tu veux l'utiliser dans une autre form
 Public  ValC as string

Merci cs_ShayW 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de cs_ShayW
Meilleure réponse
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 15 nov. 2011 à 11:26
3
Merci
Bonjour Attila,

En effet :

' form 1
dim G
public P

sub x()
dim L
if g > p then
dim B
' ...
end if
end sub ' x
' fin form 1


' form 2
sub y()
form1.P = form1.P + 1
end sub ' y
' fin form 2

-----------------

P est public, elle peut être utilisée partout (mais pas indicée je crois p(x), pour l'utiliser hors sa form il faudra y adjoindre le nom de sa form d'origine (form1.P)

G est globale à la form

L est locale à la procédure de la form

B est local au bloc de la procédure de la form (ici IF).

Sauf par des paramètres spéciaux de code (byRef ou autres), chaque variale ne fonctionne quand sur son territoire géographique.

En cas de conflit : même nom et type de vriable en deux endroit de territoire différent, il y a une priorité, je crois que c'est la variable locale qui compte (sous réserve).

Il reste notamment la possibilité de faire des modules (origine du Basic), c'est une sorte de form de code public.
Pour ma part je n'utilise pas car l'avantage est de ne pas avoir à réécrire un code identique, mais l'inconvénient est qu'on se retrouve assez facilement avec des conflits de variables, entre son programme et le module, et qu'il faut sans cesse faire attention... Préférant réserver un form invisible au code commun.

Cordialement, Joe.

Merci ehjoe 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 125 internautes ce mois-ci

Commenter la réponse de ehjoe
lolokun 1241 Messages postés mardi 10 octobre 2006Date d'inscription 27 août 2013 Dernière intervention - 15 nov. 2011 à 10:05
0
Merci
Bonjour,

Tout dépend où tu l'as déclarée, et la portée de cette variable..
Si rien n'est précisée, la variable sera private, donc accessible uniquement depuis le module où tu l'as déclaré.
Il faut donc te la déclarer en public pour y avoir accès depuis ta 2ème form

L'expérience, c'est une connerie par jour, mais jamais la même..
Commenter la réponse de lolokun
Attila54 409 Messages postés jeudi 30 juin 2005Date d'inscription 21 novembre 2013 Dernière intervention - 15 nov. 2011 à 10:44
0
Merci
Voila ce que j'ai dans mon form1

Public Class Form1    
    Dim R As Boolean
    Dim ValH As Boolean
    Dim ValX As String
    Dim ValY As String
    Dim ValZ As String
    Dim ValA As String
    Dim ValB As String
    Dim ValC As String


Donc d'après moi, C qui est bien une valeur de Form1 est declarée en "public" non ?
Pourquoi je ne pourrais pas appeler Form1.Valc dans mon Form2 ???
Commenter la réponse de Attila54
Attila54 409 Messages postés jeudi 30 juin 2005Date d'inscription 21 novembre 2013 Dernière intervention - 15 nov. 2011 à 13:09
0
Merci
ah ben j'apprends quelque chose la shaW, je pensais que Public Class Form1 suffisait a rendre public les declarations qui suivent

Merci EhJoe pour ce cours d'algo interessant et instructif...

Au fait je n'ai toujours pas reçu le livre que se passe t'il ?
Commenter la réponse de Attila54
ehjoe 728 Messages postés samedi 4 avril 2009Date d'inscription 30 mars 2014 Dernière intervention - 15 nov. 2011 à 13:29
0
Merci
Attila est là...

Ben je n'en sais rien, mais moi le fisc m'a envoyé une lettre recommandée il y a six jours et je ne l'ai pas encore... Nous sommes à deux kilomètres de distance, soit pour l'instant du 13 mètres par heure (vitesse d'une tortue peut être)...
Avec les deux fériés la Poste a dû prendre un gros retard je pense...

Mais tu dois avoir un site de réclamation dans ce cas, si tu ne trouves pas, dis-moi je tenterais de trouver, mais attend une quinziane avant, je sais c'est long, mais pour ma lettre recommandée aussi c'est long, la pagaille...

Cordialement, Joe.
Commenter la réponse de ehjoe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.