[RESOLU] .Hyperlinks.Delete beaucoup trop long, voir plantage !?

Roland_M

XLDnaute Barbatruc
Bien le bonjour à tous,

Tout est dans le titre !

.Hyperlinks.Delete avec 20000 lignes, sur une colonne, ça n'en finit pas ! environ 2 minutes !?
à 25000 environ 3 min et parfois j'ai droit au message excel ne répond pas et c'est le plantage !?

comment faire autrement, auriez-vous une autre proposition ?

j'ai essayé, par macro, de copier les données, supprimer puis recopié.
ça ne plante pas mais c'est très long aussi.
bien entendu, avant le lancement, j'ai mis à false les événements, affichage, calculation ...

merci d'avance pour toutes vos réponses !

LA MACRO:
'annule filtre
ActiveSheet.ShowAllData: ActiveSheet.AutoFilter.Sort.SortFields.Clear
'range de données
R$ = Range(Cells(NoPremLig, NoDeCol), Cells(NoDernLig, NoDeCol)).Address
Dim Tablo As Variant
Tablo = Range(R$) 'load
With Range(R$)
.Clear 'vide
.Value = Tablo 'recolle
.Font.Name = Arial
.Font.Size = 8
.Font.ColorIndex = 1 'noir
.Font.Underline = xlUnderlineStyleNone 'sans souligne
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
 

job75

XLDnaute Barbatruc
Bonjour Roland_M,

Ceci est très rapide et c'est ce que fait ta macro :
Code:
Sub RAZ()
Dim t
With [A1].CurrentRegion.Columns(1)
    t = .Value
    .Clear
    .Value = t
End With
End Sub
Ensuite on peut formater la colonne A comme on veut.

A+
 

Roland_M

XLDnaute Barbatruc
Bonsoir,

Merci à toi Job75 !
Effectivement c'est très semblable, mais malheureusement ça ne change rien !
Je crois fort que l'on ne puisse rien y faire.
Car même la mise en format de la colonne (uniquement les données) est longue !
J'ai mis des affichages après chaque opération, et bien même .Font.ColorIndex = 1 ce n'est pas instantané !?
 

Roland_M

XLDnaute Barbatruc
re,

effectivement !

c'est une colonne de 26500 lig qui comporte simplement des valeurs entières de 4 et 5 chiffres
j’ai supprimé les liens avant, c’est un classeur d’un peu moins de 4 mo
voici les durées à chaque exécution(en sec) :

Tablo = .Value > Durée= 0

.Clear > Durée= 27,82813

.Value = Tablo > Durée= 0,046875

.Font.Name > Durée= 28

.Font.Size > Durée= 28,01563

.Font.ColorIndex > Durée= 12,72656

.Font.Underline > Durée= 0

.HorizontalAlignment > Durée= 0

.VerticalAlignment > Durée= 0
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
re bonjour,

j'ai fais cet essai:
j'ai recopié mes 3 colonnes de données et jusqu'à 30 000 lignes dans un classeur séparé
avec la même macro le temps d'exécution est instantané ! environ 1 seconde !

alors question: ce problème serait t'il dû au poids du classeur ?
 

Roland_M

XLDnaute Barbatruc
Bonjour Job !

merci pour le suivi !

j'ai trois classeurs identiques avec le même problème.

exemple sur un de ceux là:
range = "B3 : B26501"
actuellement il met 140 sec !

j'ai supprimé toutes les feuilles, il n'en reste que trois nécessaires
et là ça met 90 sec !

j'ai supprimé toutes les colonnes de cette feuille excepté les trois premières nécessaires.
et là ça met 80 sec

mais tout ceci n'est pas régulier, c'est incompréhensible !?
je ne peut pas faire plus !?

si j'utilise .Hyperlinks.Delete , message "excel ne répond pas" et c'est souvent le plantage !?
j'ai pourtant beaucoup d'autres classeurs importants et je n'ai pas de problème !?
(ce sont des classeurs de travail pour mon fiston pour son boulot)
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
re,

c'est exactement ce dont je viens de faire !
j'ai gagné une poignée de sec c'est tout !

