Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lenteur fusion de cellules

24 réponses
Avatar
rmill...
Bonjour,

J'expérimente un problème étrange,

Avec du code je défusionne des cellules pour ensuite fusionner des cellules mais pour une plage différente.

Le mode de calcul est Í  manuel et le EnableEvents est Í  false.

Lorsque je défusionne c'est très rapide mais lorsque je fusionne cela prends un temps fou.

Voir le code ci-dessous. Est-ce qu'il y a quelque chose de pas OK dans le code et

10 réponses

1 2 3
Avatar
rmill...
Désolé j'ai publié sans le vouloir. Voici la suite.
Est-ce qu'il y a quelque chose de pas OK dans le code et/ou y a t'il un meilleur code? Merci Í  l'avance.
If cell.Value = 99 Then
Feuil12.Range(Feuil12.Cells(cell.Row, Feuil12.Range("CN_NotesDescripCol1").Column), Feuil12.Cells(cell.Row,
Feuil12.Range("CN_NotesDescripCol11").Column)).Merge
(J'ai aussi essayé avec MergedCells = true
End If
Avatar
rmill...
En fait je viens de découvrir ceci. Car j'essaie de copier coller une cellule et c'est aussi long. C'est comme si la feuille est "monopolisée".
Du moins ... dans le UsedRange.
Car lorsque ... manuellement ... lorsque le code est en arrêt ... je fusionne des cellules mais en dehors du usedrange ... c'est instantané.
Existe t'il une façon de rendre la feuille totalement "accessible"?
Avatar
MichD
Le 20/09/21 Í  16:04, a écrit :
En fait je viens de découvrir ceci. Car j'essaie de copier coller une cellule et c'est aussi long. C'est comme si la feuille est "monopolisée".
Du moins ... dans le UsedRange.
Car lorsque ... manuellement ... lorsque le code est en arrêt ... je fusionne des cellules mais en dehors du usedrange ... c'est instantané.
Existe t'il une façon de rendre la feuille totalement "accessible"?

Bonjour,
A ) Cell est une expression réservée Í  VBA, il y a sÍ»rement d'autres
expressions comme Cel qui est disponible. De mémoire, cette expression
désigne une barre d'outils dans les anciennes versions d'Excel.
B )Feuil12.Range(Feuil12.Cells(cell.Row,
Feuil12.Range("CN_NotesDescripCol1").Column), Feuil12.Cells(cell.Row,
Feuil12.Range("CN_NotesDescripCol11").Column)).Merge
Quelle est l'adresse de la plage Cell ?
Définis les variables que tu utilises :
Cell.row = Ligne de la cellule = ??
"CN_NotesDescripCol1" quelle est l'adresse de la plage de cellule?
"CN_NotesDescripCol11" quelle est l'adresse de cette plage de cellule?
MichD
Avatar
rmill...
Bonjour Í  nouveau,
J'ai fais ceci et j'ai le même résultat. Je crois que le problème est ailleurs. Même si je le fais manuellement c'est extrêmement long. Si je fusionne des cellules Í  l'extérieur du usedrange dans la feuille c'est instantané. Je veux dire pour le fusionnage des cellules ou par exemple je copie une plage fusionnée et je la colle sur une cellule défusionnée et c'est aussi très long. Je ne comprends pas.
Avatar
MichD
Le 20/09/21 Í  17:14, a écrit :
Bonjour Í  nouveau,
J'ai fais ceci et j'ai le même résultat. Je crois que le problème est ailleurs. Même si je le fais manuellement c'est extrêmement long. Si je fusionne des cellules Í  l'extérieur du usedrange dans la feuille c'est instantané. Je veux dire pour le fusionnage des cellules ou par exemple je copie une plage fusionnée et je la colle sur une cellule défusionnée et c'est aussi très long. Je ne comprends pas.

Comme tu ne réponds pas aux questions, Í  toi de trouver la solution!
MichD
Avatar
rmill...
Désolé. En fait j'ai noté que la lenteur excessive est causé par les formats conditionnels dans la feuille.
Il y a 4000 lignes dans la feuille avec plusieurs cellules fusionnées. C'est pas qu'il y ait un très grand nombre de cellules avec des formats conditionnels mais lorsque je les enlève tous ... c'est alors rapide comme il se doit.
Y aurait il une méthode pour contrer ceci?
Avatar
MichD
Le 21/09/21 Í  22:19, a écrit :
Désolé. En fait j'ai noté que la lenteur excessive est causé par les formats conditionnels dans la feuille.
Il y a 4000 lignes dans la feuille avec plusieurs cellules fusionnées. C'est pas qu'il y ait un très grand nombre de cellules avec des formats conditionnels mais lorsque je les enlève tous ... c'est alors rapide comme il se doit.
Y aurait il une méthode pour contrer ceci?

