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 :

Fonction Dir ne fonctionne pas pour un dossier Sharepoint [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut Fonction Dir ne fonctionne pas pour un dossier Sharepoint
    Hello le forum,

    J'ai préparé une macro qui va chercher dans un dossier les différents fichiers Excel pour les ouvrir et intégrer leur contenu dans une feuille Excel.

    Tant que je testais avec un dossier sur mon disque local, aucun soucis mais ensuite, avec SharePoint, je rencontre une erreur avec Dir qui apparement fonctionne uniquement pour Excel et pas d'application externe.

    Est-ce que quelqu'un peut m'aider et me dire s'il existe une variante pour ouvrir les fichiers d'un dossier SharePoint 1 par 1 et faire une série d'actions pour chaque fichier puis le refermer et passer au suivant ?

    1000 mercis d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Fichier = CheminImport & "*.xlsx"
     
     
        Do While Len(Fichier) > 0
     
            Workbooks.Open Filename:=CheminImport & Fichier
           ...

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par formabox Voir le message
    Tant que je testais avec un dossier sur mon disque local, aucun soucis mais ensuite, avec SharePoint, je rencontre une erreur avec Dir qui apparement fonctionne uniquement pour Excel et pas d'application externe.
    Dir() est une fonction VBA générique. Ce n'est donc pas le fait que les fichiers soient Excel ou pas qui peut le perturber.

    Par contre, il fonctionne avec le FileSystem (Windows, MacOs, etc.).
    Je ne suis pas sûr qu'il puisse considérer SharePoint comme un FileSystem.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bonjour,

    Le CheminImport commence-t-il par http ? Est-il récupéré avec une fonction du style ThisWorkbook.Path ?
    Si oui il faut passer en chemin UNC.

  4. #4
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut
    Merci pour votre réponse.

    Non, ça ne marche pas avec SharePoint. Est-ce que avez une idée d'un code de remplacement que je pourrais utiliser ?

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Si j'ai bien compris le problème (voir mes questions ci-dessus):

    Mettre ceci dans un module standard :
    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
    Option Explicit
     
    #If VBA7 Then
    Private Declare PtrSafe Function DavGetUNCFromHTTPPath Lib "Netapi32.dll" (ByVal Url As LongPtr, ByVal UncPath As LongPtr, lpSize As Long) As Long
    #Else
    Private Declare Function DavGetUNCFromHTTPPath Lib "Netapi32.dll" (ByVal Url As Long, ByVal UncPath As Long, lpSize As Long) As Long
    #End If
     
    '-----------------------------------------------------------------------------------------
    ' Converti un chemin SharePoint de type (http...) en chemin UNC (\\...)
    ' Le chemin retourné a un séparateur final si le chemin initial en avait un
    '-----------------------------------------------------------------------------------------
    Public Function getUNCPath(pPath As String) As String
    Dim lPath As String
    Dim lUncPath As String
    Dim lSize As Long
    lSize = 260 ' MAX_PATH
    lPath = pPath & vbNullChar ' Chemin + caractère null de fin
    lUncPath = Space(lSize) ' Buffer de réception
    If DavGetUNCFromHTTPPath(StrPtr(lPath), StrPtr(lUncPath), lSize) = 0 Then
        ' 0 = pas d'erreur
        ' on reçoit dans lSize la taille du chemin UNC (séparateur de fin inclus)
        getUNCPath = Left(lUncPath, lSize - 1)
        ' Si le chemin initial avait un séparateur final, on en ajoute un
        If Right(pPath, 1) = "/" Or Right(pPath, 1) = "\" Then
            getUNCPath = getUNCPath & "\"
        End If
    Else
        getUNCPath = pPath
    End If
    End Function
    Puis convertir le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CheminImport = getUNCPath(CheminImport)
    Le contenu de CheminImport devrait être transformé d'une adresse http... en un chemin UNC qui commence par \\ et que Dir saura comprendre.

  6. #6
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut
    Hello Arkham46,

    Je te remercie pour ta réponse. Je teste au plus vite et te redit si ça fonctionne

  7. #7
    Membre régulier
    Femme Profil pro
    Formatrice bureautique
    Inscrit en
    Septembre 2007
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Formatrice bureautique

    Informations forums :
    Inscription : Septembre 2007
    Messages : 202
    Points : 79
    Points
    79
    Par défaut Un grand merci
    Hello Arkham46,


    J'ai pu tester ton code qui fonctionne à merveilles.

    Je te remercie pour ta précieuse aide et te souhaite une excellente journée,
    Caro

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2021
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 23
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2021
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    J'ai le même soucis. Sauf que au moment de lancer le programme il y a un problème et je ne sais pas lequel c'est.
    Est ce que je dois mettre vos 2 programmes avant ou après mon programme? Est ce qu'il faut les mettre dans un module séparé?
    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
    Sub chercher_fichiers_TXT()
     
    fic_compil = ActiveWorkbook.Name
    repertoire = ActiveWorkbook.Path
     
    i = 4
    nf = Dir(repertoire & "\*.txt*")  
     Do While nf <> ""
        Cells(i, 1) = nf
        i = i + 1
    nf = Dir
     Loop
     
    End Sub

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/06/2016, 15h44
  2. La fonction mail() ne fonctionne pas pour Hotmail
    Par anonyme13 dans le forum Langage
    Réponses: 3
    Dernier message: 27/11/2014, 09h51
  3. Code ne fonctionne pas pour les sous dossiers
    Par archi57 dans le forum VBScript
    Réponses: 10
    Dernier message: 18/02/2012, 15h24
  4. Réponses: 20
    Dernier message: 06/05/2010, 12h32
  5. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49

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