Mazhe
Messages postés17Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention15 novembre 2006
-
25 oct. 2006 à 09:29
Mazhe
Messages postés17Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention15 novembre 2006
-
26 oct. 2006 à 09:58
Bonjour,
je vous expose mon problème (qui n'en sera pas un pour vous ^^) en essayant d'être le plus clair possible :
Sur un serveur, appelé Srv1, se trouvent ces répertoires : prod1, prod2, prod3. Dans ces dossiers se trouvent certains fichiers, pas toujours les mêmes qui sont des fichiers de développement.
Sur un autre serveur, appelé Srv2, se trouvent les mêmes répertoires. Mais ces dossiers et fichiers sont en production, c'est-à-dire qu'ils sont utilisés via une application.
Ce que je souhaiterais pouvoir réussir à faire, c'est créé une interface avec 3 boutons qui ferait ceci :
Bouton 1 : copie du répertoire Prod1 (avec sous-répertoires et fichiers) de srv1 vers srv2
Bouton 2 : "" "" Prod2 " " " " "
Bouton 3 : "" "" Prod3
Les fichiers de srv1 remplaceraient ceux de srv2. En fait, il s'agit d'une mise à jour de fichiers faite par un "simple" copier/coller.
Auriez-vous le temps, la possibilité, la gentillesse de me dépanner siouplait ?
(Peut-être faudrait-il faire un map de lecteur réseau, je sais pas trop)
J'y connais fichtrement rien en VB.Je farfouille à gauche, à droite, teste le FSO mais j'y panne que dalle...
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 25 oct. 2006 à 10:27
Re,
Pour la demande de confirmation de copie
'Remplace source et destination par les variables adequat
If MsgBox("Etes vous sur de vouloir copie " & Source & " vers " & Destination, vbQuestion + vbYesNo, "Confiramtion") = vbYes Then
Call Fso.CopyFolder(Source, Destination, True)
End If
Set Fso = Nothing
Si tu veux indiquer les nombre de repertoire et fichier copié (+ barre de progression) peu etre devrait tu t'orienter vers une copie recursive
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 25 oct. 2006 à 11:03
Re,
Combien as tu de fichiers, car si il y en a bcp, il faut oublier le simple MsgBox pour afficher les fichiers qui vont etre copier.
Teste le code suivant (ajoute un listbox sur une feuille)
Private Sub Form_Load()
Dim Fso As New FileSystemObject
Dim result As String
Dim lists() As String
Dim i As Integer
result = ListRep("REpertoire a lister", Fso)
lists = Split(result, vbCrLf)
For i = LBound (lists) To UBound(lists)
Call List1.AddItem(lists(i))
Next
Set Fso = Nothing
End Sub
Private Function ListRep(Rep As String, Fso As FileSystemObject) As String
Dim Fol As Folder
Dim Fi As File
For Each Fi In Fso.GetFolder(Rep).Files
ListRep = ListRep & vbCrLf & Fi.Path
Next
For Each Fol In Fso.GetFolder(Rep).SubFolders
ListRep = ListRep & vbCrLf & ListRep(Fol.Path, Fso)
Next
End Function
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 26 oct. 2006 à 09:42
Salut,
Explication.
Split: Fonction renvoyant un tableau de base 0 à une dimension contenant les sous chaines.
En francais: Cette fonction "Casse" une chaine en sous chaine en cherchant le delimiteur passé en parametre.
Exemple: Soit result = "salut_comment_ca_va_aujourd'hui"
Si tu fais lists = Split(result, "_") et bien ton tableau sera:
Lists(0) => "salut"
Lists(1) = > "comment"
Lists(2) => "ca"
Lists(3) => "va"
Lists(4) => "aujourd'hui"
LBound (lists) To UBound(lists) : LBound (Ubound) = Renvoie un valeur de type long contenant le plus petit (grand) indice disponible pour la dimension indiqué d'un tableau.
Suite de l'Exmple precedent: LBound(Lists) = > 0 (car le tableau commence à 0)
Ubound(Lists) => 4 (car le tableau se termine à 4)
Donc avec une boucle allant de Lbound à UBound tu parcours tout le tableau
Set Fso = Nothing:
Pour faire simple: On a créée en mémoire un Objet Fso (Dim Fso As New
FileSystemObject ) Il faut une fois termine nos opération "détruire" l'objet pour ne pas qu'il reste => Set Fso = Nothing: Voila j'espere que tu es un peu plus éclairé
Note: le bouton Réponse acceptée c'est mieux si tu l'utilises sur les post de ceux qui ont pu t'aidé (sauf si tu estimes que personne de t'as aidé a résoudre le problème) @+, Ju£i?n
Mazhe
Messages postés17Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention15 novembre 2006 25 oct. 2006 à 10:09
Merci beaucoup jrivet, cela répond bien à ma question...
Par contre prod1 n'est p'tet pas utile en fait....
Ceci étant, y'a-t-il possibilité d'avoir une confirmation en fin de copie ? Du style : xx fichiers dans yy répertoires copiés, ou une barre de progression (quoique, vu la taille totale des fichiers à copier, c'est p'tet pô la peine...Pas le temps de la voir)..
Enfin, un message stipulant que ça a été copié...
Et (oui, je suis chiant), limite une demande de confirmation avant la copie : "Etes vous sur de vouloir effectuer la copie de svr1 vers srv2?"
En tout cas, merci bien, à la rigueur, je vais essayer de me dépatouiller avec ça...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 25 oct. 2006 à 10:25
Pour le message stippulant que ça a été copié, il te suffit de mettre un message box à la fin du code de jrivet :
MsgBox "Copie terminée".
Pour demander si tu veux vraiment effectuer la copie, il te suffit d'encadrer le code de jrivet avec une condition.
Tu peux mettre un truc de ce style avant son code :
Dim Copie as string
Copie = MsgBox("Voulez-vous copier le répertoire ?", vbYesNo)
If copie = vbyes then
'code de jrivet
end if
Mazhe
Messages postés17Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention15 novembre 2006 25 oct. 2006 à 11:08
Oui, il y a pas mal de fichiers....Enfin, ça dépend des fois..Ceci étant, je vois pas trop où placer ce code...(désolé d'être un rhoOooO Boulay -___-" )
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 25 oct. 2006 à 11:09
re,
si tu est bien sous vb6 alors tu as juste a copier/coller le code
(sauf si tu as deja qqch d'ecrit dans le Form_Load)
et a ajouter une LIstBox sur la feuille (Form)
en tout cas si il y as beaucoup de fichiers oublie le MsgBox
@+, Ju£i?n
Mazhe
Messages postés17Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention15 novembre 2006 25 oct. 2006 à 11:33
Ah ah ! mais c'est nickel ça.... Mais attention, encore plus dur, la compilation de tout ça ^^
C'est-à dire :
Bouton 1 renvoie une fenêtre de confirmation : "êtes vous sur de vouloir copier ces fichiers de srv1 à srv2 ?" avec en dessous, dans la listbox, les fichiers correspondant..
Bouton 2 : idem
etc...
En fait, en cliquant sur un bouton, il faudrait que la "variable" située dans ListRep change en fonction du répertoire concerné.
ex :
Si je clic sur PROD-APRR, dans la listbox en dessous, le chemin devrait être [file://\\nt01m[...]\PROD-APRR\data \\nt01m[...]\PROD-APRR\data][...]
Si je clic sur QUALIF-ATMB, dans la listbox en dessous, le chemin devrait être [file://\\nt01m\[...]QUALIF-ATMB\ \\nt01m\[...]QUALIF-ATMB\][...]
Voyez-vous ce que je veux dire ^^
Je parviens à changer ça en déclarant
srv1 = [file://\\nt01 nt01]m\...
srv2 = ...
et en modifiant la ligne result=listrep(SRVx, fso) mais je souhaiterais que cela soit fait automatiquement en même temps que l'apparition de la boite de confirmation..
Bon :
1- Je suis réellement navré de vous enquiquiner autant
2- Je vous remercie énormément du temps que vous prenez pour m'aider
3- J'apprends en même temps et ça c'est bien côOl
4- N'hésitez pas à m'envoyer ch... si c'est trop lourd à faire ;)
Mazhe
Messages postés17Date d'inscriptionmardi 24 octobre 2006StatutMembreDernière intervention15 novembre 2006 26 oct. 2006 à 09:27
Et bien, en fait, je souhaitais juste remercier les personnes m'ayant répondu ce qui m'a grandement aidé... (Enfin, en même temps, c'zest vous qui avez écrit le programme en fait ^^)
Ceci étant, je comprends pas tout à fait ceci :
result = ListRep("REpertoire a lister", Fso) <--- appel de la fonction ListRep déclarée
lists = Split(result, vbCrLf) |
For i = LBound (lists) To UBound(lists) |-- ce sont ces lignes que je saisi pas...
Call List1.AddItem(lists(i)) |
Next
Set Fso = Nothing <--- ça sert à quoi cette ligne ?
Donc, Split permet de mettre en page le "tableau" Lists mais je capte rien en fait... Si vous pouviez m'expliquer ou me trouver un lie (j'ai chercher dans l'MSDN mais rien ne reseemble à ça ^^)