1 pièce(s) jointe(s)
Authentification de base sur une connexion non SSL effectuée via une appli du pack office 2010 et plus.
Bonjour,
Ceci n'est pas une question mais une réponse à un problème pour le quel je n'ai trouvé de réponse que sur 1 forum américain. D’où ce poste.
OK le titre est plutôt incompréhensible, je vous encourage donc à aller lire cet article MS ici (en français)
Pour ceux qui ne veulent pas tout lire, la solution est décrite dans l'article MS, et un fichier .VBS perso pour une mise à jour de la base de registre est attaché à ce poste.
Notez avant d'aller plus loin que ce problème sera plutôt rencontré par des clients office en entreprise. Problème lié au fonctionnement de leur réseau interne qui est généralement sécurisé par des accès avec login et mot de passe mais en http. Alors que les connexions securisées sur le web sont ssl normalement associées au protocole https et donc accepter par office... enfin ceci n'est que mon avis d'inculte en la matière.
Notez aussi que la solution que je propose est pour le client office.
Voila ceci étant dit, je vais essayé d'expliquer le problème:
Sur excel il est possible d'importer des données directement du site si les données sont déjà sous forme de tableau
par le menu :
-Données|Données Externes|Web
-Puis on saisie l'adresse dans la barre d'adresse et un petit clic sur le petit bouton juste à droite de cette barre
-Une fois la page affichée excel met en évidence les parties de la page qu'il juge apte à importer.
-On sélectionne alors la partie qui nous intéresse et on clic sur le bouton importer en bas à droite
-En suite excel demande de définir la cellule de référence de l'import et de valider ce choix... jusque la tout vas bien.
à partir de ce moment si la connexion requière un login et un mot de passe tout s’arrête et vous recevez alors un message du genre :"impossible de suivre le lien jusqu’à sa destination"
la cellule de référence prend alors la valeur "echec..."
Le problème était pour moi d'autan plus gênant que j'utilise la propriété QueryTables d'excel VBA pour automatiser tout cela
alors que la méthode Refresh(lancement de l'import en VBA) ne renvois aucune erreur même en passant par la classe d’événement associée au querytables.
La solution finalement est d'obliger office à accepter ce type de connexion en ajoutant la clé de registre Dword BasicAuthLevel comme expliqué dans l'article MS
Voici la partie du code VBS du fichier joint qui met à jour la BDR et utilisable tel quel en VBA
Mais pour le VBA il est préférable d'ajouter le type de données lors du dimensionnement des variables
Code:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
sub CreatRegKey
dim WshShell
dim MaClef, ValeurClef
dim verif, message, alerte, titre
dim NumVersion
NumVersion = OfficeVersion
MaClef="HKCU\Software\Microsoft\Office\" & NumVersion & ".0\Common\Internet\BasicAuthLevel"
'WScript.Echo MaClef
ValeurClef=2
Set WshShell = wscript.CreateObject("WScript.Shell")
with WshShell
.RegWrite MaClef, ValeurClef, "REG_DWORD"
Verif = .RegRead (MaClef)
End With
Set WshShell = Nothing
if Verif=ValeurClef then
message="The registry has been successfully modified !"
alerte=vbExclamation
else
message="An error occurred please contact your admin !"
alerte=vbCritical
end if
titre = "Activation Connection Base non ssl Via Http..."
msgbox message,alerte,titre
end sub
Function OfficeVersion
dim WshShell
dim MaClef, ValeurClef, ClefPath
ClefPath="HKLM\Software\Microsoft\Windows\Currentversion\App Paths\"
MaClef="excel.exe\path"
Set WshShell = wscript.CreateObject("WScript.Shell")
with WshShell
ValeurClef = .RegRead (ClefPath&MaClef)
End With
Set WshShell = Nothing
ValeurClef = right(ValeurClef,3)
OfficeVersion = left(ValeurClef,2)
End function |
Voila il est probable que cela aide peu de personnes mise à part les gens qui gère le déploiement d'office dans leurs entreprise
Philippe