Fusionner 2 cellule sans utiliser Select

Bonjour a tous,

J'ai un petit problème j'ai crée des macro qui sont extrêmement longue sup a 400 lignes. cela ce résulte a faire planter Excel pendant 30 sec voir plusieurs minutes.

J'aimerais simplifier mon code pour accélérer mon programme.

je vais commencer par supprimer les select qui sont utilisé pour utilisé des sous macro.

exemple

ma sous macro est :

Sub Fusion()

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = True

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

End Sub

et le l'appelle dans ma macro principale comme ceci :

Range("D35:E35,D36:E36,D37:E37,D38:E38,D39:E39,D40:E40,D41:E41,D42:E42,D43:E43,D44:E44,D45:E45,D46:E46,D47:E47").Select

Fusion

Cela n'est peut être pas la bonne façon de faire mais je n'en connais pas d'autre.

Vous remerciant d'avance pour le temps passé a lire ceci et pour m'aider.

Bonne continuation a tous

EcorcePhenix

Bonjour,

Les Select sont certes totalement inutiles (quand ce n'est pas l'objet ultime de l'action), mais il y a encore bien d'autres choses inutiles et qui bouffent inutilement du temps (et du volume de code) !

Sub Fusion()
    With ActiveSheet.Range("D35:E47")
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Merge True
    End With
End Sub

Cordialement.

Bonjour,

sans regarder plus en avant, la fusion de cellules est à proscrire, ça n'amène que des soucis ...

P.

Essaie comme ça :

Sub test()
Dim i
For i = 35 To 47
Range("D" & i & ":E" & i).Merge
Range("D" & i & ":E" & i).HorizontalAlignment = xlCenter
Next
End Sub

Rappel : Les cellules fusionnées sont une calamitée ! Un bon tableau Excel ne devrait pas comporter de Fusions

A+

galopin01 a écrit :

Essaie comme ça :

Sub test()
Dim i
For i = 35 To 47
Range("D" & i & ":E" & i).Merge
Range("D" & i & ":E" & i).HorizontalAlignment = xlCenter
Next
End Sub

Rappel : Les cellules fusionnées sont une calamitée ! Un bon tableau Excel ne devrait pas comporter de Fusions

A+

Je me sens moins seul pour le coup...

Bonjour à tous !

Les cellules fusionnées peuvent parfois être gênantes ! Et je suis d'accord qu'elles sont à exclure dans une base de données !

Mais faut pas faire une fixation là-dessus ! Cela peut rendre des services, et l'on peut s'en accommoder !

Faudrait pas non plus lui squizer le centrage vertical et le retour automatique à la ligne !

Et la méthode Merge dispose d'un paramètre : accross dont la valeur True fait opère la fusion par lignes. On peut donc fusionner la plage globalement et par lignes...

Cordialement.

Bonjour a tous.

Je vous remercie de m'avoir proposé vos solutions.

voici le code que je doit utiliser pour faire une fusion qui soit compatible avec le reste de mon code :

Sub Fusion()

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = True

.Merge False

End With

End Sub

Mon problème est que avec cela Excel bug encore plus.

je doit faire des fusion (question d'esthétique), c'est pourquoi je l'ai mis dans une sous macro et le l'appelle de temps à autre pour alléger le code principale. j'ai fait cela pour beaucoup de chose (centrage des cellules, coloration, création de tableau etc ...)

mais comment puis-je faire cela sans utiliser de select ?

Cordialement

EcorcePhenix

Avec cette macro tu peux pas : Quand on commence avec With Selection c'est qu'on à mis du select quelque part !

comment puis-je faire pour faire appelle a une sous macro sans le select ?

Et que sélectionnes-tu donc ? Si ça renâcle c'est que ta sélection est mauvaise...

NB- Tu fais semblant de reprendre le code que j'ai proposé mais ce n'est pas le cas, tu l'as dénaturé !

Bonjour MFerrand

J'ai adapté ton code pour qu'il marche dans mon code. après je ne l'ai pas dénaturer j'ai juste changé un false par true.

je fait pas mal de sélection pour faire une fiche présentable.

si je fait une sélection multiple ex

Range("C18:D18,C19:D19,C20:D20,C21:D21,C22:D22,C23:D23,C24:D24,C25:D25,C26:D26,C27:D27,C28:D28,C29:D29,C30:D30,C34:D34,C35:D35,C36:D36,C37:D37,C38:D38,C39:D39,C40:D40,C41:D41,C42:D42,C43:D43,C44:D44,C45:D45,C46:D46,E50:E52,G50:G52").Select

cela accélère t'il l'exécution ou il vaut mieux séparer en petit groupe ?

Ps voici d'autre sélection pour de la fusion que j'exécute

Range("A78:D78,A103:D103,A53:D53").Select

Fusion

Range("G19:I22,G23:I26,G27:I30,A73:B73,A74:B76,A98:B98,A99:B101,A123:B123,A124:B126").Select

Fusion

il n'y a pas un moyen de tout mettre sur la même ligne ?

Merci de ton aide

Bonjour,

J'ai adapté ton code pour qu'il marche dans mon code. après je ne l'ai pas dénaturer j'ai juste changé un false par true.

C'est inexact ! Il n'y avait aucun False dans mon code et tu as changé un True par False ! Ce qui change tout !!!

Pire ! Tu le changes après que j'ai expliqué à quoi servait ce True ! Tu n'as donc rien compris ! Et en outre tu réintroduis un Selection alors même que ta demande visait à les supprimer !!!

Un Select n'accélère jamais, il ralentit toujours ! Ça c'est une certitude, et c'est ta demande de suppression des Select qui m'a incité à intervenir, car elle me semblait aller dans le bon sens pour optimiser du code...

Mais il faudrait au moins t'y tenir ! Et sans doute aussi t'expliquer un peu mieux sur ta configuration et ce que tu entends réaliser...

Cordialement.

Bonjour,

J'ai changé un True par False car je ne fait pas que de la fusion de cellule par ligne. Je fait toute sorte de fusion. J'ai donc adapté ta solution pour qu'elle marche comme c'était le cas avant avec ma solution.

Ensuite ce qui me gêne dans ta solution c'est que je ne fusionne pas que les cellules( D35:E47).

Or avec cette macro je ne vais que fusionner (D35:E47). Ne peut t'on pas mettre de variable a la place de celle ci pour que je puisse appeler la macro fusion et en lui donnant les cellules a fusionner ?

Sub Fusion()

With ActiveSheet.Range("D35:E47")

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlCenter

.WrapText = True

.Merge True

End With

End Sub

Cordialement

On retombe toujours sur la même question , une macro c'est de la précision, exemples ou modèles doivent avoir une structure identique, des configurations identiques, des types de données identiques à l'original sur lequel on voudra finalement opérer, pour obtenir des réponses adéquates.

Rechercher des sujets similaires à "fusionner utiliser select"