XL 2019 Problème ouverture lien hypertexte

Marilo

XLDnaute Nouveau
Bonjour,

Je souhaite obtenir des données depuis une page internet.
Plusieurs solutions existent, mais j'ai préféré celle-ci ; voici mon code qui va interroger un site, pour 50 lignes différentes:
VB:
Set Obk = Workbooks.Open("https://goh.warstats.net/guilds/units/62?unit=" & Sheets("Données de Base").Cells(perso_base, 1) & "&type=ground")

    Obk.Activate

    'Suppression des liens hypertextes
    Cells.Hyperlinks.Delete

    'Suppression des images et contrôles
    ActiveSheet.Shapes.SelectAll
    Selection.Delete

    Sheets("62").Copy After:=Workbooks("Gestion Ukio.xlsm").Sheets("Global")
    Workbooks("62").Close

Ce code fonctionne très bien et m'importe toutes les données dont j'ai besoin.
Une donnée, toutefois, se trouve sur un autre site que celui-ci, j'ai donc revu mon code ainsi:
Code:
Sub test()

Application.DisplayAlerts = False

    Set Obk = Nothing
    Set Obk = Workbooks.Open("https://swgoh.gg/p/" & sheets("Données de Base").cells(perso, 6) & "/omicrons/")
    'exemple de sheets("Données de Base").cells(perso, 6): 367332181 ou encore 323787692
    
    Obk.Activate

    'Suppression des liens hypertextes
    Cells.Hyperlinks.Delete

    'Suppression des images et contrôles
    ActiveSheet.Shapes.SelectAll
    Selection.Delete

    Sheets("swgoh").Copy After:=Workbooks("Gestion Ukio.xlsm").Sheets("Global")
    Workbooks("swgoh.gg").Close

Application.DisplayAlerts = True

End Sub

Les pages existent, on peut y accéder directement depuis n'importe quel navigateur. Sauf que, très souvent, j'ai une erreur 1004 qui apparait, m'indiquant qu'Excel ne peut pas accéder au fichier pour les raisons suivantes:
- Le nom du fichier ou le chemin d'accès n'existe pas,
- Le fichier est actuellement utilisé par un autre programme,
- Le classeur que j'essaye d'enregistrer porte le même nom qu'un autre classeur déjà ouvert.

Le chemin d'accès fonctionne vu qu'il est accessible par internet, je n'ai rien d'ouvert hormis mon programme actuel qui s'appelle "Gestion Ukio.xlsm" et je n'essaye pas d'enregistrer.

J'essaye de passer par un autre système pour récupérer mes données, mais j'aimerais vraiment comprendre pourquoi cela bloque, surtout que, de prime abord, cela semble aléatoire. Parfois la page va s'ouvrir sans soucis, et parfois j'ai le message.
J'ai tenté des choses genre Set Obk = Nothing avant d'ouvrir le lien, genre sauvegarder mon fichier, au cas où il soit en temporaire et avec un nom bateau, mais rien n'y fait.

Auriez-vous une idée du pourquoi du comment et comment résoudre le problème?

Merci d'avance,
 

Marilo

XLDnaute Nouveau
Ok je viens de faire le test 5 fois de suite, et j'ai compris pourquoi ça foirait.
Enfin plutôt j'ai compris comment le faire bugué/débugué.
Je ne sais pas s'il y a un rapport avec Windows 11.

Je me mets dans mon dossier avec mon fichier, je fais F5, donc je rafraichis mon dossier.
Je lance le fichier, je lance le vba, il fonctionne.
Je ferme mon fichier, je le relance, je lance le vba, il foire.
Je ferme mon fichier, je fais F5, je lance mon fichier, puis le vba, ça fonctionne.
Je ferme mon fichier, je rouvre mon fichier, je lance le vba, il foire.
Je ferme mon fichier, je fais F5, je lance mon fichier, puis le vba, ça fonctionne.

Chose étrange, si j'enregistre mon fichier, sur windows 10 et avant, la date et l'heure de modif se changeaient automatiquement dans le dossier. Là l'heure qui s'affiche est la date de l'ancien enregistrement. Pour qu'il fasse apparaitre la nouvelle heure d'enregistrement, j'ai dû faire F5.
Je ne sais pas s'il y a un paramétrage à faire pour qu'il refresh automatiquement le dossier de l'explorer contenant le fichier?!

modifié: j'ai trouvé un site qui indique comment obligé windows à faire les refresh d'explorer:
Je regarderai cela demain, j'espère que cela résoudra mon problème.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Celle là, il fallait la trouver. 😂
Effectivement je suis sous Win10, ceci expliquerait cela.
Quoique je ne vois pas le rapport entre le rafraichissement et le fonctionnement intrinsèque du VBA ou l'accès à des sites Web. :rolleyes:
... et pourquoi mon fichier marcherait et pas le votre.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Marilo, Chti,
Peut être une piste si c'est un problème de timing.
Ajouter un DoEvents afin d'attendre que le processus en cours se termine, avec :
VB:
    Workbooks("swgoh.gg").Close
    DoEvents
Une autre solution serait de faire un Retry sur erreur, avec par exemple :
Code:
Sub Accéde(Donnée)
    On Error Resume Next
    Set Obk = Nothing
    Set Obk = Workbooks.Open("https://swgoh.gg/p/" & Donnée & "/omicrons/")
    If Err = 1004 Then Set Obk = Workbooks.Open("https://swgoh.gg/p/" & Donnée & "/omicrons/")
    If Err = 1004 Then Set Obk = Workbooks.Open("https://swgoh.gg/p/" & Donnée & "/omicrons/")
    If Err = 1004 Then Exit Sub
    Obk.Activate
    Cells.Hyperlinks.Delete
    ActiveSheet.Shapes.SelectAll
    Selection.Delete
    Sheets("swgoh").Copy After:=Workbooks("Gestion Ukio Essai.xlsm").Sheets("Données de Base")
    Workbooks("swgoh.gg").Close
    DoEvents
End Sub
 

Statistiques des forums

Discussions
315 053
Messages
2 115 760
Membres
112 572
dernier inscrit
ASDDB