ce qui m'inquiète le plus c'est que les données vont continuer à s'accumuler et j'ai peur pour l'avenir !
ce serait une catastrophe ! le fichier est capitale !
je vois pas comment modifier ça.
j'ai pensé travailler avec des fichiers de données externes, mais vu l'utilisation ce ne serait plus pratique du tout !

actuellement j'ai remarqué que les exécutions longues:
.Clear /.Font.Name/Size /.Font.ColorIndex /.VerticalAlignment

mettent la même durée chacune !?
exp avec les 26500 lig c'est 28 sec Total 140 sec

avec entre chaque exécution le message "ne répond pas"
puis repart et recommence le message "ne répond pas"
j'ai même la page qui devient invisible et ce jusqu'à la fin !


EDIT: voir message suivant suite intervention eriiic, il semblerait que cela vienne des MEFC
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Bonjour tout le monde,

ce n'est pas à proprement parlé, résolu, j'ai simplement changé de méthode de travail

il s'agissait de fichiers références de production avec des liens sur les plans(pdf) de ces mêmes références

en simplifiant:
je ne crée plus de liens, mais, par double-clic sur la refce, j'effectue une recherche dans les dossiers concernés
en mémorisant dans un tableau les fichiers(3 ou 4) de cette refce, ça prend 1 à 2 sec
et je lance l'appel en boucle
ActiveWorkbook.FollowHyperlink Address:=TabloFichPlan(I)

c'est presque instantané, j'ai 1 à 4 onglets dans Acrobat ce qui est beaucoup plus efficace sur le plan travail pour effectuer une comparaison instantanée

encore un grand merci à Job75 toujours présent et aussi pertinent !
 

Roland_M

XLDnaute Barbatruc
Bien le bonjour tout le monde,

je reviens juste pour info concernant ce problème avec les liens en grand nombre !
malgré que j'ai changé de méthode, je voulais tout de même comprendre !

il se trouve que lorsque les opérations se déroulent sur feuille très chargée en données
l'exécution est interminable, alors que ces mêmes opérations sur feuille vierge c'est très rapide !
la mise à jour du classeur prenait un peu plus de 32 minutes ! et là environ une minute !

en fait je copie en tableau la colonne de données dans une feuille temp vide
je crée les liens, environ 28000, en moins de 10 sec ! le reste c'est de la mise en forme
et je recopie ces mêmes données avec liens mais cette fois avec Copy Destination . . . car en tableau ça ne recopie pas les liens !

voilà voilà ! à plus.

EDIT: voir message suivant suite intervention eriiic, il semblerait que cela vienne des MEFC
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Bonjour,

ta version 2007 dans ton profil c'est toujours valable ? Tu n'es pas passé à 2016 des fois ?
Il y a des lenteurs dans certaines conditions.

A tout hasard, si sur ta feuille tu as des données sources contenues dans des fichiers csv ou txt externes il faut bloquer le calcul de la feuille.
Si tu as des MFC calculées les bloquer aussi, ainsi que les sauts de pages tant qu'on y est :
VB:
    With sh
        .DisplayPageBreaks = False
        .EnableCalculation = False ' feuille avec données sources contenues dans des fichiers csv ou txt externes.
        ' >=2007: calcul formats conditionnels
        If Application.Version >= 12 Then .EnableFormatConditionsCalculation = False
    End With
Comme ce n'est pas listé et que parfois on oublie cette partie... :)
eric
 

Roland_M

XLDnaute Barbatruc
Bonjour à tous,

merci à toi eric pour ton intervention !
j'ai pensé à tous ça, sauf > .EnableFormatConditionsCalculation
du coup j'avais gros espoir car il y a effectivement des MEFC !

EDIT:
dommage mais EnableFormatConditionsCalculation = False n'y change rien !
j'ai supprimer les MEFC et ça fonctionne, mais et je ne peux supprimer les MEFC de son classeur !

en attendant merci pour cette piste !
 
Dernière édition:

Statistiques des forums

Discussions
311 720
Messages
2 081 917
Membres
101 839
dernier inscrit
laurentEstrées