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 incrémentation automatique fonction Dir VBA [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Par défaut Problème incrémentation automatique fonction Dir VBA
    Bonjour à tous,

    Premier message ici, mais je suis un lecteur aguerri de votre forum

    J'ai un problème avec la fonction Dir VBA : le problème est extrêmement simple mais je n'arrive pas à comprendre la mécanique :

    J'appelle la fonction Dir, en lui donnant le chemin d'accès au répertoire. Jusque là, tout va bien : elle m'affiche le premier document de mon répertoire.
    Je sais que la fonction Dir s'incrémente toute seule quand on la rappelle, et j'ai déjà créé des (très grosses) macros de gestion de base de données avec ça, et ça marchait comme un charme. Seulement, le problème maintenant est qu'elle s'incrémente à chaque ligne de code suivante, qu'on l'appelle de nouveau ou non.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub fck_this()
     
    rep = "X:\99_Données personnelles\JOUSSE_Pierre-Marin\Portugal\VSM Leap portugal\"
    Dir (rep)
     
    i = 1
    i = 2
    i = 3
     
    End Sub
    Dans cet exemple, à chaque ligne de code changeant la valeur de i, la valeur de Dir change aussi, balayant automatiquement mon répertoire alors que je ne l'ai pas appelée.
    Je n'ai pas trouvé la soluce sur internet, je me tourne donc vers vous pour m'apporter un peu d'aide
    J'ai mis en pièce jointe le classeur avec le code, on sait jamais

    Merci d'avance, et à tous et à toutes une excellente journée,

    Pierre-Marin, alias Ahmtaro the almighty hamster!!!

    Ps : je ne sais pas utiliser la balise CODE, donc désolé pour le code en rouge...
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur Qualité (Microtechnique)
    Inscrit en
    Février 2016
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur Qualité (Microtechnique)
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2016
    Messages : 188
    Par défaut
    Hello
    Ceci peut Peut-être t'aider:
    http://excel.developpez.com/faq/?pag...BoucleFichiers


    PS je ne comprends pas ton histoire d’incrémentation de la fonction Dir
    J’ai essayé une suite de
    Msgbox(Dir(«mondossier\ »))
    et cela m’a donné à chaque fois le nom du premier fichier du dossier (sans increment)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Par défaut
    Salut nodens_swiss

    Merci de ta réponse

    Malheureusement j'ai déjà suivi ce psot, j'ai essayé plein de manières différentes d'utiliser Dir, mais j'ai toujours le même résultat.

    Normalement, l'incrémentation de ton Dir, c'est à dire le fait de lire le fichier suivant, se fait en stockant Dir dans une variable, habituellement fichier = Dir qui du coup appelle Dir et passe au fichier suivant.

    Mais là, à chaque ligne de code, quelle qu'elle soit, Dir est incrémenté.
    J'ai intégré l'image de mon résultat. Normalement, n'ayant appelé Dir qu'une fois je devrais avoir dans la fenêtre exécution 4 fois "liste questions VSM.docx", or on voit bien qu'il a incrémenté Dir.

    Nom : Capture.JPG
Affichages : 994
Taille : 105,3 Ko

    Je me doute bien que ce n'est probablement pas une histoire de code, mais peut-être un problème de bibliothèques, de version Excel ou je ne sais quoi... Je n'ai pas ajouté de bibliothèques, et le bout de code sur l'image est le seul code présent dans le fichier.

    J'espère avoir été plus clair

  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
    tes i n'ont rien à voir dans cette affaire
    chaque évocation (comme tu le fais par debugprint, ou autrement ... le seul fait de l'évoquer ...) de dir passe au fichier suivant.
    Que souhaites-tu faire très exactement ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    c'est tout à fait normal.

    Ton incrément i n'y est pour rien

    Tu initialises ton Dir avec un chemin d'accès, et il te retournes le premier fichier correspondant
    Ensuite, à chaque fois que tu rappelles la fonction Dir sans spécifier de nouveau chemin, tu obtiens le fichier suivant sur le chemin précédemment renseigné

    voici un exemple Microsoft : https://msdn.microsoft.com/fr-fr/lib...(v=vs.90).aspx

    On voit clairement qu'il y a énumération d'un fichier "suivant" en dehors de la boucle Do While (ligne de code 11)
    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
    Dim MyFile, MyPath, MyName As String
    ' Returns "WIN.INI" if it exists.
    MyFile = Dir("C:\WINDOWS\WIN.INI")   
     
    ' Returns filename with specified extension. If more than one *.INI
    ' file exists, the first file found is returned.
    MyFile = Dir("C:\WINDOWS\*.INI")
     
    ' Call Dir again without arguments to return the next *.INI file in the
    ' same directory.
    MyFile = Dir()
     
    ' Return first *.TXT file, including files with a set hidden attribute.
    MyFile = Dir("*.TXT", vbHidden)
     
    ' Display the names in C:\ that represent directories.
    MyPath = "c:\"   ' Set the path.
    MyName = Dir(MyPath, vbDirectory)   ' Retrieve the first entry.
    Do While MyName <> ""   ' Start the loop.
          ' Use bitwise comparison to make sure MyName is a directory.
          If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
             ' Display entry only if it's a directory.
             MsgBox(MyName)
          End If   
       MyName = Dir()   ' Get next entry.
    Loop

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Août 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyse système
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2016
    Messages : 3
    Par défaut
    [RESOLU]

    J'ai trouvé ma réponse. Le Dir s'incrémentait parce que je l'avais en fenêtre espion, et apparemment même ça ça suffit à le faire s'incrémenter.

    Merci tout de même de votre aide, elle m'a permis de m'en rendre compte

    Décidément cette saleté m'aura bousillé ma matinée... a s'en arracher les cheveux.

    Merci encore, et bonne journée à tous

    EDIT : merci de la précision Joe, mais c'est bien la fenêtre espion qui me pourrissait tout, puisque même sans les debug.print j'arrivais à un faux résultat.

    Ahmtaro

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Problème argument Date fonction perso VBA
    Par dams53 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/05/2013, 21h54
  2. Réponses: 1
    Dernier message: 25/02/2009, 09h44
  3. Problème avec la fonction Dir
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 22/10/2008, 04h15
  4. problème incrémentation en fonction d'une variable
    Par polo42 dans le forum VBA Access
    Réponses: 10
    Dernier message: 07/08/2007, 16h13
  5. Problème : ouvrir automatiquement .xls en vba
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/11/2005, 15h49

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