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érification du chemin d'accès au fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 48
    Points : 41
    Points
    41
    Par défaut Vérification du chemin d'accès au fichier
    Bonjour,

    J'ai un petit problème que je n'arrive pas à résoudre, ce n'est pas grand chose je pense mais ça me gène. En faite je fais une vérification sur le chemin d'accès à des fichiers et si ce chemin n'est pas correct, je l'affiche. Le souci c'est que celui-ci ne m'écrit pas tout le chemin d'accès au fichier (il note simplement : C:\ ). Je vous place mon code mais je pense que la solution doit-être simple, mais je sèche dessus là, je ne vois pas quoi changer.
    J'ai essayé de changer le chemin d'accès mais rien n'y fait, il affiche toujours C:\ , même si mon chemin d'accès est sur le disque D:\.
    Si quelqu'un avait une idée ... Merci d'avance.

    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
    Public Sub Test()
     
        Set fs = Application.FileSearch
     
        'Aller voir dans le dossier des fichiers.ini
        With fs
     
            .LookIn = "C:\Program Files\Traitement\Console"
            .Filename = "*.ini"
     
            'Vérification de présence de fichiers .ini dans le dossier de destination.
            If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
                Call MsgBox("Il y a présence de fichiers .ini, l'opération peut être éxécutée")
                If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
     
                    'Si ok l'opération continue
                    Call MsgBox("C'est ok")
                End If
            Else
                'Si ce n'est pas bon l'opération est annulée
                Call MsgBox("Opération annulée, il n'y a pas présence de fichiers .ini")
                Call MsgBox("Recommencer l'opération en changeant le chemin d'accès aux fichiers")
                Call MsgBox("Chemin actuel : " & fs.LookIn)
            End If
        End With
     
    End Sub

  2. #2
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    J'ai a peine touché au manipulation de fichier mais une idée toute simple pour esayer de contourner le problème (je contourne les obstacle plus que je l'ai franchis , mon coté fainéant).
    par contre je te remplace tes 3 message box par une seul en allant a la ligne
    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
     
    Public Sub Test()
     dim chem as string
        Set fs = Application.FileSearch
     
        'Aller voir dans le dossier des fichiers.ini
        With fs
            chem= "C:\Program Files\Traitement\Console"
            .LookIn = chem
            .Filename = "*.ini"
     
            'Vérification de présence de fichiers .ini dans le dossier de destination.
            If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
                Call MsgBox("Il y a présence de fichiers .ini, l'opération peut être éxécutée")
                If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
     
                    'Si ok l'opération continue
                    Call MsgBox("C'est ok")
                End If
            Else
                'Si ce n'est pas bon l'opération est annulée
                Call MsgBox("Opération annulée, il n'y a pas présence de fichiers .ini" & vbCrLf & "Recommencer l'opération en changeant le chemin d'accès aux fichiers" & Chr(13) & "Chemin actuel : " & chem)
            End If
        End With
     
    End Sub
    Edit par contre j'ai un peut l'impression que tu test 2 fois la meme chose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
                Call MsgBox("Il y a présence de fichiers .ini, l'opération peut être éxécutée")
                If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then

  3. #3
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    Salut,

    Ton code est très bon, il fonctionne à merveille, je te remercie.
    Et pour ta question, depuis le début j'utilisais ces deux tests alors qu'un seul était nécessaire en fait.
    Je commencais par faire une fois le test pour vérifier la présence des fichiers ensuite je lançais une msgbox pour confirmer la présence des fichiers.
    Ma seconde boucle retestait la même chose plus le test si les fichiers n'étaient pas présents.
    Ensuite si le test était validé, il faisait appel à une autre macro de mon projet.
    Voila le but initial de ce test, mais il est vrai qu'il n'est pas necessaire de le faire deux fois de suite. Je viens donc de le retirer et ça marche mieux même, la macro réagit plus vite.
    Merci à toi pour ton aide. Je te mets le code modifier. Pourrais tu m'expliquer un peu le but des fonctions vbCrLf? Merci.

    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
    Public Sub Test()
        Dim chem As String
     
        Set fs = Application.FileSearch
     
        'Aller voir dans le dossier des fichiers.ini
        With fs
            chem = "C:\Program Files\Traitement\Console"
            .LookIn = chem
            .Filename = "*.ini"
     
            'Vérification de présence de fichiers .ini dans le dossier de destination.
            If .Execute(SortBy:=msoSortByFileName, SortOrder:=msoSortOrderAscending) > 0 Then
                Call MsgBox("Il y a présence de fichiers .ini, l'opération peut être éxécutée")
                'La macro MEP est une macro de mise en pages de mes feuilles Excel
                Call MEP
            Else
                'Si ce n'est pas bon l'opération est annulée
                Call MsgBox("Opération annulée, il n'y a pas présence de fichiers .ini" & vbCrLf & "Recommencer l'opération en changeant le chemin d'accès aux fichiers" & Chr(13) & "Chemin actuel : " & chem)
            End If
        End With
     
    End Sub

  4. #4
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    insérer vbCrLf dans une chaine de caractère permet d'aller a la ligne

    msgbox "ligne1" & vbCrLf & "ligne2"
    renvoie dans la message box
    ligne1
    ligne2

    Chr(13) renvoi les 13ème caractère de la table ascci (un lien ici)
    Le 13ème correspondant au retour a la ligne il est donc identique à vbCrLf
    Il permet juste d'utiliser n'importe quel caractère de la table

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    pour ce dernier point, voir aussi l'aide vba à vbCr "Constantes diverses" et aussi selon le contexte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub toto()
     
    MsgBox "tata" & vbCr & "toto"
    MsgBox "tata" & vbLf & "toto"
    MsgBox "tata" & vbCrLf & "toto"
    MsgBox "tata" & vbCr & vbCr & "toto"
    ' etc...
    Cells(2, 5) = "tata" & vbCr & "toto"
    Cells(3, 5) = "tata" & vbLf & "toto"
    Cells(4, 5) = "tata" & vbCrLf & "toto"
    End Sub
    cordialement,

    Didier

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Bonjour tous,
    Il y a peut-être un peu plus simple...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Test()
        If Dir("C:\Program Files\Traitement\Console\*ini") = "" Then
            MsgBox ("Opération annulée, il n'y a pas présence de fichiers .ini" _
            & vbCrLf & "Recommencer l'opération en changeant le chemin d'accès aux fichiers" 
        End If
    End Sub
    Si un fichier INI existe Dir va renvoyer sont nom.
    A+

  7. #7
    Membre du Club
    Inscrit en
    Février 2009
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 48
    Points : 41
    Points
    41
    Par défaut
    Salut,

    Ton code fonctionne très bien aussi, Le Forestier.
    Et intégré dans ma macro il fonctionne aussi très bien avec quelques rajouts de code de ma macro.
    Merci à toi.

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

Discussions similaires

  1. [AC-2003] modifier le chemin d'accès au fichier serveur de BDD
    Par willy-78milles dans le forum IHM
    Réponses: 7
    Dernier message: 06/04/2009, 12h57
  2. Chemin d'accès au fichier
    Par Pierre94200 dans le forum Langage
    Réponses: 7
    Dernier message: 01/10/2008, 16h17
  3. Comment afficher un chemin d'accés de fichier dans un edit text?
    Par rakinetak dans le forum Interfaces Graphiques
    Réponses: 8
    Dernier message: 18/08/2008, 10h44
  4. chemin d'accés à un fichier
    Par MALIKA-MARIE dans le forum VB.NET
    Réponses: 8
    Dernier message: 19/11/2007, 17h27
  5. Chemin d'accès des fichiers dans des sous rep
    Par Le Veilleur dans le forum C++Builder
    Réponses: 4
    Dernier message: 17/11/2004, 14h37

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