Temps d'éxécution VBA fusion de cellule

Bonjour,

Dans une macro VBA j'éffectue un grand nombre de fusion.

Seulement j'ai remarqué que ces fusions ralentissent grandement l'éxécution de ma macro.

Savez-vous comment y remédier ?

Merci pour votre aide

Bonne journée

Bonjour

Avec le fichier on y verrait plus clair.

Ce fichier est confidentiel, je réalise un grand novembre de fusion de cellule pour améliorer la lisibilité et cette action en particulier augmente considérablement le temps d’exécution de la macro

Ne sachant pas comment ni quelles fusions tu fais je ne vois pas ce que je pourrais te dire. A part peut être qu'un fichier ça peut s'anonymiser.
Bon courage

J’utilise ceci pour fusionner :

Range (Cells (ligneC,"A"), Cells (ligneC + ligne, "A")) .Select

With Selection

.HorizontalAlignment - xlCenter

.VerticalAlignment = xlCenter

.WrapText - False

.Orientation - 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xIContext

.MergeCells - False

End With

Selection.Merge

Ajoutez : Application.ScreenUpdating = False en début de macro et Application.ScreenUpdating = True à la fin

Commencez donc par remplacer : With Selection par : Range (Cells (ligneC,"A"), Cells (ligneC + ligne, "A"))
puis déplacez le .Merge avant le EndWith
Pas sûr que vous gagniez grand-chose...

Merci, mais j’ai déjà mit Application.ScreenUpdating = False en début de macro et Application.ScreenUpdating = True à la fin.

En effet je pense pas gagner bcp…

Je me demande pourquoi la fusion fait perdre autant de temps. Elle doit multiplier mon temps d’exécution par 20 au moins…

Le select prennent du temps et sont rarement utiles.

En faisant comme tu m’a dit le fusion ne marche plus…

Désolé mais sans fichier je ne peux rien de plus.

Bonjour,

Hello yal

@ Raum'1

Tu as mis un extrait de ton code de fusion...

On ne sait pas à quoi correspond "ligneC", par exemple...

Peux-tu joindre l'entièreté de ton code (entre balises, stp)

image

Bonjour,

Ma Marco fait 700 lignes et je ne pense pas qu’elles soit très compréhensible…

Mais je vais essayer de vous expliquer,

Je fusionne des cellules pour la lisibilité, toujours des cellules dans la colonne A par exemple et qui se suivent.(ex: A1, A2 et A3)

Seulement j’effectue près de 2000 fusions donc cela ralentit grandement la Marco.

Je voudrais me débarrasser du sélect car j’ai crue comprendre que c’était lui le fautif seulement comment faire ?

Ligne C correspond à la ligne de départ de la fusion et ligne le nombre de ligne qui doivent être fusionnées à partir de ligneC et qui se suivent.

Est-ce compréhensible ?

Worksheets ("ComptesServices") .Activate
Range (Cells (ligneC, "A"), Cells (ligneC + ligne, "A")) .Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
Selection. Merge

Comme ceci ça devrait marcher

Worksheets ("ComptesServices") .Activate

With Range (Cells (ligneC, "A"), Cells (ligneC + ligne, "A"))
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
. Merge
End With

Merci mais j’ai déjà essayé et ça ne fonctionne pas, aucune cellule n’est fusionnée.

bonjour

un espace de trop ?

.Merge

Merci mais Idem, aucune fusion n’est réalisée

Voici un exemple de fusion tu pourras peut être t'en inspirer.

2008 lignes, 9 colonnes avec des fusions de partout en 0.9 secondes pour calculer les zones à fusionner et réaliser les fusions.

Il suffit de lancer la macro : "FusionIndépendante()"

19exemple-fusion.xlsm (190.04 Ko)

Parfait, C'est bon j'ai réussi à me débarsser des selections.

Merci à tous

Rechercher des sujets similaires à "temps execution vba fusion"