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 :

Download et déplacement d'un fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut Download et déplacement d'un fichier
    Bonjour, mon code (ci dessous) ne répond pas à mes attentes.
    Dans ma feuille, il y a des liens hypertextes (colonne E) qui déclenchent chacun un téléchargement (une feuille Excel).
    Le site sur lequel les liens amènent est protégé par mdp/identifiant.
    Le fait de cliquer manuellement sur le bouton "enregistrer" a chaque dl ne me
    dérange pas (même si je ne crache pas sur un code automatisant cette partie).
    Il faut par la suite, aller chercher la feuille téléchargée, la déplacer et la renommer avec le nom d'une cellule
    (cellule colonne C de la même ligne que le lien), puis supprimer le téléchargement pour pouvoir
    télécharger une nouvelle feuille issue d'un autre lien mais portant le même nom au téléchargement.

    J'ai divisé ma procédure avec les If/ElseIf pour avoir le temps de cliquer manuellement sur le bouton enregistrer d'IE.

    Merci d'avance a ceux qui s'intéresseront a ce post.
    Je reste disponible pour toutes incompréhension, demande d'information ou d'explication du code de votre part.

    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
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    Sub Macro2()
    Clic1 = False
    Clic2 = False
    Clic3 = False
     
    On Error GoTo ExempleErreur
        Sheets("Hypertxt").Select
    Dim o As Long
     o = 1
    Dim DerniereLigne
     DerniereLigne = Range("A1").End(xlDown).Row
     
    While o <= DerniereLigne
     If Cells(o, 4) = "" Then
     
      If Clic1 = False Then
        'Mettez le début de votre procédure ici
                    DeclencheLien Range("E" & o)
     
                            Dim IEdoc As Object
                            Dim DOCelement As Object
     
                            Set ie = CreateObject("InternetExplorer.application")
                            ie.Visible = False
     
                            'attente de fin de chargement
                            Do Until ie.ReadyState = 4
                            DoEvents
                            Loop
     
                            Set IEdoc = ie.Document
     
                            'login
                            Set DOCelement = IEdoc.getElementsByName("LoginForm_Login").Item
     
                            DOCelement.Value = "****" 'Login
     
                            'password
                            Set DOCelement = IEdoc.getElementsByName("LoginForm_Password").Item
                            DOCelement.Value = "****" 'mot de passe
     
                            'account
                            Set DOCelement = IEdoc.getElementsByName("LoginForm_RegistrationDomain").Item
                            DOCelement.Value = "****" 'mot de passe
                            DOCelement.Select
     
                            'connexion
                            Set DOCelement = IEdoc.Forms(0)
                            DOCelement.submit
     
                            Application.Wait (Now + TimeValue("0:00:03"))
     
                            'attente de fin de chargement
                            Do Until ie.ReadyState = 4
                            DoEvents
                            Loop
     
     
            Cells(o, 4).Value = "Exist"
                            Set IEdoc = ie.Document
                             ie.Quit
     
        Clic1 = True
         MsgBox ("Clic1 = True")
         Worksheets("Button").Activate
        Exit Sub
     
      ElseIf Clic2 = False Then
        'Mettez le milieu de votre procédure ici
        Dim Xx As String
         Xx = Worksheets("Hypertxt").Cells(o, 3).Value
     
        FileCopy "C:\Users\stagiaire\Downloads\Commande.xls", "C:\Users\stagiaire\Desktop\Antoine\Test_DL\" & Xx & ".xls"
        Kill "C:\Users\stagiaire\Downloads\Commande.xls"
     
        Clic2 = True
         MsgBox ("Clic2 = True")
         Worksheets("Button").Activate
        Exit Sub
     
      Else:
        'Mettez la fin de votre procédure ici
        MsgBox ("Passer au lien suivant")
         Clic1 = False
         Clic2 = False
         o = o + 1
        MsgBox ("Clic1 & 2 = False, Reset")
        Worksheets("Button").Activate
     
      End If
     End If
     
    Wend
     
    Worksheets("Button").Activate
    ExempleErreur:
        MsgBox "Les fichiers existent tous"
     
    End Sub
     
    _________________________________________________________________________________________
     
    Sub DeclencheLien(Cellule As Range)
    'Vérifie si la cellule contient un lien
    If Cellule.HyperLinks.Count = 0 Then
        MsgBox "il n'y a pas de lien hypertexte dans la cellule " & Cellule.Address
        Else
        'Déclenche le lien
        Cellule.HyperLinks(1).Follow NewWindow:=True
    End If
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    le soucis avec ton code c'est que ton object IE n'a rien voir avec la fentre déclenche par le lien hypertext

    c'est tout ton principe qui est a revoir

    a partir du moment ou tu créé l'object IE tu dois instruire son navigate avec le lien et ton followhyperlink... a la poubelle
    après pour l'automatisation des bouton dans le bandeau de téléchargement tu trouvera la contribution de marcL dans les contributions
    après pour les éléments mot de passe et login a renseigner si tu donne pas au oins un lien tu sera tout seul personne ne pourra deviner la structure de ta page web

    edit
    je pourrais aussi dire que ce qui est possible de faire avec IE peut se faire avec une requête(object Microsoft.xmlhttp)se qui serait 100 fois plus rapide
    mais pour déterminer tout ca il nous faut un lien même sans mot de passe
    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

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Mai 2017
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2017
    Messages : 28
    Par défaut
    Bonjour, merci pour ta réponse

    Finalement, en regardant de plus près le code, l'onglet de téléchargement se lance tout seul, pas besoin de log.
    Il me suffit de fermer l'onglet internet qui se lance en arrière plan et cette partie la est réglée.
    (je te remercie pour ton analyse ca m'a aidé a comprendre mes erreurs)

    Le problème qui reste est le déplacement du fichier, il faut aussi le renommer..
    Excel n'a pas l'air d'apprécier ma procédure de clic n°2..
    j'ai déjà recherché un peu de mon côté :

    j'ai trouvé mon code dans ce tuto qui correspond exactement a ce que je veux faire:
    (à savoir déplacer le fichier téléchargé "Commande.xls" dans un autre fichier, et le renommer par le nom des cellules
    d'une colonne (qui s'incrémente de 1 a chaque fois))
    https://www.developpez.net/forums/d1...ntenu-cellule/

    et sur ce site
    http://www.info-3000.com/vbvba/listefichier/index.php (dans la section "Gestion globale des fichiers" un peu plus bas dans la page)

    j'ai aussi trouvé ceci mais je ne l'ai pas testé car je n'arrive pas a l'adapter a mon cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub RenommeFichier()
        Dim AncienNom As String, NouveauNom As String
     
        AncienNom = "C:\Documents and Settings\dossier\NomInitial.pdf"
        NouveauNom = "C:\Documents and Settings\dossier\Nom modifié.pdf"
     
        'Vérifie si le fichier à renommer existe.
        If Dir(AncienNom) = "" Then Exit Sub
        'Renomme le fichier
        Name AncienNom As NouveauNom
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    ta conclusion est loin d'être logique je dirais même bancale mais si tu me dis que ca fonctionne tant mieux pour toi

    attendant toujours un de tes lien même sans mot de passe et login je ne peux pas t'en dire plus
    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

Discussions similaires

  1. Déplacement dans un fichier seekg tellg
    Par renlel dans le forum C++
    Réponses: 3
    Dernier message: 25/04/2007, 14h25
  2. déplacement dans un fichier.txt
    Par yohann007 dans le forum C
    Réponses: 11
    Dernier message: 21/03/2007, 11h06
  3. Copie ou déplacement d'un fichier
    Par Tchaill39 dans le forum Delphi
    Réponses: 4
    Dernier message: 30/10/2006, 14h36
  4. Réponses: 4
    Dernier message: 19/05/2006, 17h06
  5. [Debutant]Download jsp page dans un fichier xls (csv, ...)
    Par bdelporte dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 19/09/2005, 17h16

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