Macro de connexion avec SharePoint

  • Initiateur de la discussion Initiateur de la discussion SaRah_Geek
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

SaRah_Geek

XLDnaute Nouveau
Bonjour,

je souhaite faire une macro qui se lance à l'ouverture du fichier et qui mette à jour un tableau d'après une liste SharePoint.

Ma macro se lance bien, la connexion se fait bien mais je n'arrive pas à rentrer en paramètre le login et MDP nécessaires :

Quel est l'orthographe et l'emplacement pour rentrer ses paramètres en dur dans le code

Code:
Private Sub Workbook_Open()
'-----------------------------------------
' Commande pour effectuer la mise à jour '
'-----------------------------------------

    ActiveWorkbook.Connections("owssvr").Delete ' Supprime l'ancienne connexion
   
    Workbooks("CnnToSP.xlsm").Connections.AddFromFile _
        "C:\Users\User\Desktop\owssvr.iqy" ' Cherche le fichier de connexion
       
    With ActiveWorkbook.Connections("owssvr").OLEDBConnection
        .BackgroundQuery = False ' Permet de terminer toute la Sub avant de continué
       .CommandText = Array( _
        "<LIST><VIEWGUID>{000000-3EC1-4897-A485-0050B62DA3B3}</VIEWGUID><LISTNAME>{0000000-8156-4A3B-BBF3-EF1AF48A16B1}</" _
        , _
        "LISTNAME><LISTWEB>https://quelquechose/_vti_bin</LISTWEB><LISTSUBWEB></LISTSUBWEB><ROOTFOLDER>/02299/_MSI_support/Lists/Fuf</ROOTFOLDER></LIST>")
        .Connection = _
        "OLEDB;Provider=Microsoft.Office.List.OLEDB.2.0;Data Source="""";ApplicationName=Excel;Version=12.0.0.0;"'User Id=MyID;Password=PSD;
        .RefreshOnFileOpen = False
        .SavePassword = False
        .SourceConnectionFile = ""
        .SourceDataFile = ""
        .ServerCredentialsMethod = xlCredentialsMethodNone
        .AlwaysUseConnectionFile = False
        
    End With
    
    With ActiveWorkbook.Connections("owssvr")
        .Name = "owssvr"
        .Description = ""
    End With
    
    ActiveWorkbook.Connections("owssvr").Refresh ' Fait un refresh à la fin de la connexion
End Sub
 
Re : Macro de connexion avec SharePoint

Bonsoir SaRah 🙂

Pas certain de moi pour ce coup-ci, mais je propose quand même si des fois ça venait à fonctionner..

Pour la connexion, remplace par cette ligne :

Code:
.Connection = _
         "OLEDB;Provider=Microsoft.Office.List.OLEDB.2.0;Data Source="""";ApplicationName=Excel;Version=12.0.0.0;User Id=MyID;Password=PSD;"

En fait j'ai juste enlever le commentaire après Version=12.0.0.0;

Il faut ensuite remplacer MyID par l'identifiant et PSD par le password, mais là je t'apprend certainement rien !
En revanche, si les données sont sensibles je conseillerai de créer un userform avec saisie de l'identifiant et du mot de passe avec masque de saisie, dans le sens où n'importe qui sachant faire Alt + F11 pourra voir le mot de passe...

En espérant avoir pu aider 😉
 
Re : Macro de connexion avec SharePoint

Bonjour,

Effectivement je ne savais pas que c'était volontaire.. J'ai peut-être trouvé une piste intéressante en anglais ici. D'après ce que j'ai compris il y aurait la possibilité d'ajouter le token d'identification de la liste Sharepoint afin de permettre le login automatique une fois sur le site, ce qui du coup éviterait le message.

Je recopie ici le message en question, extrait du fil de discussion du lien ci-dessus :
Hey Chad,
Try this – Open Internet Explorer with your service account credentials(using Run as). Under Internet Options, on the security tab, click on Local intranet. Click on sites, advanced and add your sharepoint site to the list. Then click on Custom level… and in the User Authentication section, under Logon, select the Automatic logon with current user name and password option. Try scheduling your script now. (For some reason I couldn’t add sites to my Local intranet zone so I configured the Internet zone to use the current username and password. It seems to work). Let me know if it works or not!

À tester donc ! 🙂
 
Re : Macro de connexion avec SharePoint

Merci beaucoup pour cette réponse, cela fonctionne surement mais ne remplie pas le cahier des charges de cette macro. Puisque je dois donner ce fichier excel à un client qui ne dois pas voir les identifiants de connection. Y-a t'il un moyen de le mettre dans le code sans passer par un paramétrage d'IE ?🙄
 
Re : Macro de connexion avec SharePoint

Merci beaucoup pour cette réponse, cela fonctionne surement mais ne remplie pas le cahier des charges de cette macro. Puisque je dois donner ce fichier excel à un client qui ne dois pas voir les identifiants de connection. Y-a t'il un moyen de le mettre dans le code sans passer par un paramétrage d'IE ?🙄
J'ai exactement le même problème 7 ans après, je me permet donc de relancer la discussion quelqu'un aurait il de nouvelles pistes ?
 
ma chaine de connexion est la suivante :
Provider=Microsoft.Office.List.OLEDB.2.0;Data Source="";ApplicationName=Excel;Version=12.0.0.0

et mon texte de commande :
<LIST><VIEWGUID>1E9DC997-BA25-48FA-855B-64BD8227D288</VIEWGUID><LISTNAME>057D21CB-FFBD-4A3B-B27E-3C9562DA02F1</LISTNAME><LISTWEB>https://SOCIETE.sharepoint.com/sites/SITE_SHAREPOINT/_vti_bin</LISTWEB><LISTSUBWEB></LISTSUBWEB><ROOTFOLDER>ADRESSE DU DOSSIER SHAREPOINT</ROOTFOLDER></LIST>

Normalement, lors de la première actualisation, cela va demander à l'utilisateur de s'identifier.
Cela va enregistrer la connexion à Sharepoint dans "Données>Obtenir des données>Paramètres des sources de données" et sélectionner "Autorisations globales".

Je me sers de cette connexion pour :
- Lister des fichiers dans un répertoire Sharepoint
- Créer la connexion à Sharepoint pour pouvoir télécharger des fichiers en utilisant la fonction suivante

VB:
Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Function DownloadFromWeb(strURL As String, strDestination As String) As Long

    DownloadFromWeb = URLDownloadToFile(0, strURL, strDestination, 0, 0)
  
End Function
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour