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 :

Stocker dans un répertoire, des images identifiées par un lien hypertexte.


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Stocker dans un répertoire, des images identifiées par un lien hypertexte.
    Bonjour,

    Je dispose de liens hypertextes, situés les uns au dessous des autres dans une colonne d'un tableau Excel. Ces liens me ramènent chacun à une image se trouvant dans un serveur Intranet.
    A l'aide d'une macro VBA, je désire ouvrir les images une par une, leur donner un nom, et les stocker dans un répertoire donné. Certains liens sont inactifs, je dois donc les ignorer.

    Merci de votre aide.

    Eric

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    ceci (exemple) te retournera l'adresse du 1er lien dans la cellule I20
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("I20").Hyperlinks(1).Address
    Important : le chemin complet de cette adresse ( genre C:\..\toto.jpg") ne sera retourné que si le lien pointe vers un dossier distinct de celui de ton classeur.
    Si seul est retourné, par exemple, "toto.jpg", il t'appartient de compléter par le chemin du dossier de ton classeur (ThisWorkbook.Path & "\")

    Pour ce qui est du reste -->> ouvre ton aide interne vba à la rubrique FileCopy, instruction et applique cette instruction extrêmement simple.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Copier image obtenue par lien Hypertexte dans un répertoire
    Merci uparia pour ta réponse. Mais comme je manque vraiment d'expérience, j'ai besoin de précisions.
    Dans le cellule I20 se trouve déjà mon lien Hypertexte, obtenu grâce à une formule regroupant plusieurs cellules :
    La voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =Lien_Hypertexte("http://ute."&E20&".prd.sie.courrier.intra/V1/"&F20&"/image?format=jpeg")
    Dans cette cellule, j'obtiens bien un lien Hypertexte, et lorsque je clique dessus, j'ai bien mon image qui s'ouvre. Je voudrais la stocker dans un répertoire de mon disque dur : C:\visuel

    Ce serait facile si je n'avais qu'une seule image. Mais j'en ai tout un tas à placer dans ce répertoire.

    Je rentre le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub CopyFichier()
    Dim SourceFile, DestinationFile
    SourceFile = Range("G20")
    DestinationFile = "C:\plis"
     
    FileCopy SourceFile, DestinationFile
     
    End Sub
    Et bien sûr, ça coince sur la ligne FileCopy

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour
    je suis pas sur que le lien soit exploitable comme tel si E20 et F20 sont des cellules
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "http://ute."&E20&".prd.sie.courrier.intra/V1/"&F20&"/image?format=jpeg"
    les "&" doivent etre espacés sinon ils sont pris comme faisant parti de la chaine du lien ainsi que les guillemets internes qui normalement doivent etre doublés sinon bien evidement declenche une erreur

    pour tester tu peux simplement reprendre le lien complet et le coller dans la barre d'adresse de ton explorateur pour voir si l'image s'affiche ou si le blob(enregistrer sous) se declenche

    ensuite comme c'est un intranet ou meme net je suis pas sur que filecopy soit approprié
    je pense plutot que tu devra telecharger l'image
    microsoft.xmlhtttp et accompagné de l'object stream
    tu trouvera divers exemples sur le forum

    pourrait ton avoir un lien valide correspondant a ce lien
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    Bonjour Patrick,

    Je joins un fichier. Mais, tu as raison, comme il s'agit d'un Intranet, le lien, qui fonctionne très bien sur mon ordinateur professionnel, ne fonctionne pas à partir de mon ordi perso.

    Eric
    Fichiers attachés Fichiers attachés

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    avec le fichier que tu a donné teste cela
    et dit moi si tu a bien tes images sur le bureau dans un dossier "mes images"

    et si les images sont valides
    et donne moi ce que tu obtiens dans le debug
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Sub test()
        Dim chemin$, i&
        chemin = Environ("userprofile") & "\DeskTop\mesimages\"
        If Dir(chemin, vbDirectory) = "" Then MkDir chemin
        For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
            Debug.Print ActiveSheet.Cells(i, 7).Value
            récup_imge Cells(i, "G").Value, chemin, i
        Next
    End Sub
    Function récup_imge(url As String, chemin As String, index As Long) As String
         Dim ReQ As Object, oStream As Object
        'On Error Resume Next    'On ne gère pas les erreurs
        Set ReQ = CreateObject("Microsoft.XMLHTTP")
        ReQ.Open "get", url, False: ReQ.send
        Debug.Print index & "  " & CStr(ReQ.Status)
       if req.status=200 then 
        Set oStream = CreateObject("ADODB.Stream")
        oStream.Open: oStream.Type = 1: oStream.Write ReQ.responsebody: oStream.SaveToFile chemin & "image" & index & ".jpg": oStream.Close
       end if
     Set oStream = Nothing: Set ReQ = Nothing
    End Function
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations forums :
    Inscription : Mars 2012
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    Bonsoir Patrick,

    Merci infiniment pour le temps que tu as passé. La procédure que tu m'as transmise fonctionne parfaitement bien. J'ai juste dû activer la ligne On Error Resume Next qui permet à la macro de ne pas tenir compte des liens qui ne sont plus actifs. J'ai pu télécharger environ 500 images en 1/2 heure, sans que le système plante, ce qui est plus que satisfaisant, car ma liaison Internet est mauvaise.

    Bien cordialement
    Eric

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    en effet 3.6secondes par image ca fait un peu long
    mais bon maintenant tu a une technique parmis d'autres pour recupérer tes images sur ton serveur et les copier sur ton DD
    de rien
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/12/2010, 21h58
  2. Réponses: 17
    Dernier message: 07/07/2010, 22h38
  3. Supprimer des images générées par boucle et xml dans un clip qui contient un bouton
    Par yuyuboy dans le forum ActionScript 1 & ActionScript 2
    Réponses: 3
    Dernier message: 28/04/2010, 15h39
  4. Réponses: 3
    Dernier message: 05/02/2009, 13h31
  5. Réponses: 20
    Dernier message: 19/12/2004, 18h52

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