XL 2016 Error 1004 - merged cells

  • Initiateur de la discussion Initiateur de la discussion Aloha
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Aloha

XLDnaute Accro
Bonsoir,

dans une feuille toutes les cellules sont reliées verticalement deux par deux dans A1:Y66.
Avec une macro je les ai déliées et lorsque je veux les trier, je reçois l'erreur 1004: "To do this all the merged cells must be of the same size".
J'ai vérifié le format des cellules: il n'en reste aucune qui serait reliée et manuellement j'arrive à trier.
Seulement, lorsque j'enregistre ce triage, et que je colle le bout de code dans la macro déliant les cellules, je reçois l'erreur.
Quelle solution y a-t-il à ce problème?
Bonne soirée
Aloha
 
j'ètais sur le point de l'ajouter.
J'ai fait un fichier exemple, mais là le code fonctionne.

Le code d'origine qui fonctionne mais très lentement:

Code:
Sub PréparerFeuilles(WS As Worksheet)
Dim Zelle As Range

WS.Unprotect

For Each Zelle In WS.Range("A5:AC66")
   If Zelle.MergeCells = True Then
       With Zelle.MergeArea
           .MergeCells = False
       End With
   End If
Next

WS.Range("A5:A66").Copy
WS.Range("A5:A66").PasteSpecial xlPasteValues

WS.Range("A5:Y66").Sort Key1:=WS.Range("A5"), Order1:=xlAscending
End Sub

Comme il est trop lent, j'ai essayé, avec mes modestes moyens, d'accélérer l'action et j'ai fabriqué le code suivant:

Code:
       Range("B1:E66").Select
       Selection.Delete Shift:=xlToLeft
       Range("A5:Y66").Select
       With Selection

          .HorizontalAlignment = xlCenter
          .VerticalAlignment = xlCenter
          .WrapText = False
          .Orientation = 0
          .AddIndent = False
          .IndentLevel = 0
          .ShrinkToFit = False
          .ReadingOrder = xlContext
          .MergeCells = False
    
      End With

Et en-dessous j'ai collé le bout du code original qui fait le triage:

Code:
WS.Range("A5:A66").Copy
WS.Range("A5:A66").PasteSpecial xlPasteValues

WS.Range("A5:Y66").Sort Key1:=WS.Range("A5"), Order1:=xlAscending
End Sub

En A5:A66 il y a des dates produites par des formules et elles sont sauvées en les remplaçant par les valeurs.

Dans le code d'origine il y a la variable Ws parce que le code doit s'exécuter sur toutes les feuilles.
J'ai essayé de l'ajouter à Range: Ws.Range, mais ça n'est pas accepté.

Comme le code enregistré fonctionne dans le fichier exemple, ça doit tenir au fait qu'il y a la variable, non?
Comment devrais-je modifier ce code pour qu'il tourne rond sur toutes les feuilles?
Lorsque je fais le même tri manuellement il n'y a aucun problème.

Bonne soirée
Aloha
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour