nouvelle demande ICI
bonjour,
dans mon fichier excel j'utilise 2 macros me permettant de mettre a jour une multitude de données externes via des requêtes web successives (1 requête différente pour chaque ligne de mon tableau).
J'ai découvert les macros que récemment donc j'ai quelques notions mais je ne suis vraiment pas un crack.
Mon premier problème : sous mac (excel 2011 - OSX Lion) je ne peux pas exécuter 2 fois de suite l'une ou l'autre des macros sous peine d'un plantage général d'excel // sous windows 7 ca fonctionne autant de fois que l'on veut.
Mon deuxième problème : j'utilise pas mal de ".select" car cela me permet de voir l'avancement de la mise à jour mais je sais qu'on conseille souvent de limiter l'utilisation de .select donc je souhaiterais savoir si l'on peut optimiser ces macros tout en conservant la visibilité de l'avancement.
Je ne peux pas poster le fichier donc je laisse ci-dessous les 2 macros.
Merci d'avance pour votre aide et vos conseils.
MACRO n°1 :
Sub ALL()
'
' ALL Macro
'
'
ThisWorkbook.Activate
Sheets("INFO").Range("H10").Select
Sheets("IMPORT").Range("B2").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
Sheets("INFO").Range("H11").Select
Sheets("IMPORT").Range("B12").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
Sheets("INFO").Range("H12").Select
Sheets("IMPORT").Range("B22").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
[...] ainsi de suite jusque
Sheets("INFO").Range("H96").Select
Sheets("IMPORT").Range("B862").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
Sheets("INFO").Range("H9").Select
ActiveWorkbook.Save
End Sub
MACRO n°2 :
Sub SPEED()
'
' SPEED Macro
'
'
ThisWorkbook.Activate
Sheets("INFO").Range("H10").Select
If Sheets("INFO").Range("C10") = "" Then
Sheets("IMPORT").Range("B2").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
End If
Sheets("INFO").Range("H11").Select
If Sheets("INFO").Range("C11") = "" Then
Sheets("IMPORT").Range("B12").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
End If
[...] ainsi de suite jusque
Sheets("JOUEUR").Range("H96").Select
If Sheets("INFO").Range("C96") = "" Then
Sheets("IMPORT").Range("B862").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
End If
Sheets("INFO").Range("H9").Select
ActiveWorkbook.Save
End Sub
La temporisation de 5 seconde est obligatoire sinon j'ai un blocage d'accès au données (une protection des sites hébergeant les infos probablement)
Je n'utilise pas les instructions"Application.ScreenUpdating" et "Application.Calculation" pour vérifier l'avancement et parce qu'en fonction des données mise à jour au fur et à mesure le résultat d'un calcul peut varier et c'est ce qui m’intéresse essentiellement.
a bientot
bonjour,
dans mon fichier excel j'utilise 2 macros me permettant de mettre a jour une multitude de données externes via des requêtes web successives (1 requête différente pour chaque ligne de mon tableau).
J'ai découvert les macros que récemment donc j'ai quelques notions mais je ne suis vraiment pas un crack.
Mon premier problème : sous mac (excel 2011 - OSX Lion) je ne peux pas exécuter 2 fois de suite l'une ou l'autre des macros sous peine d'un plantage général d'excel // sous windows 7 ca fonctionne autant de fois que l'on veut.
Mon deuxième problème : j'utilise pas mal de ".select" car cela me permet de voir l'avancement de la mise à jour mais je sais qu'on conseille souvent de limiter l'utilisation de .select donc je souhaiterais savoir si l'on peut optimiser ces macros tout en conservant la visibilité de l'avancement.
Je ne peux pas poster le fichier donc je laisse ci-dessous les 2 macros.
Merci d'avance pour votre aide et vos conseils.
MACRO n°1 :
Sub ALL()
'
' ALL Macro
'
'
ThisWorkbook.Activate
Sheets("INFO").Range("H10").Select
Sheets("IMPORT").Range("B2").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
Sheets("INFO").Range("H11").Select
Sheets("IMPORT").Range("B12").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
Sheets("INFO").Range("H12").Select
Sheets("IMPORT").Range("B22").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
[...] ainsi de suite jusque
Sheets("INFO").Range("H96").Select
Sheets("IMPORT").Range("B862").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
Sheets("INFO").Range("H9").Select
ActiveWorkbook.Save
End Sub
MACRO n°2 :
Sub SPEED()
'
' SPEED Macro
'
'
ThisWorkbook.Activate
Sheets("INFO").Range("H10").Select
If Sheets("INFO").Range("C10") = "" Then
Sheets("IMPORT").Range("B2").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
End If
Sheets("INFO").Range("H11").Select
If Sheets("INFO").Range("C11") = "" Then
Sheets("IMPORT").Range("B12").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
End If
[...] ainsi de suite jusque
Sheets("JOUEUR").Range("H96").Select
If Sheets("INFO").Range("C96") = "" Then
Sheets("IMPORT").Range("B862").QueryTable.Refresh BackgroundQuery:=False
Application.Wait Now + TimeValue("00:00:05")
End If
Sheets("INFO").Range("H9").Select
ActiveWorkbook.Save
End Sub
La temporisation de 5 seconde est obligatoire sinon j'ai un blocage d'accès au données (une protection des sites hébergeant les infos probablement)
Je n'utilise pas les instructions"Application.ScreenUpdating" et "Application.Calculation" pour vérifier l'avancement et parce qu'en fonction des données mise à jour au fur et à mesure le résultat d'un calcul peut varier et c'est ce qui m’intéresse essentiellement.
a bientot
Dernière édition: