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 :

Vérifier si fichiers existent


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut Vérifier si fichiers existent
    Bonjour,

    J'ai un tableau composé de deux colonnes :

    Dans la première (colonne A), des titres de fichiers y figurent. J'aimerai que dans la colonne B, la macro complète automatiquement la présence et l'absence du fichier dans un répertoire (ne changeant jamais). Etant novice en vba, j'ai bricolé un code que j'ai repris mais cela ne fonctionne pas . Pouvez-vous m'aider s'il vous plait, je vous joints mon fichier.Vérification existance fichier.xlsm

    Merci d'avance,
    Fichiers attachés Fichiers attachés

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    - je n'ouvrirai en aucun cas un classeur tiers pour y voir ce que l'on n'expose pas dans la discussion elle-même
    - c'est le code tenté, qu'il convient de montrer ici, pas le classeur
    - l'utilisation simple de la fonction dir est la solution
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Bonjour, merci pour votre réponse. Je procède de la façon suivante :

    Tout d'abord, dans un module, j'ai inséré la fonction ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Function FichierExiste(MonFichier As String)
     
       If Len(Dir(MonFichier)) > 4 Then
          FichierExiste = True
       Else
          FichierExiste = False
       End If
    End Function
    Puis dans un second module, j'ai ma macro suivante :

    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
    Sub TesteSiFichierExiste()
    Dim MonFichier As String
     
     
    Set Xlclass = Worksheets("Feuil1")
    For i = 2 To Xlclass.Cells(Rows.Count, "A").End(xlUp).Row
     
    MonFichier = "C:\Users\" & Range("A1" & i).Value & ".pdf"
     
        If FichierExiste(MonFichier) = True Then
            Range("B" & i).Value = "Fichier présent"
        Else
            Range("B" & i).Value = "Fichier absent"
        End If
    Next
    End Sub
    Cela ne fonctionne pas.

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour,

    la fonction pour savoir si un fichier existe est un peu superfétatoire
    car il suffit juste d'une unique instruction - Dir - pour le vérifier !

    Cells(i, 2).Value = "Fichier " & IIf(Dir("C:\Users\" & Cells(i, 1).Value & ".pdf") > "", "présent", "absent")   …

    ___________________________________________________________________________________________________________

          Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Merci pour votre retour, j'ai testé votre solution. Cela ne fonctionne pas. En effet, même lorsqu'un fichier est présent, la fonction retourne 'fichier absent".

  6. #6
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    bonjour,

    Faudrait peut être vérifier le chemin complet de ledit fichier et comparer avec ce qu'il en retourne dans le code
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    C'est normal car mon exemple reprenant la logique du code initial (ligne de code n°8 de la procédure)
    donc forcément fautive sinon cette discussion n'aurait pas lieu d'être !
    Donc logique à revoir !   Et on ne saurait la corriger sans connaître les tenants et les aboutissants …
    Cela commence en A2 ou en A12 ?

    Cet exemple n'ayant pour but de démontrer l'inutilité de la fonction et des lignes de code n°7 à 14 de la procédure.
    La ligne de code n°5 aussi n'ayant pas vraiment d'intérêt …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    de plus en consultant la on trouve facilement un exemple : https://excel.developpez.com/faq/?pa...istenceFichier
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  9. #9
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Comme je l'ai dit je suis débutant dans ce domaine, pour répondre à la première question :je n'ai pas le "vrai chemin" car à travers la macro je veux savoir si justement le fichier existe.

    En effet, j'ai un userform qui génère des références, et les utilisateurs stockent des fichiers pdf se nommant avec ces références. Donc pour m'assurer si toutes les références ont un fichier pdf, je voulais créer cette macro pour éviter de pointer fichier par fichier dans le dossier où sont stockés les pdf.
    Mon exemple commence donc en cellule A2. Pouvez-vous faire quelque chose ?

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Donc vérifie ta ligne de code n°8 - au passage commençant en A12 elle ! Ma ligne commençant en A2 - avec les fichiers
    réels puis explique-nous clairement sinon, n'étant pas sur un forum de divination, nous ne pouvons pas avancer …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Avec les explication de mon précédent message et mon fichier, je ne sais pas comment être plus explicite.Maintenant si vous n'êtes pas en mesure de m'aider, pas de problème. Et je sais que nous ne sommes pas dans un forum de devinette, et je pense être correcte.

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Juste en vérifiant le chemin complet d'un fichier existant avec la "construction" de la ligne de code n°8,
    donc avec le contenu de la variable MonFichier
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonFichier = "C:\Users\" & Range("A1" & i).Value & ".pdf"
    Cette partie ? en remplaçant A1 par A2?

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Si i = 2 que vaut alors "A2" & i ?      A22  ‼

    Mais comme mon exemple a déjà corrigé cette erreur et que cela ne fonctionne pas,

    alors il y a une erreur dès la conception de la variable MonFichier,   là : !

    Donc déjà en comparant le contenu de la variable MonFichier avec le chemin complet d'un fichier existant …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #15
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Puis-je rappeler que la fonction dir, utilisée sans spécifier le paramètre attributes ainsi exposé dans l'aide interne VBA (à ouvrir et consulter systématiquement, surtout si débutant)

    Élément Description
    pathname Facultatif. Expression de chaîne définissant un nom de fichier. Cet argument peut préciser le répertoire ou dossier et le lecteur. Une chaîne de longueur nulle est renvoyée si l'argument pathname est introuvable.
    attributes Facultatif. Constante ou expression numérique, dont la somme définit des attributs de fichier. Si cet argument est omis, tous les fichiers sans attributs correspondant à l'argument pathname sont renvoyés.



    Valeurs

    L'argument attributes peut prendre les valeurs suivantes :

    Constante Valeur Description
    vbNormal 0 (Par défaut) Spécifie les fichiers sans attributs.
    vbReadOnly 1 Spécifie les fichiers accessibles en lecture seule ainsi que les fichiers sans attributs.
    vbHidden 2 Spécifie les fichiers cachés ainsi que les fichiers sans attributs.
    vbSystem 4 Spécifie les fichiers système ainsi que les fichiers sans attributs. Non disponible sur le Macintosh.
    vbVolume 8 Spécifie un nom de volume ; si un autre attribut est spécifié, la constante vbVolume est ignorée. Non disponible sur Macintosh.
    vbDirectory 16 Spécifie les dossiers ainsi que les fichiers sans attributs.
    vbAlias 64 Le nom du fichier spécifié est un alias. Disponible uniquement sur le Macintosh.
    conclusion : si le paramètres attributes n'est pas spécifié, un fichier avec attribut (caché, etc ...) ne sera pas "vu"
    et donc ? --->> qu'attends-tu pour l'utiliser, ce paramètre ?
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  16. #16
    Expert éminent sénior
    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
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, si tu avais suivi le lien pour une recherche tu aurais trouvé directement une réponse dans la faq !
    Ce qui au final donne
    Images attachées Images attachées   

  17. #17
    Membre à l'essai
    Homme Profil pro
    QSE
    Inscrit en
    Septembre 2014
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : QSE

    Informations forums :
    Inscription : Septembre 2014
    Messages : 22
    Points : 10
    Points
    10
    Par défaut
    Merci à tous. Je n'ai pas cherché au bon endroit. J'avais le même code dès le départ, mais je voulais savoir à quel endroit ça bloquait.
    J'ai compris. Et comme je l'ai dit je suis novice.

    Merci encore!

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

Discussions similaires

  1. [Débutant] Vérifier si fichier existe dans solution
    Par androidFan2206 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/07/2013, 11h48
  2. Vérifier si un fichier existe
    Par iwf-fr dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2006, 17h32
  3. Vérifier si un fichier existe déjà
    Par Kr00pS dans le forum C
    Réponses: 9
    Dernier message: 16/07/2006, 15h29
  4. Réponses: 3
    Dernier message: 14/06/2006, 11h06
  5. vérifier si un fichier existe
    Par shirya dans le forum C++
    Réponses: 5
    Dernier message: 19/12/2005, 10h36

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