OVH Cloud OVH Cloud

Récolte de données à partir d'internet

9 réponses
Avatar
cowboy bebop
Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance

9 réponses

Avatar
Gaenonius
En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius

Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance


Avatar
cowboy bebop
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous

En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius


Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance




Avatar
MichDenis
Bonjour Cowboy,



Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous

En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius


Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance




Avatar
MichDenis
Au lieu de saisir la date -> remplacer la date par l'adresse dans le texte de présentation ... ;-)




Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous

En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius


Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance




Avatar
cowboy bebop
Merci Mich Denis, j'ai mis ton code en place et ça fonctionne bien.
Au final ça me donne un code de ce type là :
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u€115",
Destination:=Range("B1"))
.Name = "user_summary.php?s=&u€115"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("1:2").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u˜462",
Destination:=Range("B2"))
.Name = "user_summary.php?s=&u˜462"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("2:3").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u0523",
Destination:=Range("B3"))
.Name = "user_summary.php?s=&u0523"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("3:4").Select
Selection.Delete Shift:=xlUp

le "Rows etc..." me permettent de supprimer les deux premières lignes du
tableau importé pour chaque personne qui ne m'intéressent pas.
Je pense que je pourrais améliorer ce code en créant une sorte de
boucle, car là, il y a 24 personnes, et donc le code se répètent 24 fois !!!
Les seuls éléments à modifier étant le numéro de chaque utilisateur, la
cellule où les données sont collectées (B, B2...), et les lignes à
supprimer....

Sur excellabo, je ne trouve pas d'astuces concernant des boucles.... Est
ce une notion qui n'existe pas en VBA ?

Au lieu de saisir la date -> remplacer la date par l'adresse dans le texte de présentation ... ;-)




Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous


En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius



Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance










Avatar
cowboy bebop
Je sais pas si mon message est bien passé tout à l'heure... je repost ;-)

Merci Mich Denis, j'ai mis ton code en place et ça fonctionne bien.
Au final ça me donne un code de ce type là :
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u€115",
Destination:=Range("B1"))
.Name = "user_summary.php?s=&u€115"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("1:2").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u˜462",
Destination:=Range("B2"))
.Name = "user_summary.php?s=&u˜462"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("2:3").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u0523",
Destination:=Range("B3"))
.Name = "user_summary.php?s=&u0523"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("3:4").Select
Selection.Delete Shift:=xlUp

le "Rows etc..." me permettent de supprimer les deux premières lignes du
tableau importé pour chaque personne qui ne m'intéressent pas.
Je pense que je pourrais améliorer ce code en créant une sorte de
boucle, car là, il y a 24 personnes, et donc le code se répètent 24 fois !!!
Les seuls éléments à modifier étant le numéro de chaque utilisateur, la
cellule où les données sont collectées (B, B2...), et les lignes à
supprimer....

Sur excellabo, je ne trouve pas d'astuces concernant des boucles.... Est
Au lieu de saisir la date -> remplacer la date par l'adresse dans le texte de présentation ... ;-)




Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous


En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius



Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance










Avatar
MichDenis
Bonjour Cowboy,

Voici ce que pourrait être ta boucle :

A ) J'ai supposé que les 24 feuilles où doivent copier les résultats des requêtes étaient les 24 premières feuilles du
classeur ( de 1 à 24 ) . Les résultats s'afficheront selon l'ordre de tes numéros dans la plage B1:B24 de leur adresse
internet dans leur feuille respective.

B ) Tu dois définir le nom de la feuille où se retrouve la liste des numéros utilisés dans les adresses Internet.

C ) Pour cet exemple, j'ai supposé que les 24 numéros étaient dans la plage de cellule B1:B4 de la Feuil1


'-------------------------------------
Sub LesQueryTable()

Dim A As Integer
Dim Qt As QueryTable
Dim Sh As Worksheet

'Remplace "Feuil1" par le nom de
'la feuille ayant les numéros en plage
'de cellules B1:B24
Set Sh = Worksheets("Feuil1")

For A = 1 To 24
With Worksheets(A)
Set Qt = .QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u=" & _
Sh.Range("B" & A), Destination:=.Range("B1"))
With Qt
.Name = "user_summary.php?s=&u=" & Sh.Range("B" & A)
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
.Rows("1:2").Delete Shift:=xlUp
End With
Next

End Sub
'--------------------------------------------



Salutations!




"cowboy bebop" a écrit dans le message de news:
%23$
Merci Mich Denis, j'ai mis ton code en place et ça fonctionne bien.
Au final ça me donne un code de ce type là :
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u€115",
Destination:=Range("B1"))
.Name = "user_summary.php?s=&u€115"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("1:2").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u˜462",
Destination:=Range("B2"))
.Name = "user_summary.php?s=&u˜462"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("2:3").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u0523",
Destination:=Range("B3"))
.Name = "user_summary.php?s=&u0523"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("3:4").Select
Selection.Delete Shift:=xlUp

le "Rows etc..." me permettent de supprimer les deux premières lignes du
tableau importé pour chaque personne qui ne m'intéressent pas.
Je pense que je pourrais améliorer ce code en créant une sorte de
boucle, car là, il y a 24 personnes, et donc le code se répètent 24 fois !!!
Les seuls éléments à modifier étant le numéro de chaque utilisateur, la
cellule où les données sont collectées (B, B2...), et les lignes à
supprimer....

Sur excellabo, je ne trouve pas d'astuces concernant des boucles.... Est
ce une notion qui n'existe pas en VBA ?

Au lieu de saisir la date -> remplacer la date par l'adresse dans le texte de présentation ... ;-)




Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous


En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius



Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance










Avatar
MichDenis
Bonjour Cowboy,

J'allais oublier... comme l'ordre de tes feuilles est très importante, tu devrais penser à protéger ton Classeur (pas
les feuilles) par la commande : barre de menu / outils / protection / Protéger le classeur / ....


Salutations!



"cowboy bebop" a écrit dans le message de news:
%23$
Merci Mich Denis, j'ai mis ton code en place et ça fonctionne bien.
Au final ça me donne un code de ce type là :
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u€115",
Destination:=Range("B1"))
.Name = "user_summary.php?s=&u€115"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("1:2").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u˜462",
Destination:=Range("B2"))
.Name = "user_summary.php?s=&u˜462"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("2:3").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u0523",
Destination:=Range("B3"))
.Name = "user_summary.php?s=&u0523"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("3:4").Select
Selection.Delete Shift:=xlUp

le "Rows etc..." me permettent de supprimer les deux premières lignes du
tableau importé pour chaque personne qui ne m'intéressent pas.
Je pense que je pourrais améliorer ce code en créant une sorte de
boucle, car là, il y a 24 personnes, et donc le code se répètent 24 fois !!!
Les seuls éléments à modifier étant le numéro de chaque utilisateur, la
cellule où les données sont collectées (B, B2...), et les lignes à
supprimer....

Sur excellabo, je ne trouve pas d'astuces concernant des boucles.... Est
ce une notion qui n'existe pas en VBA ?

Au lieu de saisir la date -> remplacer la date par l'adresse dans le texte de présentation ... ;-)




Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous


En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius



Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance










Avatar
cowboy bebop
Ok merci MichDenis, ton code est très efficace et la gestion par onglet
des données est même plus simple pour moi !!!!



Bonjour Cowboy,

J'allais oublier... comme l'ordre de tes feuilles est très importante, tu devrais penser à protéger ton Classeur (pas
les feuilles) par la commande : barre de menu / outils / protection / Protéger le classeur / ....


Salutations!



"cowboy bebop" a écrit dans le message de news:
%23$
Merci Mich Denis, j'ai mis ton code en place et ça fonctionne bien.
Au final ça me donne un code de ce type là :
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u€115",
Destination:=Range("B1"))
.Name = "user_summary.php?s=&u€115"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("1:2").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u˜462",
Destination:=Range("B2"))
.Name = "user_summary.php?s=&u˜462"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("2:3").Select
Selection.Delete Shift:=xlUp
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://nomdusitededonnées/user_summary.php?s=&u0523",
Destination:=Range("B3"))
.Name = "user_summary.php?s=&u0523"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
Rows("3:4").Select
Selection.Delete Shift:=xlUp

le "Rows etc..." me permettent de supprimer les deux premières lignes du
tableau importé pour chaque personne qui ne m'intéressent pas.
Je pense que je pourrais améliorer ce code en créant une sorte de
boucle, car là, il y a 24 personnes, et donc le code se répètent 24 fois !!!
Les seuls éléments à modifier étant le numéro de chaque utilisateur, la
cellule où les données sont collectées (B, B2...), et les lignes à
supprimer....

Sur excellabo, je ne trouve pas d'astuces concernant des boucles.... Est
ce une notion qui n'existe pas en VBA ?


Au lieu de saisir la date -> remplacer la date par l'adresse dans le texte de présentation ... ;-)




Voici un exemple d'un QueryTable ayant une adresse Web comme source de données. Elle a été conçu en utilisant
l'enregistreur de Macro d'excel de la version Excel 2003.

Barre des menus / données / Données externes / Nouvelle requête sur le Web .../ et dans la fenetre qui s'ouvre, il
s'agit de saisir l'adresse Internet ... et le tableau de la page de données à importer.

Au lieu de saisir la date, on pourrait utiliser une boucle et utiliser le contenu d'une cellule pour insérer cette
information.

Ceci n'est qu'un exemple...
'--------------------------------------
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://www.x-rates.com/d/USD/table.html", Destination:=Range("A1"))
.Name = "table"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "14"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:úlse
End With
End Sub
'--------------------------------------


Salutations!



"cowboy bebop" a écrit dans le message de news:
O6%
Merci ça fonctionne à merveille...
Attention question subsidiaire : comment "créer une nouvelle requête
web" à l'aide de chacun de ces url qui apparaissent en colonne C ?

Bon dimanche à tous



En supposant des données (noms et numéros) en A1:B20 (à adapter) :

Sub LiensPersos()
Dim Base, cell As Range
Base = "http://nom du site/"
For Each cell In Range("A1:A20")
If Not IsEmpty(cell) Then
ActiveSheet.Hyperlinks.Add _
anchor:=Range("C" & cell.Row), _
Address:="", _
SubAddress:ºse & Range("B" & cell.Row).Value
End If
Next
End Sub

--
Gaenonius




Bonjour à tous,

j'aimerais automatisé par une macro une récolte de données.
j'ai en colonne A le nom d'une personne, en B le numéro qui lui
correspond dans ma source de donnée internet (1 page HTML par personne).
Aujourd'hui, j'importe ces données manuellement par le biais de
"données/données externes/ importer des données" et en indiquant l'url
direct à chaque personne, cette adresse à la forme suivante :
"http://nom du site/numéro de la personne".

Il faudrait en fait que la macro change uniquement le numéro de la
personne dans l'url.

J'espère ne pas être trop obscur !!!
N'hésitez pas à me poser des questions si nécessaires...

Merci d'avance