ActiveSheet.QueryTables.Add gestion des données

celegorm

XLDnaute Nouveau
bonjour à tous,
je tente de trouver une méthode pour comparer deux querytables en provenance d'un site web (pour voir si le site a changé).
Le nom du site web est paramétrable par l'utilisateur (mis dans strsearch)
je ne sais pas par quel bout prendre ce problème car :
la querytables se "répand" sur plusieurs lignes et colonne sans qu'il soit apparemment possible de tout mettre dans une cellule ou au moins une colonne voir dans un fichier...
De plus le nom de la zone créée par le ActiveSheet.QueryTables.Add s'incrémente (bug apparemment connu) sans qu'il soit possible de le fixer.( du coup je supprime l'ancien nom avant d'en créer une nouvelle)
je pourrais traiter cette zone cellule par cellule (mais je ne sais pas comment savoir quel sera le nom de la zone vu qu'elle change à chaque fois)... et en plus je ne sais pas comment connaitre l'étendue d'une zone.
je peux ptet envoyer tout ça dans un fichier... et le rouvrir sous forme d'une chaine de caractère mais je ne sais pas enregistrer une zone dans un fichier texte.

voici mon code:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strSearch As String
Dim QueryTable As Object
If (Range("A2").Value <> "") Then
    strSearch = Range("A2").Value
    'le script s'active lorsque la target est A2
    If Target.Address = "$A$2" Then
    Range("C2").Value = ""
    'on vérifie la présence de http (a améliorer)
        If (Left(strSearch, 4) = "http") Then
            'supprime les anciennes zones
            If (ActiveWorkbook.Names.Count > 0) Then
               Dim i As Integer
                Set nms = ActiveWorkbook.Names
                For i = nms.Count To 1 Step -1
                ActiveWorkbook.Names(i).Delete
                Next
            End If
            'appel au site strsearch
            With ActiveSheet.QueryTables.Add(Connection:= _
                "URL;" & strSearch & "", _
                Destination:=Range("$D$2"))
                .Name = "test"
                .FieldNames = False
                .RowNumbers = False
                .FillAdjacentFormulas = False
                .PreserveFormatting = False
                .RefreshOnFileOpen = False
                .BackgroundQuery = True
                .RefreshStyle = xlOverwriteCells
                .SavePassword = False
                .SaveData = True
                .AdjustColumnWidth = True
                .RefreshPeriod = 1
                .WebSelectionType = xlEntirePage
                .WebFormatting = xlWebFormattingNone
                .WebPreFormattedTextToColumns = False
                .WebConsecutiveDelimitersAsOne = False
                .WebSingleBlockTextImport = True
                .WebDisableDateRecognition = False
                .WebDisableRedirections = False
                .Refresh BackgroundQuery:=False
            End With
        End If
    End If
End If
End Sub
D'avance merci de votre aide.
 

JNP

XLDnaute Barbatruc
Re : ActiveSheet.QueryTables.Add gestion des données

Re Celegorm :),
A partir du moment où tu supprimes l'ancienne connexion, je ne vois pas... L'utilisateur sélectionne un site, mais où as-tu en mémoire la première importation ? Pour faire une comparaison, il faudrait l'ancienne connexion dans une feuille et la nouvelle dans une autre. Affine un peu ton problème, que l'on puise t'aider (un petit fichier exemple ne serait pas un mal non plus...).
Bon courage :cool:
 

Statistiques des forums

Discussions
312 294
Messages
2 086 924
Membres
103 404
dernier inscrit
sultan87