Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 2013
-
15 nov. 2011 à 09:57
ehjoe
Messages postés728Date d'inscriptionsamedi 4 avril 2009StatutMembreDernière intervention30 mars 2014
-
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
ehjoe
Messages postés728Date d'inscriptionsamedi 4 avril 2009StatutMembreDernière intervention30 mars 20144 15 nov. 2011 à 11:26
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.
lolokun
Messages postés1241Date d'inscriptionmardi 10 octobre 2006StatutMembreDernière intervention27 août 20137 15 nov. 2011 à 10:05
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..
Attila54
Messages postés409Date d'inscriptionjeudi 30 juin 2005StatutMembreDernière intervention21 novembre 20131 15 nov. 2011 à 10:44
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 ???
Vous n’avez pas trouvé la réponse que vous recherchez ?
ehjoe
Messages postés728Date d'inscriptionsamedi 4 avril 2009StatutMembreDernière intervention30 mars 20144 15 nov. 2011 à 13:29
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...