Boucles et performance
Nicu_69
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'effectue un code avec des opérations imbriquées. Sur mon formulaire, au bout de quelques secondes, j'ai le message "ne répond pas". Comment optimiser ?
Sub maj_hyptxt()
Dim Siret_rech, Siret_trouv As String
Dim x, xt2 As Variant
form_barre_progression.Show 0
form_barre_progression.Image_barre.Width = 0
form_barre_progression.Label_barre = "0%"
Worksheets("T1 SE ciblées ou visitées").Activate
'formatage txt
Worksheets("T1 SE ciblées ou visitées").Columns("A").Select
Selection.NumberFormat = "@"
'boucle sur T1
For x = 2 To 2000
barre_progression
Worksheets("T1 SE ciblées ou visitées").Activate
Siret_rech = Worksheets("T1 SE ciblées ou visitées").Cells(x, 1)
If Siret_rech = "" Then Exit Sub
If Worksheets("T1 SE ciblées ou visitées").Cells(x, 29) = "" Then GoTo retour
For xt2 = 2 To 2000
'boucle imbriquée sur T2: si les SIRET sont identiques, alors créer un lien hypertexte sur T1
Worksheets("T2 Détails actions").Activate
Siret_trouv = Worksheets("T2 Détails actions").Cells(xt2, 1)
'sortie de boucle au cas où la visite en T2 soit introuvable
If Siret_trouv = "" Then GoTo retour
'création du lien hypertexte si les SIRET correspondent
If Siret_trouv = Siret_rech Then
Worksheets("T1 SE ciblées ou visitées").Activate
Worksheets("T1 SE ciblées ou visitées").Hyperlinks.Add Anchor:=Cells(x, 1), Address:="", SubAddress:="'T2 Détails actions'" & "!A" & xt2, TextToDisplay:=Siret_trouv
xt2 = 2
GoTo retour
End If
Next xt2
retour:
Next x
Unload form_barre_progression
Worksheets("T1 SE ciblées ou visitées").Activate
End Sub
Merci d'avance
J'effectue un code avec des opérations imbriquées. Sur mon formulaire, au bout de quelques secondes, j'ai le message "ne répond pas". Comment optimiser ?
Sub maj_hyptxt()
Dim Siret_rech, Siret_trouv As String
Dim x, xt2 As Variant
form_barre_progression.Show 0
form_barre_progression.Image_barre.Width = 0
form_barre_progression.Label_barre = "0%"
Worksheets("T1 SE ciblées ou visitées").Activate
'formatage txt
Worksheets("T1 SE ciblées ou visitées").Columns("A").Select
Selection.NumberFormat = "@"
'boucle sur T1
For x = 2 To 2000
barre_progression
Worksheets("T1 SE ciblées ou visitées").Activate
Siret_rech = Worksheets("T1 SE ciblées ou visitées").Cells(x, 1)
If Siret_rech = "" Then Exit Sub
If Worksheets("T1 SE ciblées ou visitées").Cells(x, 29) = "" Then GoTo retour
For xt2 = 2 To 2000
'boucle imbriquée sur T2: si les SIRET sont identiques, alors créer un lien hypertexte sur T1
Worksheets("T2 Détails actions").Activate
Siret_trouv = Worksheets("T2 Détails actions").Cells(xt2, 1)
'sortie de boucle au cas où la visite en T2 soit introuvable
If Siret_trouv = "" Then GoTo retour
'création du lien hypertexte si les SIRET correspondent
If Siret_trouv = Siret_rech Then
Worksheets("T1 SE ciblées ou visitées").Activate
Worksheets("T1 SE ciblées ou visitées").Hyperlinks.Add Anchor:=Cells(x, 1), Address:="", SubAddress:="'T2 Détails actions'" & "!A" & xt2, TextToDisplay:=Siret_trouv
xt2 = 2
GoTo retour
End If
Next xt2
retour:
Next x
Unload form_barre_progression
Worksheets("T1 SE ciblées ou visitées").Activate
End Sub
Merci d'avance
Configuration: Windows / Firefox 60.0
A voir également:
- Boucles et performance
- Diagnostic de performance énergétique - Accueil - Maison
- Test performance pc - Guide
- Test performance pc gratuit - Accueil - Utilitaires
- Mode performance - Guide
- Voir performance pc - Guide
8 réponses
Bonjour,
La première chose à faire est de désactiver le rafraîchissement de l'écran pendant l'éxecution:
Application.ScreenUpdating = False
' Les opérations lourdes ou toute la macro
Application.ScreenUpdating = True
Cdlt.
La première chose à faire est de désactiver le rafraîchissement de l'écran pendant l'éxecution:
Application.ScreenUpdating = False
' Les opérations lourdes ou toute la macro
Application.ScreenUpdating = True
Cdlt.
Bonjour,
en+ de l'indispensable blocage de l'écran indiqué par T3chN0g3n
supprime le + possible tes activate select- selection quant au goto, en + d'^tre inutile et préhistorique, il n'est utilisé que pour aller au gestionnaire d'erreur en fin de procédure
par exemple (forcément non testé)
heu!... en dernière ligne écrire End with avant m^me punition
en+ de l'indispensable blocage de l'écran indiqué par T3chN0g3n
supprime le + possible tes activate select- selection quant au goto, en + d'^tre inutile et préhistorique, il n'est utilisé que pour aller au gestionnaire d'erreur en fin de procédure
par exemple (forcément non testé)

