cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010
-
1 juil. 2009 à 17:38
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 2020
-
3 juil. 2009 à 15:51
Bonjour,
mon application est composée de plusieurs forms (5), dans la première form se trouve une FileListBox et une DirListBox qui sont en relation(c'est à dire en clickant sur un répertoire donné on obtient les fichiers qu'il contient).
L'utilisateur face à cette première form doit choisir un répertoire en clickant sur le répertoire voulu dans la DirListBox(aprés le double click dessus les fichers s'affiche dans la FileListBox).
Problème: lorsque l'on arrive à la 5ème forme j'ai besoin de renommer les fichiers du répertoires qu'il avait choisis dans la première forme :
code:
For numini = 0 To (filelistcount - 1)
Name (filepath & "" & frm_assist1.File1.List(0)) As (filepath & "" & nom & "-" & numero & "." & extension)
Next numini
// la variable filepath contient le chemin du répertoire que l'utilisateur avait selectionné dans la première forme
// mais frm_assist1.File1.List(0) ne contient pas le premier fichier contenu dans le repertoire que l'utilisateur avait selectioné
J'aurais besoin de faire un File1.List(0) du repertoire voulu, voila ma question
j'espère avoir été clair
et merci d'avance pour votre aide
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 1 juil. 2009 à 22:23
Bonsoir,
Name (filepath & "" & frm_assist1.File1.List(0)) As (filepath & "" & nom & "-" & numero & "." & extension)
A quoi correspond cette ligne au juste ??? Qu'est-elle sensé faire ?
Dans quel état se trouve ton formulaire lors de l'appel à ta propriété list du frm_assist1.List1 ?
Je vois que ton projet concerne un assistant et que apparemment tu change de formulaire à chaque étapes... Tu devrais déclarer des vairables dans un modules de cette façon elles seront accessibles via tous les formulaire, rempli ces variables à chaque validation (changement de formulaire).
@+ Mayzz
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 16:19
Bonjour,
oui exactement il s'agit d'un assistant et j'ai bien mis mes variables utilisées dans un module.
La ligne ; Name (filepath & "" &
frm_assist1.File1.List(0)) As (filepath & "" & nom & "-"
& numero & "." & extension)
consiste à renomer un fichier suivant les différents paramètres récupéré dans l'assistant(nom ,numero,..);
mon problème est que je n'arrives pas à récupérer le chemin que l'utilisateur à sélectionner dans le form 1 sur l'objet File1 de type FileListBox.
Lorsque tu me demandes dans quel état se trouve mon formulaire je ne vois pas ce que tu veux dire par état :D(je manque cruellement de vocabulaire).
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 juil. 2009 à 16:45
"et j'ai bien mis mes variables utilisées dans un module" <= Faux, puis ce que tu te sert de la propriété List(0), je vais essayé d'être plus explicite
Lors du démarrage de ton assistant ta frm_assist1 s'ouvre, puis l'utilisateur peut choisir un chemin via un dirlist et un filelist.
L'utilisateur le fait, puis clique sur le bouton suivant qui va masquer frm_assist1 et chager/afficher frm_assist2, et c'est la ou je veux en venir,
Tu dois placer dans un module la vaiable
Public FileName As String
Lors ce que l'événement click du bouton suivant de ta frm_assist1 est déclanché, tu te sers de cette procédure pour remplir la variable FileName et gérer les erreurs :
If Dir1.ListIndex -1 or File1.ListIndex -1 Then
MsgBox "Vous devez sélectionner un fichier et un dossier !"
Exit Sub
Else
FileName = Dir1.List(Dir1.ListIndex) & "" & File1.List(File1.ListIndex)
End If
Me.Hide
frm_assist2.show
De cette façon, arrivé à la frm_assist2 et les suivantes, tu n'aura pas besoin d'intéroger le filelist, mais juste la vairable Filename, car il se peut que selon l'état de ton formulaire (masqué, visible, avec ou sans focus) l'élément qui était sélectionné dans ton FileList ai disparu. Cette méthode résoud le problème.
Pour ce qui est de ça :
Name (filepath & "" & frm_assist1.File1.List(0)) As (filepath & "" & nom & "-" & numero & "." & extension)
Tu fais une erreur, le mot clé As Sert à donner un type à une variable uniquement
Dim i As Long
Dim MaVariable As String
Donc un objet ne peut pas être As (filepath & "" & nom & "-" & numero & "." & extension) Car ce n'est pas un type !
Une autre question qu'est ce que Name ? Un tableau ?? Un élément de tableau s'appel par un index et non par un String !
Dim Names(10) As string
Names(1) = "Toto"
Dim Nom1 As String
Nom1 = Names(1)
Mais je ne peux pas faire :
Nom1 = Names("Tartempion")
@+
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 17:03
Non non non,
Name fichier1 As fichier2 est u fonction qui permet de renommer fichier1 en fichier2, cette fonciton marche parfaitement en mode "monoform".
sinon nom est une variable de type string
numero variable de type integer
et extension de type string
sinon mes variables sont bien crées dans un module comme ceci :
Public nom As String
Public numero As String
Public extension As String
Public filelistcount As Integer
Public FileName As String
autre précision : l'assistant sert à renommer des lots de fichiers : l'utilisateur sélectionne donc seulement son dossier.
Dans le dernier form à l'aide d'une boucle on prends un à un les fichiers :
For numini = 0 To (filelistcount - 1)
Name (......) As (filepath & "" & nom & "-" & numero & "." & extension)
Next numini
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 juil. 2009 à 17:27
Alors la je ne capte rien du tout !!!
Un fonction doit retourné un objet, donc elle ne s'appelle pas comme un sub :
Dim Resultat As String
Resultat = Addition (A, B)
Ca c'est par exemple un appel à une fonction car le résultat de l'addiditon de a et b vont se retrouver dans la variable Result,
Je ne sais même pas comment ton code arrive à être compilé sans message d'erreur...
cette fonciton marche parfaitement en mode "monoform". <== Qu'appel tu le mode MonoForm ??? On parle bien de vb6 la ???
Franchement je veux bien te filé mon mail en MP pour que tu m'envoi ta source car si ca fonctionne comme ca... alors la !
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 17:33
BOnjour,
ba ouai je peux t'envoyer mes deux applications sa sera peut être plus simple :P(celle qui est sur une seule forme et celle qui est en assistant)
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 juil. 2009 à 18:13
Donc, c'est bien ce que je disait, ta fonction Name ne produit rien appart une belle erreur...
Ta fonction Name est déclaré nulle part, je ne vois pas comment tu peux l'appeler ?
Name (filepath & "" & frm_assist1.File1.List(numini)) As (filepath & "" & nom & "-" & numero & "." & extension)
De plus comme je te l'ai déja dis As désigne un Type... si tu n'as pas eu d'erreur de compile c'est parce que le code est telement bourré de bugs que même vb est perdu
Ou encore Public filepath As FileListBox 'chemin répertoire' <= rien n'est sélectionné dans cette filelist à quoi sert elle ??
Honetement ton code est tout ce qu'il y a de plus brouillon, je te conseille de tout reprendre à zéro !
Personne ne pourrat t'aider dans ces circonstances...
Ya rien de logique dans ton programme.. Tu met une filelist au début alors que l'utilisateur n'as besoin que de sélectionner que le dossier, a quoi elle sert ???
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 18:27
as tu essayé le "projet1" de l'archive que je t'ais envoyé , l'application fonctionne parfaitement ( le projet 1 ne comporte qu'une seule forme et celui-ci fonctionne je viens de let ester avant de te l'envoyer).
Si cette instruction ne fonctionne pas dans le projet2 c'est parque je ne lui donne pas les bons chemins des fichiers à renommer et c'est justement ici que j'ai besoin d'aide
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 18:36
petite précision concernant mon application totalement incohérente tu t'arrêtes sur un Filelist ; et oui celle-ci à son importance et sert tout simplement à indiquer le contenu du dossier que l'utilisateur va modifier. Celle-ci n'a simplement pas encore la propriété inactive qui empêchera l'utilisateur de clicker dessus.
en réponse à :" Ya rien de logique dans ton programme.. Tu met une filelist au début
alors que l'utilisateur n'as besoin que de sélectionner que le dossier,
a quoi elle sert ???"
j'espère t'avoir éclairé
gab
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 juil. 2009 à 18:41
Effectivement, tu as raison pour name ^^ (C'est de l'héritage de l'ancien vb, ça a tendance à se perdre et c'est vraiment mal foutu !)
Pour le reste ca ne change pas... tin filepath est déclaré, mais il n'est présent sur aucune des form ? Et le FileList de la première form à quoi sert-il ???
Le probleme vient de la ! le filepath à la valeur nothing lors du pas à pas
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 18:56
le Filelist de la première form sert à Afficher le contenu du dossier que l'utilisateur veut renommer( je sais pas moi comme un aperçu de son dossier),de manière à ne pas renommer n'importe quel dossier parcque sa pourrais avoir 2 3 conséquences de changer les noms et extensions de n'importe quels fichiers.
------------
Alors j'ai essayé pas mal de truc pour arriver à reconstituer le chemin de mon fichier à renommer et cette variable filepath en faisait partis(sans succès).
le projet que je t'ai envoyé n'est bien sur pas fonctionel
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 juil. 2009 à 19:04
"j'avais eu comme idée de faire quequechose du style :
dans mon module je déclare une variable de type FileListBox : Public filepath As FileListBox
et en sortant de la form1 'enregistrer' File1 dans cette variable
variable que je pourrais réutiliser par la suite
mais je n'ai aucune idée ed si on peut si prendre de cette manière ~~ " c'est ce que je te proposait depuis le début ^^
Pour le reste je t'ai proposé une autre soluce plus haut...
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 19:13
alors je viens de tester ta solution mais le problème est que
frm_assist1.File1.Path & "" & frm_assist1.File1.List(numini) ne renvois pas le premier fichier du dossier que l'utilisateur à choisis..
lorsque la form1 (ou l'on choisis le répertoire) est lancé, la DirListBox affiche un dossier sélectionné d'office (avant tout choix de dossier del a par de l'utilisateur) et la FileListBox affiche le contenu de Ce dossier.
Avec msgbox(frm_assist1.File1.Path & "" & frm_assist1.File1.List(numini) ) le fichier qui est renvoyé est le premier fichier présent dans le répertoire qui était sélectionné d'office et non celui que l'utisateur à sélectionné
gab
Mayzz
Messages postés2813Date d'inscriptionmardi 15 avril 2003StatutMembreDernière intervention 2 juin 202028 2 juil. 2009 à 19:42
C'est logique, tu Unload la frm_assist1, lors ce que tu appelle la propriété Path de la list1 de cette form elle te renvoie la propriété par défault
2 soluces :
1\ Tu n'appel pas unload Mais Me.Hide qui va juste cacher le formulaire mais à la fin de ton prog tu te retrouve avec tout tes formulaire chargé donc pas très propre...
2\ Tu crée une variable dans le Module :
Dim CurrentDirectory As String
Dans le frm_Asssit1 :
Private Sub lbl_suivant_Click()
CurrentDirectory = File1.Path '(ou dri1 comme tu veux)
filelistcount = File1.ListCount
frm_assist2.Show
Unload frm_assist1
End Sub
Dans le frm_assist5
Dim Flb As New FileListBox
Flb.Path = CurrentDirectory
For i = 0 To (filelistcount - 1)
Name (CurrentDirectory & "" & Flb.List(i)) As (CurrentDirectory & "" & nom & "-" & i & "." & extension)
Next
Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer. <
cs_gabkiel
Messages postés22Date d'inscriptionlundi 29 septembre 2008StatutMembreDernière intervention 6 janvier 2010 2 juil. 2009 à 21:28
arf désolé c'et moi qui me suis trompé.. le message d'erreur c'est bien 'invalid use of New keyword'
par contre c'est pour : Dim Flb As New FileListBox.