Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Import de données externes web log - mdp

DAVAWAY

XLDnaute Junior
Bonjour camarades !

Je parviens à rapatrier des données externes issues d'un site qui nécessite au préalable un log.

Peut on enrichir ce code pour automatiser la manipe en enregistrant les valeurs du log (id/mdp) ?

En effet, je dois au préalable à l’exécution du code, me connecter au site en question via le bouton "à partir du web". Sinon, j'ai une anomalie à cette ligne "Refresh BackgroundQuery:=False".

Je suis novice en vba et ne vois pas comment injecter la donne dans le code suivant :

Sub importer1()

Sheets("PERSO").Cells.Clear

With Sheets("PERSO").QueryTables.Add(Connection:="URL;Ce lien n'existe plus" _
, Destination:=Sheets("PERSO").Range("$A$1"))
.Name = "Ce lien n'existe plus"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = False
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingAll
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With

compteur = 0

For ligne = 1 To 1000

If Left(Sheets("PERSO").Cells(ligne, 1), 6) = "Il y a" Then
compteur = compteur + 1
Sheets("ACCUEIL").Cells(compteur, 1) = Sheets("PERSO").Cells(ligne - 1, 1).Hyperlinks(1).Address

If compteur = 5 Then Exit For
End If

Next

End Sub


Merci pour votre lecture, aide et bon appétit !

David
 

Iznogood1

XLDnaute Impliqué
Bonjour,

sauf erreur de ma part, tu confonds création et mise à jour de la requête.
A vu de nez, à chaque fois que tu exécutes le code, tu recrée une requête.
Tu vas finir par avoir un fichier énoooooorme.

Je suggérerais de créer la requête et de faire une macro qui ne fais que la mettre à jour (lance l'enregistreur, puis fais un clic droit sur tes donnéeset clic sur Actualiser), tu devrais obtenir un code du genre :
Code:
Range("A2").ListObject.QueryTable.Refresh BackgroundQuery:=False
(bien sûr tu auras autre chose que Range("A2") ; a adapter à tes besoins)

Enfin pour répondre à ta question, il me semble que les identifiants et mots de passe peuvent / doivent être enregistrés lors de la création de la connexion au données ; tu ne pourras pas le faire par code VBA
 

DAVAWAY

XLDnaute Junior
Bonjour Iznogood1,

Merci pour ton retour, à chaque tentative d'import le code fait un reset de la cellule de destination et donc de toutes les données de l'onglet.
Me demande pas précisément comment, pour moi vba reste de la magie et le restera.. hormis pour cette question de pré log répertorié dans vba qui serait impossible ..ce serait dommage tout de même !
 

Discussions similaires

Réponses
2
Affichages
691
Réponses
3
Affichages
826
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…