heu!... en dernière ligne écrire End with avant m^me punition
Merci michel_m. J'ai supprimé tous les Worksheets.Activate qui n'étaient pas indispensables, je tombe à un peu plus d'1 min. d'exécution.
Il me reste juste un petit problème, comment éviter le blocage du poste ("ne répond pas") ? Merci
Il me reste juste un petit problème, comment éviter le blocage du poste ("ne répond pas") ? Merci
En fait, ton erreur est de boucler plusieurs fois: on ne devrait boucler que sur le nombre de siret présent en colonne 29 et chercher si l'égalité existe et sur quelle ligne pour construire le lien hypertexte
il faudrait envoyer ton classeur en pièce jointe(uniquement les 2 feuilles T1 T2). pour cela:
il faudrait envoyer ton classeur en pièce jointe(uniquement les 2 feuilles T1 T2). pour cela:
Mettre le classeur sans données confidentielles en pièce jointe sur
https://mon-partage.fr
Dans lien de téléchargement
faire un clic droit- copier l’adresse du lien et le coller dans votre message en cours sur ccm
Vous pouvez également faire une barre de progression pour que ce soit plus convivial =)
https://www.excel-easy.com/vba/examples/progress-indicator.html
https://www.excel-easy.com/vba/examples/progress-indicator.html
La barre de progression est déjà en place, merci.
Le classeur est en ligne sous https://mon-partage.fr/f/pjbbgBKr/
C'est vrai que seuls les SIRET ayant eu une visite sont concernés, mais je ne peux pas les isoler...
Le classeur est en ligne sous https://mon-partage.fr/f/pjbbgBKr/
C'est vrai que seuls les SIRET ayant eu une visite sont concernés, mais je ne peux pas les isoler...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bien reçu, merci.
si j'ai pigé :-\
Dans la colonne AC (T1) si on a une date, on connait le Siret colonne A m^me ligne
Dans T2 on cherche la ligne où on retrouve dans toute la colonne A le siret cherché (qui peut ne pas exister?)
On connait ainsi les adresses en T1 et T2 et on peut créer le lien hypertexte dans T1
C'est OK ?
Quant à la barre de progression, on verra à la mettre si nécessaire après des mesures de durée de la la procédure
Mais il faudra peut-^tre penser plus tard à la saisir une nouvelle date dans T1.... mais c'est un autre problème
si j'ai pigé :-\
Dans la colonne AC (T1) si on a une date, on connait le Siret colonne A m^me ligne
Dans T2 on cherche la ligne où on retrouve dans toute la colonne A le siret cherché (qui peut ne pas exister?)
On connait ainsi les adresses en T1 et T2 et on peut créer le lien hypertexte dans T1
C'est OK ?
Quant à la barre de progression, on verra à la mettre si nécessaire après des mesures de durée de la la procédure
Mais il faudra peut-^tre penser plus tard à la saisir une nouvelle date dans T1.... mais c'est un autre problème
petites précisions:
pour chaque SIRET en T1, on peut avoir une date de visite en colonne 29.
Si c'est le cas, créer un lien hypertexte en T1 avec la première visite en T2.
Le fichier est une extraction BI4 mensuelle, je ne pourrai ni trier ni ajouter de colonne.
Merci
pour chaque SIRET en T1, on peut avoir une date de visite en colonne 29.
Si c'est le cas, créer un lien hypertexte en T1 avec la première visite en T2.
Le fichier est une extraction BI4 mensuelle, je ne pourrai ni trier ni ajouter de colonne.
Merci
bon avant d'y aller
si j'ai bien compris le demande
845 liens hypertext crées en <=1 seconde
https://mon-partage.fr/f/PrGmdhXL/
si j'ai bien compris le demande
845 liens hypertext crées en <=1 seconde
https://mon-partage.fr/f/PrGmdhXL/