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

IHM Discussion :

Récupération fichier excel dans un réseau


Sujet :

IHM

  1. #1
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut Récupération fichier excel dans un réseau
    Bonjour à tous,

    J'ai in projet (Merci à Tee_grandbois!!!) que je souhaite metre à dispositions d'utilisateurs qui vont le positioner sur leur PC. L'arborescence est propre à chaque utilisateur.
    Pour ce faire, j'avais pensé metre à disposition, dans ce projet, une table où l'opérateur pourrait, lui même metre le chemin.
    Le code viendrait faire appel au contenu du champ de la table:
    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
    Sub AddAllExcelFileWithClick()
     
    '****** TRAITEMENT DES FICHIERS EXCEL APRES RECEPTION ******
     
    Dim strRepTraitement As String      ' Répertoire des fichiers à traiter
    Dim strFichier As String            ' Nom du fichier à traiter
    Dim strRepArchivage As String       ' Répertoire d'archivage
    Dim oFso As Object                  ' File System Object pour déplacement des fichiers traités
     
    Set oFso = CreateObject("Scripting.FileSystemObject")
    strRepTraitement = "T001_Adresses_Fichiers_Reseau!Adresse_ToBeRecorded\"
    strRepArchivage = "T001_Adresses_Fichiers_Reseau!AAdresse _Recorded\"
     
    ' boucle tant que le répertoire contient les fichiers à traiter
    strFichier = Dir(strRepTraitement & "*.xlsm", vbDirectory)
     
    Do Until strFichier = ""
     
    ' traitement du fichier
    Call ImportFeuillesXLS_Appro(strRepTraitement & strFichier)
     
      ' déplacement du fichier traité dans répertoire d'Archivage
        oFso.MoveFile strRepTraitement & strFichier, strRepArchivage
    ' fichier suivant
        strFichier = Dir(strRepTraitement & "*.xlsm", vbDirectory)
     
    Loop
     
    rep = Dir("T001_Adresses_Fichiers_Reseau!Adresse_ToBeRecorded\*.xlsm", vbDirectory)
    'fichier a toujours le même nom ! donc kill
    Kill ("T001_Adresses_Fichiers_Reseau!AAdresse _Recorded\" & rep)
     
    End Sub
    J'intègrerais ensuite les champs "Adresse_ToBeRecorded" & "Adresse _Recorded" dans in formulaire pour qu'ils saisissent leurs propres chemin
    Comment faire pour appeller le contenu d'un champ se trouvant dans une table?

    Merci
    Totor

  2. #2
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonjour à tous,
    J'ai glané par ci par là sur le site des bouts de code que j'ai éssayé d'adapter.

    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
    Sub AddAllExcelFileWithClick()
     
    '****** TRAITEMENT DES FICHIERS EXCEL APRES RECEPTION ******
     
    Dim strRepTraitement As String      ' Répertoire des fichiers à traiter
    Dim strFichier As String            ' Nom du fichier à traiter
    Dim strRepArchivage As String       ' Répertoire d'archivage
    Dim oFso As Object                  ' File System Object pour déplacement des fichiers traités
     
    ''Ancien code
    'Set oFso = CreateObject("Scripting.FileSystemObject")
    'strRepTraitement = "C:\Users\BALMIGERE_O\Desktop\Test_Congélos\Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionToBeRecorded\"
    'strRepArchivage = "C:\Users\BALMIGERE_O\Desktop\Test_Congélos\Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionRecorded\"
     
                    'Code test recupération adresse dans le champ se trouvant dans la table T001_Adresses_Fichiers_Reseau
                    Set oFso = CreateObject("Scripting.FileSystemObject")
                    strRepTraitement = DLookup("Adresse_ToBeRecorded", "T001_Adresses_Fichiers_Reseau", "Adresse_ToBeRecorded")
                    strRepArchivage = DLookup("Adresse_Recorded", "T001_Adresses_Fichiers_Reseau", "Adresse_Recorded")
     
     
     
    ' boucle tant que le répertoire contient les fichiers à traiter
    strFichier = Dir(strRepTraitement & "*.xlsm", vbDirectory)
     
    Do Until strFichier = ""
     
    ' traitement du fichier
    Call ImportFeuillesXLS_Appro(strRepTraitement & strFichier)
     
      ' déplacement du fichier traité dans répertoire d'Archivage
        oFso.MoveFile strRepTraitement & strFichier, strRepArchivage
    ' fichier suivant
        strFichier = Dir(strRepTraitement & "*.xlsm", vbDirectory)
     
                    'Code test déplacement et destruction fichier
                    Loop
                    rep = Dir(DLookup("Adresse_ToBeRecorded", "T001_Adresses_Fichiers_Reseau", "Adresse_ToBeRecorded") & "\*" & ".xlsm", vbDirectory)
                    'fichier a toujours le même nom ! donc kill
                    Kill (DLookup("Adresse_Recorded", "T001_Adresses_Fichiers_Reseau", "Adresse_Recorded") & "\" & rep)
     
    ''Ancien code
    'Loop
    'rep = Dir("C:\Users\BALMIGERE_O\Desktop\Test_Congélos\Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionRecorded\*.xlsm", vbDirectory)
    'Kill ("C:\Users\BALMIGERE_O\Desktop\Test_Congélos\Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionRecorded\" & rep)
    '
    End Sub

    Tout d'abord le module "ImportFeuillesXLS_Appro"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call ImportFeuillesXLS_Appro(strRepTraitement & strFichier)
    ne se lance pas??
    Ensuite à la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Kill (DLookup("Adresse_Recorded", "T001_Adresses_Fichiers_Reseau", "Adresse_Recorded") & "\" & rep)
    J'ai unmessage d'erreur qui me dit "File not found" mais j'ai bien le fichier dans le réseau ?
    J'ai baitaillé avec les multiples errors de script et autres, mais il semblerait que ce ne soit pas le cas.
    Si quelqu'un a une idée?

    D'avance Merci
    Totor

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2009
    Messages
    131
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 131
    Points : 151
    Points
    151
    Par défaut
    Bonjour,

    Peux-tu me dire ce que retourne comme résultat tes 2 variables strRepTraitement et strRepArchivage ?

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour Totor92290,
    en premier lieu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DLookup("Adresse_Recorded", "T001_Adresses_Fichiers_Reseau", "Adresse_Recorded")
    le 3ème paramètre de Dlookup correspond à l'instruction Where et est facultatif, donc si il n'y a pas de condition et qu'il n'y a qu'un seul enregistrement, enlève "Adresse_Recorded" et laisse les "".
    Dans le cas contraire, il faut mettre une condition valide.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Kill (DLookup("Adresse_Recorded", "T001_Adresses_Fichiers_Reseau", "Adresse_Recorded") & "\" & rep)
    Deuxièmement, le problème avec ce genre de code, c'est qu'on ne voit pas grand chose, mieux vaut passer par une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strFichier = DLookup("Adresse_Recorded", "T001_Adresses_Fichiers_Reseau", "") & "\" & rep
    et avec Debug.Print strFichier juste après la ligne de code afficher ce qu'on a récupéré.

    Tout d'abord le module "ImportFeuillesXLS_Appro"
    ne se lance pas??
    Troisièmement là encore, en utilisant le débogage on peut vérifier si les variables sont correctes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print strRepTraitement & strFichier
    Et si tout est correct, on vérifie ensuite que les fichiers sont là où ils devraient être.
    Tu peux aussi mettre des points d'arrêt dans ton code pour voir ce qui se passe (un clic sur la barre verticale à gauche fait apparaitre une pastille rouge foncé et surligne la ligne de code de la même couleur. Attention: les lignes de déclaration de variables ne sont pas sélectionnables.

    Ensuite on peut utiliser les touches F8 pour le mode pas à pas ou F5 pour continuer jusqu'au point d'arrêt suivant ou jusqu'à la fin du code. Ne pas oublier de les effacer à la fin du débogage (Ctrl Maj+F9)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Tee_grandbois,

    Impec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print strRepTraitement & strFichier
    !!!

    Sur du F8 en passant la souris sur la zone jaune j'ai bien le chemin mais il ne s'affiche pas en entire.
    je continue le F8 et le problème se situe au niveau du code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Set xlWbk = xlApp.Workbooks.Open(pNomClasXLS)
    dans ce code (que tu connais bien )
    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
    Function ImportFeuillesXLS_Appro(pNomClasXLS As String)
    '--------------------------------------------
    ' paramètres
    ' pNomClasXLS: nom du classeur
    '--------------------------------------------
    Dim xlApp As New Excel.Application
    Dim xlWbk As Excel.Workbook
    Dim xlWsh As Excel.Worksheet
    Dim lgDerlig As Long                        ' dernière ligne utile de la feuille
    Dim lgDerCol As Integer                     ' denière colonne utile de la feuille
    Dim C As Integer                            ' indice pour colonne
    Dim K As Integer                            ' indice de travail
    Dim L As Integer                            ' indice pour ligne
    ' variables données -------------------------
    Dim dtRequest As String                     ' date demande
    Dim strClient As String                     ' client
    Dim strBatiment As String                   ' bâtiment
    Dim strPoste As String                      ' poste
    Dim strLettreCongelo As String              ' lettre congélateur
    Dim strNomDemandeur As String               ' nom demandeur
    Dim strHeureLivSouhaite As String           ' date/heure livraison souhaitée
    Dim strTelDemandeur As String               ' tél. demandeur
    Dim strListeRefPR As String                 ' liste des références produit
    ' variables tableaux ------------------------
    Dim tabloRefPR() As String                  ' tableau des références produit
    Dim tabloCondQte() As String                ' tableau des conditionnements et des quantités
     
    Dim oRst As Recordset                       ' recordset de la table à remplir
    '--------------------------------------------
    ' ouverture fichier excel et desactiver la macro
     
        xlApp.EnableEvents = False
        Set xlWbk = xlApp.Workbooks.Open(pNomClasXLS)
        xlApp.Visible = True
        xlApp.EnableEvents = False
     
     
    '--------------------------------------------
    ' chargement de la feuille
        Set xlWsh = xlWbk.Worksheets(1)
     
    ' dernière ligne utile de la feuille
        lgDerlig = xlWsh.UsedRange.Rows.Count
    ' Dernière colonne utile de la feuille
        lgDerCol = xlWsh.UsedRange.Columns.Count
    '--------------------------------------------
    ' récupération des données fixes lignes 20 à 23
        dtRequest = xlWsh.Range("J20")                      ' date demande
        strClient = Trim(xlWsh.Range("B22"))                ' client
        strBatiment = Trim(xlWsh.Range("D22"))              ' batiment
        strPoste = Trim(xlWsh.Range("F22"))                 ' poste
        strLettreCongelo = Trim(xlWsh.Range("I22"))         ' lettre congelateur
        strNomDemandeur = Trim(xlWsh.Range("K22"))          ' nom demandeur
        strHeureLivSouhaite = Trim(xlWsh.Range("D23"))      '  date/heure livraison souhaitée
        strTelDemandeur = Trim(xlWsh.Range("J23"))          ' tél. demandeur
    '--------------------------------------------
    ' récupération des références produits ligne 27
        L = 27
        For C = 2 To lgDerCol
            If xlWsh.Cells(L, C) <> "" Then strListeRefPR = strListeRefPR & xlWsh.Cells(L, C) & "|"
        Next C
     
        tabloRefPR = Split(CStr(Left(strListeRefPR, Len(strListeRefPR) - 1)), "|")
    '--------------------------------------------
    ' Alimentation de tabloCondQte, tableau à 2 dimensions
    ' la première contient les conditionnements, la seconde les quantités.
    ' Formule pour le redimensionnement de la première dimension du tableau:
    ' ((nombre total de lignes - ligne de début des données) - 1) * 0.5
    ' exemple pour le fichier actuel: ((34 - 27) - 1 ) * 0.5
    ' on enlève 1 car on est en base 0 et comme une ligne sur deux est vide à cause
    ' des cellules fusionnées on multiplie par 0.5 ce qui équivaut à diviser par 2
     
        L = ((lgDerlig - L) - 1) * 0.5
        ReDim tabloCondQte(L, UBound(tabloRefPR) + 1)
        K = 28
        For L = 0 To UBound(tabloCondQte, 1)
            If xlWsh.Cells(L + K, 1) <> "" Then
                For C = 0 To UBound(tabloCondQte, 2)
                    tabloCondQte(L, C) = xlWsh.Cells(L + K, C + 1)
                Next C
                K = K + 1                       ' pour se positionner sur la bonne ligne (évite le problème de fusion de cellules)
             End If
        Next L
    '--------------------------------------------
    ' Chargement des données dans la table
    ' ouverture table à alimenter
        Set oRst = CurrentDb.OpenRecordset("tbl_Taxi", dbOpenDynaset)
        For L = 0 To UBound(tabloCondQte, 1)
            K = 0
            For C = 0 To UBound(tabloRefPR)
                oRst.AddNew
                oRst.Fields("Conditionnement") = Trim(tabloCondQte(L, 0))
                oRst.Fields("Reference_Produit") = Trim(tabloRefPR(K))
                oRst.Fields("Quantite") = Val(tabloCondQte(L, C + 1))
                oRst.Fields("Date_Request") = CDate(dtRequest)
                oRst.Fields("Client") = strClient
                oRst.Fields("Batiment") = strBatiment
                oRst.Fields("Poste") = strPoste
                oRst.Fields("Lettre_Congelateur") = strLettreCongelo
                oRst.Fields("Nom_Demandeur") = strNomDemandeur
                oRst.Fields("Date_Heure_Liv_Souhaite") = strHeureLivSouhaite
                oRst.Fields("Numero_Tel_Demandeur") = strTelDemandeur
                oRst.Update
    ' référence produit suivant
                K = K + 1
            Next C
        Next L
    '--------------------------------------------
    ' fermeture des objets
        Set oRst = Nothing
        xlWbk.Close False
        xlApp.Quit
     
    End Function
    Par contre en "click" sur le bouton qui déclenche les ajouts et déplacements des fichiers j'ai in pop up qui que dit que le fichier n'a pas été trouvé à l'emplacement ... et là "c'est le drâme"...
    Sorry, we couldn't find:
    C:\Users......Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionToBeRecordedC:\Users......Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionRecorded
    Tout attaché...j'ai in "&" qui concatenate les deux addresses?

    Merci
    Totor

  6. #6
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Sorry, we couldn't find:
    C:\Users......Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionToBeRecordedC:\Users......Data_Collection_Learning\Excel_Raw_Taxi_DataCollectionRecorded
    Tout attaché...j'ai in "&" qui concatenate les deux addresses?
    ben c'est là ton problème. Il faut revoir le chargement des variables en question ... comme elles sont dans des tables pour certaines, difficile de diagnostiquer à ta place ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  7. #7
    Membre régulier Avatar de totor92290
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 418
    Points : 102
    Points
    102
    Par défaut
    Bonjour tee_grandbois,
    Pour mon information, la fonction debug.print, peut-elle s'appliquer sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       Set xlWbk = xlApp.Workbooks.Open(pNomClasXLS)
    Merci
    Totor

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour
    un clic sur la barre verticale à gauche fait apparaitre une pastille rouge foncé et surligne la ligne de code de la même couleur.
    s'il ne veut pas, c'est que ce n'est pas possible ...
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/06/2018, 23h26
  2. [Servlet]POI et affichage d'un fichier excel dans IE
    Par vseb99 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 08/02/2006, 13h59
  3. Réponses: 7
    Dernier message: 23/11/2005, 18h20
  4. importer données fichier excel dans bd mysql
    Par Hydre dans le forum Administration
    Réponses: 1
    Dernier message: 05/10/2005, 19h39
  5. Réponses: 7
    Dernier message: 04/10/2005, 18h21

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