Récupérer dans Form2 un nom entré dans Form1

Résolu
Signaler
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009
-
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009
-
Bonjour à tous

Dans une Form1, l'utilisateur indique dans un textbox le nom qu'il veut donner à un fichier. Je voudrais dans les autres Form pouvoir réutiliser ce même nom sans lui demander de l'inscrire à nouveau.

Merci pour votre aide.

15 réponses

Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

tapageur
Merci énormément Jack pour ton aide précieuse et toutes mes excuses pour le mal que tu t'es donné.
Pour le "PlageT3" , je l'avais essayé et je l'ai réessayé, il ne semble pas accepter une plage nommé dans Excel comme table.
J'ai plutôt remplacé ma commande par une commande texte et ça fonctionne

AdodcT3.CommandType = adCmdText
AdodcT3.RecordSource = "SELECT * FROM [Feuille1$B28:E39] "

Pour ce qui est du Set, c'est super.
Merci encore
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Cette question revient au moins 2 fois par semaine, tu n'as dû beaucoup chercher.

Pour lire depuis Form1 le contenu d'une TextBox dans Form2 :
   monTexte = Form2.maTextBox.Text

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
petite précision : il faut que form2 soir ouverte au moment de l'appel, évidemment

sinon çà revient juste à du partage de variable, dans quel cas
monTexte
est à déclarer en public dans un module, le premier appelant l'initialise, les autres accès se font directement sur la variable

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

Ça fait 2 jours que je cherche et monTexte = Form1.maTextBox.Text ne fonctionne pas.

Le texte est entré dans la forme 1. Si je fais un Hide de la Forme1, est-ce que c'est identique à un Close.

Je vais essayer le module.

J'ai aussi à récupérer une sélection dans un listbox et la réutiliser dans une autre Form est-ce la même méthode ?

Merci de votre attention
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
un close? en vb6? çà n'existe pas...


Vous êtes ici : Thèmes / [forum-VISUAL-BASIC_1.aspx Visual Basic 6] / [theme-DIVERS_220.aspx Divers] /

c'est pareil pour tout contrôle oui
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Avec les infos que tu nous as donné, la solution correspond à ton problème.
Si la forme est "Hide" au moment de la récupération du texte, ça marche toujours, jusqu'à ce que l'objet Form soit déchargé avec Unload.
Explique mieux ton environnement si tu veux de vraies solutions propres.
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

Je m'explique.

Dans ma fenêtre principale (Form1), l'utilisateur doit choisir entre 2 possibilités: Créer un nouveau dossier (ce qui l'amène au Choix1 dans le code)ou ouvrir un des fichiers d'une listbox (Choix2).

Dans d'autre fenêtre plus tard FormX, je veux faire appel au nom du dossier choisi au début.
Soit Client ou Fichier


[Choix1]

Private Sub Command3_Click()

Dim NomClient As String
Dim Fichier As String
NomClient = Text1.Text

If Text1.Text = "" Then
MsgBox "Vous devez entrer un nom.", vbOKOnly, "Attention"
ElseIf Dir("C:\MonDossier" & NomClient & ".xls") <> "" Then
MsgBox "Ce nom existe déjà.", vbOKOnly, "Attention"
Else
CopyFile "C:\Program Files\Progr\Gabarit.xls", "C:\MonDossier" & NomClient & ".xls", 0
End If

[Choix2]

Private Sub File1_DblClick()
Dim OuvreFich As String
Dim Fichier As String

OuvreFich = File1.FileName
Fichier = "C:\MonDossier" & OuvreFich & ".xls"

Merci javascript:Insert_Emoticon('/imgs2/smile.gif');
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

Je m'excuse, mon retour à la ligne ne semble pas fonctionner. Le texte est difficilement lisible.
Y a t'il un procédé particulier?


Dans le code que j'ai envoyé, NomClient et OuvreFich sont déclarés Private. C'était mon code initial. Par la suite, je les ai déclarée Public bien entendu.

Merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Re
Oui, on le sait, la TextBox de saisie des questions est pourrie (no comment)

J'ai reconstitué ton code, rien de méchant.
Et ...
Comme je te l'ai dit, si Form1 qui héberge Command3 et File1 est toujours vivante, ces objects sont toujours lisibles avec la syntaxe donnée au début.
Dans Command3, tu termines par un CopyFile. Bon
Dans File1, tu ne fais que stocker une nom de fichier dans ta variable Fichier, variable déclarée à l'intérieur de la Sub --> Aucune possibilité de la lire de l'extérieur de cette Sub; ça, c'est expliqué dans l'aide
Mais bon, File.FileName a toujours sa valeur.

Quel est ton problème ?
Tant que tu ne nous diras pas dans quel état se trouvent les formes (chargées ou déchargées) en question, impossible de te répondre.

Quand tu poses des questions, essaye d'être le plus précis possible, on n'a pas ton programme sous les yeux.
Expliquer son problème clairement est la moitié de la solution.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

J'ai une base Excel (Gabarit.xls) qui contient des données et calculs qui doivent être conservés.
Le nouvel utilisateur en fait donc une copie sous un autre nom (NomClient ".xls"). L'utilisateur qui veut récupérer son fichier le sélectionne dans une ListBox (FileName). Jusque là, tout va bien.

J'ai NomClient et FileName déclarés Public dans ma Form1. Sur une autre fenêtre Form2, j'ai un SSTab qui contient 4 onglets et un DataGrid chacun.

Pour relier mon DataGrid1 au fichier NomClient.xls qui contient une plage nommée PlageT3, je fais comme suit:

Private Sub Form_Load()
Me.Ong1.Enabled = True
Me.AdodcT3.Enabled = True
Me.DataGrid1.Enabled = True
AdodcT3.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\MonDossier\&Form1.NomClient.xls;;Extended Properties=Excel 8.0;Persist Security Info=False"
Me.AdodcT3.CommandType = adCmdTable
Me.AdodcT3.RecordSource = PlageT3
Me.AdodcT3.Refresh
Me.DataGrid1.DataSource=AdodcT3
End Sub

Avec un nom de fichier fixe, tout va bien, d'ailleurs je peut les relier directement lors de la création, mais en code je n'y arrive pas. Ici, PlageT3 n'est pas accepté comme table avec ou sans guillemets. Pourtant elle est acceptée si je la sélectionne directement dans les propriétés à la création avec un nom de fichier fixe. Inutile de vous dire que je suis débutant en VB6. J'étais habitué à Delphi.

Merci
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
??
Donc, je résume : tu n'arrives pas à insérer la valeur d'une variable située sur une autre forme à une chaine de caractère ?
Je vois
   ...;Data Source = C:\MonDossier\&Form1.NomClient.xls;;...
La dedans, c'est du texte, pas de notion de variable.
   ...;Data Source = C:\MonDossier\ " & Form1.NomClient & ".xls;;...
Il faut faire ressortir ta variable de la chaine pour qu'elle soit interprétée.
Dans mon exemple, MonDossier est un répertoire fixe (écrit dans la chaine), pas une variable

Est-ce que c'est là ton problème ?

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

tapageur
Je suis revenu à Firefox. Avec Chrome, la TextBox de saisie ne permettait aucun format.

Merci beaucoup Jack, ça semble passer puisque maintenant c'est à PlageT3 qu'il bogue. C'est un nom de plage dans Excel. J'ai beau la déclarer, la mettre entre guillemets et j'ai essayé aussi "Select Nom, Prenom, Titre from PlageT3" comme je l'ai vu sur le Forum, mais rien ne passe.

Private Sub Form_Load()
Me.Ong1.Enabled = True
Me.AdodcT3.Enabled =
True
Me.DataGrid1.Enabled = True AdodcT3.
ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source =
C:\MonDossier"& Form1.NomClient & ".xls;;Extended Properties=Excel
8.0;Persist Security Info=False"
Me.AdodcT3.CommandType = adCmdTable

Me.AdodcT3.RecordSource = PlageT3
Me.AdodcT3.Refresh

Me.DataGrid1.DataSource=AdodcT3
End Sub

Si qq peut m'aider
Merci énormément
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Re
Je viens d'avoir le courage de monter un essai de fichiers Excel.
Plusieurs choses :
- La propriété RecordSource s'attend à trouver du texte (une requète SQL, normalement).
  Donc il faut encadrer le PlageT3 par des "
      Me.AdodcT3.RecordSource = "PlageT3"
- Ensuite, il faut assigner la propriété DataSource à l'objet ADODC.
Règle : Dès qu'on assigne un objet à un autre, il faut utiliser SET en tête de ligne.
      Set Me.DataGrid1.DataSource = Me.AdodcT3

Tout ceci est écrit dans les exemples de l'aide des objets ADODC et DataGrid, tu aurais gagné du temps ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Oui, j'ai essayé aussi un Select mais cela ne semble pas lui convenir.
Par contre, = "PlageT3" fonctionne bien, ce qui est la même chose qu'un "Select *"
Messages postés
19
Date d'inscription
dimanche 19 mars 2006
Statut
Membre
Dernière intervention
24 février 2009

Bizarre, ici c'est l'inverse.
Peut-être la version d'Office.
Ici, c'est 2000

Merci, j'ai beaucoup appris. Ça tourne comme sur des roulettes.