Vba excel Challenge, Aller cherché des liens

Bonjour,
Voila depuis un moment je m'arrache les cheveux pour allez cherché des liens qui sont dans un tableau sur un site pour après les mettres dans excel.
Classé dans le meme ordre...

Quelqu'un n'aurait pas un ptit script simple pour m'aider ?

je débute avec le Vb

Merci
Configuration: Windows XP
Firefox 3.0.11
Office 2007

9 réponses

  1. Je t'ai copié tout le code ca sera plus simple.

    Sub affiche_liens()
    '
    ' affiche_liens Macro
    ' affiche liens
    '
    
    
        Application.Goto Reference:="affiche_liens"
        
        Range("A2").Select
        With ActiveSheet.QueryTables.Add(Connection:= _
            "URL;http://www.member.php?login=r&password=" _
            , Destination:=Range("$A$2"))
            .Name = "member.php?login=&password="
            .FieldNames = True
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = False
            .RefreshPeriod = 0
            .WebSelectionType = xlSpecifiedTables
            .WebFormatting = xlWebFormattingNone
            .WebTables = "1"
            .WebPreFormattedTextToColumns = True
            .WebConsecutiveDelimitersAsOne = True
            .WebSingleBlockTextImport = False
            .WebDisableDateRecognition = False
            .WebDisableRedirections = False '
            .Refresh BackgroundQuery:=False
        End With
        
        ActiveWorkbook.Save
        Application.Run "essai.xlsm!affiche_liens"
        Columns("A:A").Select
        Selection.ColumnWidth = 20
        Columns("A:A").Select
        Selection.ColumnWidth = 4.86
        Selection.ColumnWidth = 5.57
        Range("B3").Select
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 1
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 3
        ActiveWindow.ScrollColumn = 2
        ActiveWindow.ScrollColumn = 1
        Range("C3").Select
        Selection.ClearContents
        Range("B3").Select
        ActiveWorkbook.Save
    
        Application.Run "essai.xlsm!affiche_liens"  ' ya pas des trucs en trop ici ?
        ActiveWorkbook.Save                                  '
        Application.Run "essai.xlsm!affiche_liens"      '
    
    End Sub
    
    
    
    
    Sub valide_lien() ' validation liens d'une colonne
    Dim lig As Long
    Dim col As Integer
    col = 2             ' numéro colonne à valider (D ?)
    For lig = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
        If Left(Cells(lig, col).Value, 4) = "http" Then      'faut t'il que je remplace le 4 par 2 ici aussi ?
            ActiveSheet.Hyperlinks.Add Anchor:=Cells(lig, col), _
                Address:=Cells(lig, col).Value, TextToDisplay:=Cells(lig, col).Value
        End If
    Next lig
    End Sub
    
    
    
    
    Sub ouvre_liens()
    Dim sel As Hyperlink
    For Each sel In ActiveSheet.Columns(2).Hyperlinks
        sel.Follow NewWindow:=False, AddHistory:=True
    Next sel
    End Sub
    0
    1. j'ai un petit problème..

      j'ai un racourci ctrl T pour affiché les liens sur excel
      quand je le fais sa le fais en boucle et a la suite des tableau de gauche a droite a l'infini.

      alors ca bug...

      Sinon je n'ai pas compris ton ptit bout de code.

      Les liens Hypertext doivent de mettre dans la colonne B

      C'est bien ce qui se produit.

      Cependant j'ai par exemple Google au lieu de https://www.google.fr/?gws_rd=ssl
      ou encore Trouvez tous avec Google au lieu de https://www.google.fr/?gws_rd=ssl

      j'ai fait copié coller dans la macro en changeant 4 par 2.

      Et comment fait t-on pour faire afficher les liens puis les validé puis les ouvres un par un ?
      Il faut juste mettre les fonctions a la suite des autres ?

      Merci beaucoup de ton aide.
      0
      1. Contributeur
        bonjour

        un par un dans un onglet de firefox si c'est possible ?

        C'est ton navigateur par défaut qui est activé.

        mais il ne sont pas en hypertexte.

        C'est normal qu'ils restent en texte il faut les valider, par exemple
        Sub valide_lien() ' validation liens d'une colonne
        Dim lig As Long
        Dim col As Integer
        col = 4             ' numéro colonne à valider (D ?)
        For lig = 1 To Cells.SpecialCells(xlCellTypeLastCell).Row
            If left(Cells(lig, col).Value,4) = "http" Then
                ActiveSheet.Hyperlinks.Add Anchor:=Cells(lig, col), _
                    Address:=Cells(lig, col).Value, TextToDisplay:=Cells(lig, col).Value
            End If
        Next lig
        End Sub
        0
        1. Bonjour,

          voila j'ai réussi pour le login et le mot de pass j'ai juste rajouterdans l'url : ?login=etc
          en regardant le code source de la page.

          J'utiliserai la commande wait.

          Mais pour l'heure j'essaye d'arriver a avoir le tableau, avec les liens dedans. bien rangé
          Puis que cela les cliks un par un dans un onglet de firefox si c'est possible ?

          Vous êtes sur que ce n'est pas possible après de fermé la page internet ?
          par une commande ? j'ai cru voir sa sur un site mais je ne le rettrouve plus.

          j'arrive a avoir le Nom des liens du site mais il ne sont pas en hypertexte. :S
          'ai juste l'intitulé du lien.

          Comment corriger cela ?

          merci beaucoup
          0
          1. Contributeur
            bonjour

            est sur une page avec un login et un pass...

            Effectivement, cela ne fonctionne pas sauf si tu peux mettre tes paramètres dans le lien.

            puis ensuite ferme la page au bout de 5 secondes par exemples.

            Ce n'est pas du tout la fonction du lien !
            Si excel t'ouvres une page internet, il n'a pas la maitrise du navigateur qui ouvre la page : elle n'a ensuite rien à voir avec excel.

            aille sur le lien un par un

            Avec wait tu peux mettre les tempos que tu veux entre chaque ouverture.
            0
            1. hum quand je veux essayé cela ne fonctionne pas très bien.
              pas du tout meme.
              la page ou je vais chercher mon tableau.
              est sur une page avec un login et un pass...
              donc du coup je pense qu'il ne peut pas se connecté.

              Comment réglé le problème?

              Dans se tableau, on peut imaginé énormément de liens environ 2000.
              Il faudrai que excel aille sur le lien un par un pour éviter de faire laguer le pc ^^
              puis ensuite ferme la page au bout de 5 secondes par exemples.
              et après passe au lien d'en dessou.

              Merci de votre aide . :)
              0
              1. Contributeur
                bonjour

                un par un

                pas besoin de macro, il suffit de cliquer la lien ?

                tous enssemble

                Une macro dans ce genre, en adaptant ta colonne devrait fonctionner.
                Sub ouvre_liens()
                Dim sel As Hyperlink
                For Each sel In ActiveSheet.Columns(4).Hyperlinks
                    sel.Follow NewWindow:=False, AddHistory:=True
                Next sel
                End Sub
                
                0
                1. merci pour l'astuce ca fonctionne.

                  J'aimerai créer aussi une macro pour que exec ouvre les liens qui se trouves dans une collone, un par un ou tous enssemble...

                  Comment faire ?
                  la c'est choo : S
                  0
                  1. Contributeur
                    bonjour

                    As-tu essayé les requêtes Web dans le menu données ?

                    Il me semble que la fonction te fournit le résultat avec éventuellement une mise en forme à paramétrer.
                    0