Bonjour,
Dans une feuille contenant des données, ce n'est pas une bonne idée
d'introduire la fusion de cellules. On peut remplacer la fusion par
un format de cellule "Alignement horizontal / centré sur plusieurs
colonnes.
Pour réussir Í  faire ce que tu veux, il n'y a pas de raccourci. De plus
chaque cas est particulier. Personnellement, je ne me suis jamais lancé
dans ce type d'aventure...
Pour la macro :
A ) déterminer la plage de cellules que tu veux fusionner
B ) déterminer si dans cette plage, tu as des cellules avec des mises en
forme conditionnelles en utilisant ceci :
dim MaPlage as Range
set MaPLage = Worksheets("Feuil1").range("plage Í  fusionner")
Ceci va de donner les cellules de la plage Í  fusionner contenant
les cellules contenant les mises en forme conditionnelles
Dim Rg As range
set rg = MaPlage.SpecialCells(xlCellTypeAllFormatConditions).Cells
Avant la fusion, tu boucles sur chacune de cellules et tu mets dans des
variables, l'adresse de la cellule, la formule de la mise en forme
conditionnelle, le format de cellule associé Í  la mise conditionnelle,
tu supprimes la mise en forme conditionnelle, effectue la fusion et tu
appliques Í  nouveau la mise en forme conditionnelle.
Attention, suite Í  des fusions, certaines adresses des cellules
fusionnées changent. Est-ce que cela affectera la mise en forme
conditionnelle?
Tu as beaucoup de plaisir devant toi.
C'est une situation trop particulière pour que je te propose une macro
générique...
Bon travail!
MichD
Avatar
rmill...
Un grand merci. Je comprends bien. Oui je crois que suite Í  la fusion, défusion et fusion Í  nouveau etc. ... que les plages des formats conditionnels changent. J'ai noté que dans certaines cellules il y avait plusieurs fois exactement la même règle pour cette même cellule.
Il arrive d'avoir le besoin de défusionner et ensuite fusionner sur une plage différente ceci pour la présentation de notes au états financiers selon le nombre d'années présentées.
Je vais essayer de tout enlever les formats conditionnels et y aller par macro. Mais oui ce sera un gros travail.
Encore merci.
Avatar
MichD
Le 22/09/21 Í  16:49, a écrit :
Un grand merci. Je comprends bien. Oui je crois que suite Í  la fusion, défusion et fusion Í  nouveau etc. ... que les plages des formats conditionnels changent. J'ai noté que dans certaines cellules il y avait plusieurs fois exactement la même règle pour cette même cellule.
Il arrive d'avoir le besoin de défusionner et ensuite fusionner sur une plage différente ceci pour la présentation de notes au états financiers selon le nombre d'années présentées.
Je vais essayer de tout enlever les formats conditionnels et y aller par macro. Mais oui ce sera un gros travail.
Encore merci.

Une dernière suggestion,
Il n'y a pas très longtemps, je t'ai donné une macro qui copie les mises
en forme conditionnelle d'une feuille Í  une autre ayant la même
structure. Si tu es satisfait du fonctionnement de cette macro, tu peux
faire ceci :
A ) Fais une copie de la feuille dont tu veux fusionner les cellules,
B ) Sur la copie supprime les mises en forme conditionnelles
C ) Fusionne les cellules que tu désires sur la copie
D ) Utilise la macro pour copier les mises en forme conditionnelles de
la feuille originale vers la copie. (Limite cette copie seulement Í  la
plage de cellule o͹ tu as effectué des fusions de cellule.
MichD
Avatar
MichD
Le 23/09/21 Í  08:48, MichD a écrit :
Le 22/09/21 Í  16:49, a écrit :
Un grand merci. Je comprends bien. Oui je crois que suite Í  la fusion,
défusion et fusion Í  nouveau etc. ... que les plages des formats
conditionnels changent. J'ai noté que dans certaines cellules il y
avait plusieurs fois exactement la même règle pour cette même cellule.
Il arrive d'avoir le besoin de défusionner et ensuite fusionner sur
une plage différente ceci pour la présentation de notes au états
financiers selon le nombre d'années présentées.
Je vais essayer de tout enlever les formats conditionnels et y aller
par macro. Mais oui ce sera un gros travail.
Encore merci.

Une dernière suggestion,
Il n'y a pas très longtemps, je t'ai donné une macro qui copie les mises
en forme conditionnelle d'une feuille Í  une autre ayant la même
structure. Si tu es satisfait du fonctionnement de cette macro, tu peux
faire ceci :
A ) Fais une copie de la feuille dont tu veux fusionner les cellules,
B ) Sur la copie supprime les mises en forme conditionnelles
C ) Fusionne les cellules que tu désires sur la copie
D ) Utilise la macro pour copier les mises en forme conditionnelles de
la feuille originale vers la copie. (Limite cette copie seulement Í  la
plage de cellule o͹ tu as effectué des fusions de cellule.
MichD

J'oubliais, tu peux conserver les 2 feuilles et seulement masquer la
feuille non requise selon la situation.
MichD
1 2 3