IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

parcourir des tableaux pour faire des copies/renommages de fichiers


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut parcourir des tableaux pour faire des copies/renommages de fichiers
    Bonsoir,

    J'ai encore une colle.

    Voilà, avec un bouton, je sélection un fichier extrait d'excel au format.csv dont voici le contenu :

    M5711002000000;P9991002000000
    M5711002000000-STD01;P9991002000000-STD01
    M5711002000100;P9991002000100
    M5711002000100-STD01;P9991002000100-STD01
    M57110020-01;P99910020-01
    M57110020-02;P99910020-02

    Comme vous le remarquerez, il y a deux noms de chaque coté de la virgule.
    Le premier est le début du nom qui existe dans mon répertoire de travail et le second est celui que prendra le nom du fichier quand il sera écrit dans le répertoire de sortie.

    Voilà ce que j'ai fait.
    Avec une boucle, je crée deux tableaux 0 et 1 et à i, je positionne les noms :
    pour i = 1 dans le tab. 0 on trouve M5711002000000 et
    pour i = 1 dans le tab. 1 on trouve P9991002000000 etc.

    voici mon code :
    #CODE#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     Private Sub CmdBrowseCvsFile_Click()
        On Error GoTo ErrorFile
        winCmd.CancelError = True
        winCmd.InitDir = "c:\"
        winCmd.Filter = "Csv File (.csv)|*.csv"
        winCmd.FilterIndex = 1
        winCmd.Action = 1
        winCmd.ShowOpen
            strPathCsv = winCmd.FileName
     
    ' Permet de modifier la valeur Text du champ de texte.
    txtPathExcelFile.text = strPathCsv 'indique le chemin complet
    txtPathExcelFile.BackColor = &H80000005  'change la couleur du label
    'lbltxtPathExcelFile.Caption = ""
     
    '===========================================================================
    ' lecture du fichier
    Dim L As String
    Dim i As Long
    Dim Datas() As String
    'anciens nom de fichiers
    Dim tableauNEW() As String
    'nouveaux nom de fichiers
    Dim tableauOLD() As String
    i = 0
     
    Open txtPathExcelFile.text For Input As #1
     
    While Not EOF(1)
    Line Input #1, L
    Datas = Split(L, ";")
    tableauOLD(i) = Datas(0)
    'MsgBox Datas(0)
    tableauNEW(i) = Datas(1)
    'MsgBox Datas(1)
    i = i + 1
    Wend
    Close #1
     
    'filecopy (
    'Next i
     
    Exit Sub
     
    ErrorFile:
     
    End Sub
    #/CODE#
    --------------------------------------------------------------------------
    Maintenant avec un bouton Start, je lance la fonction CopyFile qui se trouve dans le module copyFileTemp dont voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Function CopyFile()
    'Lecture du tableau 1 et 2 pour copier les fichiers dans c:\temp\IN et c:\temp\OUT
    MsgBox "For i = 0 To tableauOLD.Getupperbound(0)", vbInformation, "Valeurs en entrée"
    MsgBox "For i = 0 To tableauNEW.Getupperbound(0)", vbInformation, "Valeurs en sortie"
    End Function
    -------------------------------------------------------------------------

    En fait pour le moment, je voudrais juste afficher ce que les tableaux contiennent. Et si c'est bon, je ferais j'espère le code qui permettra de copier les fichiers \\toto\IN\* du réseau vers c:\..\IN en local puis de c:\..\IN en local vers c:\..\OUT en local avec le "renommage" des fichiers puis si tout fonctionne une dernière procédure pour copier les fichiers renommés vers le réseau \\toto\OUT.

    Mais bon, bref, je n'arrive même pas à afficher le contenu du tableau....
    chuis Désolé

    si quelqu'un peut m'aider .....
    Merci les ami(e)s

    Cordialement,
    Patrick
    Cordialement,
    Paloma



    Pensez au

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Pensez aux balises #CODE# svp

    Sinon pourquoi 2 tableaux ?

  3. #3
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Pourquoi deux tableaux ....
    Ben je débute alors j'y vais doucement
    Mais bon, j'aimerais savoir si mes tableaux sont bien rempli ....

    Un jour je poserais surement moins de questions qui sembles idiotes.

    En tout cas merci...
    je cherche toujours à afficher ce contenu.

    cordialement,
    Patrick
    Cordialement,
    Paloma



    Pensez au

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    A ta place, je ne dissocierais pas la lecture de la copie puisque qu'à priori, tu es obligé de lancer la procédure de copie après avoir rempli les tableaux... (sinon tu perds le contenu de ceux-ci en quittant)

    Du point de vue méthode, je ferais un truc comme ça à vue de nez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Dim Montabl(1) as String, MaLigne as String
     
    Open "C:\monfichier.csv" For Input as #1
       While Not EOF(1)
          Line Input #1, MaLigne
          MonTabl = Split(MaLigne, ";")
          FileCopy "C:\Temp\IN\" & MonTabl(0), "C:\Temp\OUT\" &  MonTabl(1)
       Wend
    Close #1
    Avec les vérifications qui vont bien etc.

  5. #5
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par Paloma dans un autre topic
    Je vais pouvoir essayer de faire la copie de mes fichier qui sont dans ce répertoire sous strPathJob\IN vers strPathTemp\IN (répertoire local c:\temp\IN)

    @ bientôt.
    Je sais pas pourquoi, mais je la sentais venir, cette question
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  6. #6
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Gloops
    Désolé ThierryAIM !

    En fait, je me mélange un peu les pinceaux ou je m'explique mal.
    Le résultat sera en fait le même Mais !

    Voilà, comment afficher le contenu de mes tableaux pour voir si tout va bien.
    Si je réactive mes MsgBox et que je passe en commentaire mon tableauOLD(i) et tableauNEW(i) ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    'tableauOLD(i) = Datas(0)
    MsgBox Datas(0)
    'tableauNEW(i) = Datas(1)
    MsgBox Datas(1)
    J’ai bien un message pour chaque valeur de mes tableaux mais j'aimerais me rassurer et être sur que c'est bien ça.


    Plus, ce que j'ai oublié de dire :

    Les noms de fichiers ne sont pas complets mais le début de chacun est suffisant pour les trouver dans le répertoire IN du réseau. Donc j'utilise * dans file copy.
    Et en fait, le "rename", je ne sais pas encore comment traiter les noms complets vu qu'ils sont incomplets dans mes tableaux.

    Je devrais, peut être, refaire un tableau avec la liste des fichiers contenu dans mon répertoire c:\temp\IN et renommer vers c:\temp\OUT en utilisant un échange de caractère en utilisant les deux tableaux extrait du .cvs ????

    Enfin dur dur ....

    chat fê mal tout chat

    @ plus je bosse encore dessus on verra ....
    Merci pour le coup de pousse les gars vous m'avez déjà pas mal aidé.

    Bien à vous

    Patrick
    Cordialement,
    Paloma



    Pensez au

  7. #7
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut pour la question sur la copie de fichiers
    pour le moment j'en suis la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    ' lecture du fichier
    Dim L As String
    Dim i As Long
    Dim Datas() As String
    'anciens nom de fichiers
    Dim tableauNEW() As String
    'nouveaux nom de fichiers
    Dim tableauOLD() As String
    i = 0
     
    Open txtPathExcelFile.text For Input As #1
     
    While Not EOF(1)
    Line Input #1, L
    Datas = Split(L, ";")
    tableauOLD(i) = Datas(0)
    'MsgBox Datas(0)
    tableauNEW(i) = Datas(1)
    'MsgBox Datas(1)
    i = i + 1
    ' copie les fichiers sur le disque local
    FileCopy strPathJobIN & tableauOLD(0) & "*", strPathTempIN
    Wend
    Close #1
     
    'filecopy (
    'Next i
     
    Exit Sub
     
    ErrorFile:
     
    End Sub
    et ça ne marche po, mais je trouverais, je trouverais

    @ plus
    Patrick
    Cordialement,
    Paloma



    Pensez au

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    je ne sais pas si filecopy fonctionne avec des * ... mais tu peu utiliser Dir pour obtenir le nom complet du fichier...

  9. #9
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut les fichiers
    le problème avec tout ça c'est que le répertoire IN sur le réseau peu contenir des fichiers inutile donc il faut que je respecte les valeurs de mon tableau.

    peut qu'avec ça je chauffe ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' copie les fichiers sur le disque local
    For i = 0 To upperbound
    FileCopy strPathJobIN & i & "*", strPathTempIN
    Next i
    Enfin .... j'espère

    @ plus
    Cordialement,
    Paloma



    Pensez au

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 730
    Points : 876
    Points
    876
    Par défaut
    Citation Envoyé par bbil
    je ne sais pas si filecopy fonctionne avec des *
    Non, ça ne fonctionne pas, il devra utiliser Dir()

  11. #11
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut oui merci j'ai vu mais je ne sais pas comment faire ...
    ok ok d'accord j'ai du mal mais je bosse pour m'améliorer.
    Ce n'est pas mon métier de base mais j'espère rentrer dans le cercle des developpeurs visual basic un jour ....

    Bon je cherche et on verra .....
    voici le code en cours on ne sait jamais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
     
    Option Explicit
    Private strPathCsv As String
    Private strPathJob As String
    Public strPathJobIN As String
    Public strPathJobOUT As String
    Public strPathTemp As String
    Public strPathTempIN As String
    Public strPathTempOUT As String
     
     
     
    Private Sub CheckBox1_Click()
     
    End Sub
     
     
    Private Sub CmdBrowseJobDirectory_Click()
        'Récupération du chemin de travail
        'MsgBox SelectFolder("Sélectionnez un répertoire :", 0)
        strPathJob = SelectFolder("Sélectionnez un répertoire :", 0)
     
        ' Permet de modifier la valeur Text du champ de texte.
        txtPathJobDirectory.text = strPathJob 'indique le chemin complet
        txtPathJobDirectory.BackColor = &H80000005  'change la couleur du label
        'lbltxtPathExcelFile.Caption = ""
     
        'initialisation des variables pour les chemins de transfert de fichier
        strPathJobIN = strPathJob & "\IN\"
        MsgBox strPathJobIN
        strPathJobOUT = strPathJob & "\OUT\"
        MsgBox strPathJobOUT
     
        '===========================================================================
    ' lecture du fichier
    Dim L As String
    Dim i As Long
    Dim Datas() As String
    'anciens nom de fichiers
    Dim tableauNEW() As String
    'nouveaux nom de fichiers
    Dim tableauOLD() As String
    i = 0
     
    Open txtPathExcelFile.text For Input As #1
     
    While Not EOF(1)
    Line Input #1, L
    Datas = Split(L, ";")
    tableauOLD(i) = Datas(0)
    'MsgBox Datas(0)
    tableauNEW(i) = Datas(1)
    'MsgBox Datas(1)
    i = i + 1
    ' copie les fichiers sur le disque local
    For i = 0 To tableauOLD.Lenght - 1
    FileCopy strPathJobIN & i & "*", strPathTempIN
    Next i
    Wend
    Close #1
     
    'filecopy (
    'Next i
     
    Exit Sub
     
    End Sub
     
    Private Sub CommandButton2_Click()
     
    End Sub
     
     
    Private Sub CatDuavBox_Click()
        Call catDuavOption
    End Sub
     
    Private Sub ExcelFileSelectButton1_Click()
    ' Choix du répertoire de diffusion
    Dim strResultOpenFile As String
        strResultOpenFile = ShowOpenFileDialog("Xls File (*.xls)|*.xls", "", "", OFN_NOCHANGEDIR)
        'txtRepertoire.text = strResultOpenFile
        ' Mise à jour de la variable globale
        'eXls.Main = strResultOpenFile
    End Sub
     
    Private Sub INOUTSelectDirectory_Click()
        Call SystemDirectory
    End Sub
     
    Private Sub Help_Click()
     
    End Sub
     
    Private Sub QCheckBox2_Click()
     
    End Sub
     
    Private Sub CommandButton1_Click()
     
    ' initialisation des chemins locaux manuellement
        strPathTemp = "c:\temp"
        strPathTempIN = strPathTemp & "\IN\"
        strPathTempOUT = strPathTemp & "\OUT\"
     
        MsgBox "Please see if " & strPathTempIN & " " & "is created on your PC", vbCritical, "Caution !"
        MsgBox "Please see if " & strPathTempOUT & " " & "is created on your PC", vbCritical, "Caution !"
    End Sub
     
    Private Sub CmdBrowseCvsFile_Click()
        On Error GoTo ErrorFile
        winCmd.CancelError = True
        winCmd.InitDir = "c:\"
        winCmd.Filter = "Csv File (.csv)|*.csv"
        winCmd.FilterIndex = 1
        winCmd.Action = 1
        winCmd.ShowOpen
            strPathCsv = winCmd.FileName
     
    ' Permet de modifier la valeur Text du champ de texte.
    txtPathExcelFile.text = strPathCsv 'indique le chemin complet
    txtPathExcelFile.BackColor = &H80000005  'change la couleur du label
    'lbltxtPathExcelFile.Caption = ""
     
    '*****************************************
     
    ErrorFile:
     
    End Sub
     
    Private Sub cmddExitButton_Click()
        Unload Me
        End
    End Sub
     
    Private Sub cmdHelp_Click()
        Call HelpMessage
    End Sub
     
    Private Sub CmdReadOnlyButton_Click()
        Call passerClasseur_lectureSeule
            MsgBox "Excel file's protected now!", vbInformation, "Lock Excel File"
    End Sub
     
     
    Private Sub CmdStart_Click()
        'copie les fichiers sources vers temporaire IN
        Call CopyFile
        MsgBox "Data processed  successfully", vbInformation, "Congratulations !"
    End Sub
     
    Private Sub ProgressBar2_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
     
    End Sub
     
     
    Private Sub txtPathExcelFile_Change()
    '    Dim path As String
    '    path = BrowseDir(Me.hWnd, "Please select CSV File (.csv) ")
    '    If (path <> "") Then
    '    edtPath = path
    '    End If
    End Sub
     
    Private Sub txtPathJobDirectory_Change()
     
    End Sub
    pas mal pour un débutant de trois semaine non ?
    bon allez soyez sympa quand même ... dit un tout petit oui oui au moins

    @ plus.
    Patrick
    Cordialement,
    Paloma



    Pensez au

  12. #12
    Membre régulier Avatar de Paloma
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 228
    Points : 79
    Points
    79
    Par défaut Bon ok j'améliore plutôt mon fichier .csv sous excel.
    Bon merci beaucoup les gars.

    Je vais plutôt utiliser un complément de macro sous Excel pour compléter automatiquement les noms de fichiers.
    Je posterais une question si je ne me débrouille pas tout seul.

    Merci pour votre aide.

    Cordialement,
    Patrick
    Cordialement,
    Paloma



    Pensez au

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  2. [XL-2010] Macro pour boucler dans une liste pour faire des tableaux/onglets
    Par Souris1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/09/2013, 17h25
  3. Recherche composant pour faire des tableaux
    Par Anthone dans le forum C#
    Réponses: 2
    Dernier message: 03/09/2010, 12h23
  4. [XSLT] probleme pour faire des tableaux html
    Par Lockless dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 16/06/2006, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo