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

Macros et VBA Excel Discussion :

Problème fonction DIR avec variable


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut Problème fonction DIR avec variable
    Bonjour,

    Je suis Novice VBA et ai bsoin de vos lumières.

    La facturation de nos prestations est faite deux fois par mois (deux envois), chacune regroupant un type de prestation. Chaque service reçoit par mois un récapitulatif de son activité facturée. Il reçoit donc deux fichiers par mois. Tous les fichiers de chaque mois sont stockés dans un répertoire commun et sont structurés de la sorte: Nom_service & N°envoi_facturation. Mon objectif est de faire un TCD pour le service qui reprend les données facturation de plusieurs envois.

    Je souhaite que l'utilisateur puisse indiquer pour quels envois il veut le TCD. ==> Donc j'ai fait un Userform pour stocker input sous forme de variable (numenvoi1 et numenvoi2).

    Mon problème ce situe au niveau de la consolidation des données dans un fichier unique.

    Ma première idée est d'utiliser la fonction DIR. Cependant je n'arrive pas a limiter ma sélection aux fichiers correspondant aux envois que l'utilisteur souhaite.

    J'ai essayé :
    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
    Dim Numenvoi1 as long  (récupéré via userform - exemple valeur = 522)
    Dim Numenvoi2 as long (récupéré via userform - exemple valeur = 523)
     
     
    FolderPath = "C:\Documents\EnvoiFactures\"
     
    FileName = Dir(FolderPath & "*" & Numenvoi1) Or Dir(FolderPath & "*" & Numenvoi2)
     
    Do While FileName <> ""
         Set WorkBk = Workbooks.Open(FolderPath & FileName)
          For Each ws In WorkBk.Worksheets..............
        ...
        ..
        .
         WorkBk.Close savechanges:=False
          FileName = Dir()
     Loop

    ==> Marche pas. Le problème se situe au niveau de la var Filename. Pourquoi?

    Autre alternative ???? => mettre dir(folderpath) et en début du loop mettre une condition de sortie du loop si filename ne termine pas par numenvoi1 ou num envoi2????

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, une recherche ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    bonsoir et merci 'avoir répondu.

    Je ne pense pas que le lien vers lequel vous me redirigez puisse m'aider.

    Mon problème est que dans le répertoire se trouve des fichiers dont je ne veux pas extraire les données. Je veux simplement prendre les fichiers qui intéresse l'utilisatuer, c'est-à-dire ceux qu'il a exprimé via le userform et que je stocke dans les variables Numenvoi1 et numenvoi2.

    ex. Dansle répertoire se trouve les fichiers:

    - Envoi facturation 456.xls
    - envoi facturation 457.xls
    - Envoi facturation 458.xls
    - envoi facturation 459.xls

    Jje souhaite faire le TCD avec les données du 457 et 459.

    Est-ce que la fonction array pourrait m'aider pou définir l'ensemble numenvoi1 et numenvoi2?

    Merci d'avance pour votre aide

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    La fonction Dir n'admet pas de "OR".
    Elle admet l'utilisation de caractères génériques (les "jokers") dans le chemin d'accès spécifié --->>
    est compréhensible :
    l'est également
    mais en aucun cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dir chemin & "457" or dir chemin & "459"
    il est dans ton cas possible d'utiliser
    et, au sein de la boucle while de parcours de tous les fichiers commençant ainsi par chemin & "45", d'utiliser une condition restrictive sur le filename pour ne retenir que ce que tu veux

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Septembre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur commercial
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2017
    Messages : 3
    Par défaut
    Bonjour et merci pour votre réponse,

    1) La condition resrictive pourait-elle être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    FileName = Dir(FolderPath)
     
    Do While FileName <> "
    IF left(filename,3) LIKE numenvoi1 OR left(filename,3) LIKE numenvoi2 THEN
    Set WorkBk = Workbooks.Open(FolderPath & FileName) 
    else EXIT DO
    end if
    .....
    ....
    FileName = Dir()
    Loop
    2) Pour mon info, serait-il aussi possible d'utiliser la fonction filesearch de la sorte?

    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
    Set oFS = Application.FileSearch
     
    With oFS
        .NewSearch
        .FileType = msoFileExcelWorkbooks
        .Filename = bumEnvoi1 Or Numenvoi2<<<<<<<<<<<<<<<<<<<<<???????????????????
        .LookIn = "D:\mon répertoire
        .SearchSubFolders = True
        .Execute
     
     End With
     
    For each workbook in Foundfiles
     
    Set WorkBk = Workbooks.Open(FolderPath & FileName)
    For Each ws In WorkBk.Worksheets..............
    ...
    ..
    .
    WorkBk.Close savechanges:=False
    Next
    Next

  6. #6
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, Balise ton code des posts 1 et 5 !

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/03/2017, 23h03
  2. [MySQL] Problème de syntaxe avec variable utilisée dans fonction PHP et MySQL
    Par redvivi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/03/2008, 21h07
  3. [MySQL] problème fonction php avec LAST_INSERT_ID()
    Par carmen256 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/12/2006, 09h51
  4. Fonction INDIRECT avec variable sur n° de colonne
    Par mat.guillaume dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 30/08/2006, 18h04
  5. Problème fonction random avec linux
    Par fabetvince dans le forum C
    Réponses: 12
    Dernier message: 25/05/2006, 23h45

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