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 :

ActiveWorkbook.Path et OneDrive


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Novembre 2016
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Novembre 2016
    Messages : 7
    Par défaut ActiveWorkbook.Path et OneDrive
    Avec la fonction VBA : ActiveWorkbook.Path
    quand je lançais ma macro qui dans le répertoire du OneDrive que j'ai synchronisé en local sur mon C:\Users\BalboDALI\OneDrive - SITE DEVT\00-Dev\PreparationDossier\macro.xlsm

    J'obtenais :
    C:\Users\BalboDALI\OneDrive - SITE DEVT\00-Dev\PreparationDossier
    Là depuis une mise à jour de microsoft windows10 il y a quelques jours de ça. quand je lance ma macro, la fonction VBA : ActiveWorkbook.Path me ramène le lien suivant sachant que je n'ai change le code de la macro.
    https://my.sharepoint.com/personal/s...arationDossier

    Je ne sais comment faire pour ne pas avoir ce lien hypertexte

  2. #2
    Membre éclairé Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 805
    Par défaut
    Bonjour,

    La fonction de Nicolas.joh fonctionne.

    Problème j'ai OneDrive et la fonction me renvoie le chemin du OneDrive que je ne veux pas

    Comment faire pour trouver l'autre chemin ?

    Je vous remercie
    Meilleures salutations
    Philippe

  3. #3
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Pour retrouver le chemin UNC à partir du chemin http :
    https://www.developpez.net/forums/d1.../#post10721957

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Par défaut
    Hello Arkham,

    Je ne maitrise pas les fonctions avec les librairies API, il faudra vraiment m'y mettre un jour. Je vais chercher des tutos sur le sujet.

    J'avais cherché longtemps cette fonction qui permet de trouver le chemin UNC, merci pour ton partage.

    Par contre il me semble qu'il y a une petite erreur sur la page que tu mentionnes dans ton lien pour la version 64bits. la déclaration de la fonction devrait être en "Private Declare PtrSafe Function ...", non ?
    en effectuant un test cela fonctionne uniquement comme ceci.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #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
    ++

  5. #5
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par wouana19 Voir le message
    Par contre il me semble qu'il y a une petite erreur sur la page que tu mentionnes dans ton lien pour la version 64bits. la déclaration de la fonction devrait être en "Private Declare PtrSafe Function ...", non ?
    en effectuant un test cela fonctionne uniquement comme ceci.
    Tout à fait, merci.
    J'ai corrigé le code dans la discussion mentionnée.

  6. #6
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 029
    Par défaut
    Bonjour,
    Une question pour ma culture : pourquoi utiliser VBA7 et pas WIN64 pour savoir si l'on utilise une version 32 ou 64 bits ?
    Car de mémoire VBA7 peut être installé sur les deux versions ?

    Merci.

  7. #7
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    j'ai eu le même problème
    et apparemment résolu en décochant cette option dans les paramètres de OneDrive:

    Nom : C1.JPG
Affichages : 9969
Taille : 23,6 Ko

    @+

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Par défaut
    Hello,

    La solution est rvToulon est possible, mais c'est déconseillé si vous utilisé l'espace de stockage à plusieurs simulnanéments (un des objectifs du cloud).

    la seule solution que j'ai trouvé jusqu'à présent et de modifier ton résultat pour arriver à un chemin local. On pourrait même en créer une fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim cheminOndeDrive As String
    Dim CheminLocal As String
     
    cheminOndeDrive = ActiveWorkbook.Path
    CheminLocal = Replace(cheminOndeDrive, _
       "https://my.sharepoint.com/personal/siteDev_com/Documents", _
       "C:\Users\BalboDALI\OneDrive - SITE DEVT")
     CheminLocal = Replace(CheminLocal, "/", "\")
     
    Debug.Print CheminLocal
    Cordialement
    Wouana

  9. #9
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bonjour,
    l'utilité de ActiveWorkbook.path est de connaître le dossier qui contient le classeur actif, ainsi si le classeur change de dossier le nouvel emplacement sera connu lorsque le code sera lancé de nouveau.
    La solution de wouana19 est correct mais elle implique de mettre l'emplacement du fichier en dur dans le code.
    Et si son fichier change de Dossier? ou si un des collaborateurs change le fichier de place sur onedrive?

    Pour mon utilisation (pour le moment) je décoche, je fais fonctionner mes macros, je recoche si besoin.

    Quand est-il pour Devmartech?

  10. #10
    Candidat au Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mai 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Distribution

    Informations forums :
    Inscription : Mai 2020
    Messages : 3
    Par défaut
    Bonjour,

    Je viens de tomber sur cette discussion car j'y le même problème avec mes macros qui ne tourne plus si elles sont sur le disque local avec OneDrive.

    Après quelques recherches, voici ma solution de contournement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
     
    BaseRacineOneDrive = Environ("OneDrive") & "\"
    chemin = ActiveWorkbook.fullname ' ActiveWorkbook.Path  ' pour avoir que le chemin
    C = InStr(1, chemin, "/Documents") + 10
    old_chemin = Left(chemin, C)
    New_Chemin = Replace(Replace(chemin, old_chemin, BaseRacineOneDrive), "/", "\") & "\"
    Debug.Print New_Chemin
     
    End Sub
    Il ne reste plus qu'à tester, en créer une function avec un test du style
    If left(chemin , 5 ) = "https" then
    les commandes ci-dessus
    else
    chemin
    end if

    En espérant que cela fonctionne pour vous

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur VBA
    Inscrit en
    Décembre 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur VBA

    Informations forums :
    Inscription : Décembre 2015
    Messages : 93
    Par défaut
    Bonjour,

    Oui j'étais passé un moment par cette solution qui fonctionnait bien.
    J'ai par la suite eu un soucis selon le poste utilisé car parfois il y a 2 paramétrages pour OneDrive (OneDrive privé et OneDrive professionnel).
    La commande Environ("OneDrive") prenait, si mes souvenir son bon, le premier OneDrive paramétré sur le poste.

    Mais si un seul OneDrive est installé cela fonctionne.

Discussions similaires

  1. [XL-2003] ActiveWorkbook.Path ne renvoie pas le chemin voulu
    Par Heflav dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 04/10/2010, 15h51
  2. Ajouter des chemins dans la variable PATH
    Par Righetto Dominique dans le forum Linux
    Réponses: 7
    Dernier message: 21/03/2004, 17h38
  3. récupérer le path system
    Par Eugénie dans le forum MFC
    Réponses: 4
    Dernier message: 22/12/2003, 13h03
  4. Réponses: 3
    Dernier message: 10/06/2003, 14h16
  5. Redhat-9 changer le path des databases
    Par jean christophe dans le forum Installation
    Réponses: 7
    Dernier message: 30/05/2003, 17h53

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