[VBA] Blocage à la copie d'une feuille avec Excel 2013

Le
HD
Bonjour,

J'ai encore un souci avec Excel 2013. J'ai une macro simple qui
fonctionne depuis les versions Excel 97 jusqu'à la version Excel 2010.
Le souci est que si le classeur où se trouve la macro passe par un poste
ayant Excel 2013 je me retrouve alors avec un classeur pour lequel la
macro ne fonctionne plus. Lorsqu'on lance la macro l'écran se fige. Le
blocage se situe au niveau de la copie d'une feuille via les lignes
suivantes:
Sheets("FdC").Select
Sheets("FdC").Copy
Dès que la copie de la feuille "FdC" est lancée Excel bloque et la suite
du script n'est pas exécutée.

Je suppose que cela provient encore de la nouvelle méthode d'encryptage
des feuilles Excel (le classeur une fois ouvert et enregistré sur un
poste ayant Excel 2013 conserve l'encryptage 2013 d'où le fait que le
problème se retrouve alors sur les autres postes ayant des versions
Excel différentes) mais comment remédier mon problème ? Je veux tout
simplement copier une feuille complète dans un nouveau classeur.

J'ai tenté de déprotéger la feuille FdC avant l'exécution de
Sheets("FdC").Copy mais rien n'y fait. Et je n'ai aucun message d'erreur
affiché.

Cordialement,

HD
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26320056
Bonjour,

Cette ligne de code serait suffisante :
Sheets("FdC").Copy

Cette ligne de code ne pose aucun problème dans Excel 2013.

As-tu un message d'erreur? Si oui, lequel?
Qu'est-ce qu'il y dans cette feuille au-delà des données?
HD
Le #26320098
Cette ligne de code serait suffisante :
Sheets("FdC").Copy
Cette ligne de code ne pose aucun problème dans Excel 2013.


Avec un classeur d'origine, le problème ne se pose pas sur des postes
avec Excel antérieur à 2013. Dès que le classeur a été ouvert et
enregistré avec Excel 2013 là les problèmes commencent.

As-tu un message d'erreur? Si oui, lequel?


Il n'y a aucun message d'erreur. Je n'ai pas de "On error resume next"
qui pourrait empêcher l'affichage d'une erreur. Excel est complétement
bloqué.

Qu'est-ce qu'il y dans cette feuille au-delà des données?


C'est une feuille de saisie avec des macros événements qui y sont
attachées (Worksheet_SelectionChange, Worksheet_Change et
Worksheet_Activate). Si je supprime toutes les macros faisant références
à cette feuille le problème est toujours là. Par contre, en faisant un
ctrl+alt+suppr pour planter Excel et le débloquer, je viens enfin
d'avoir un message d'erreur: << Erreur d'exécution '-2147417848
(80010108)': La méthode 'Copy' de l'objet '_Worksheet' a échoué >>.
Lorsque je clique sur débogage je retombe sur la ligne
Sheets("FdC").Copy

@+
HD
MichD
Le #26320191
Peux-tu publier ton classeur en utilisant le site Cjoint.com.
Fais disparaître du fichier, tout ce qui n'est pas obligatoire.
Tu nous retournes l'adresse ici .
HD
Le #26326873
Bonjour,
J'ai enfin le temps de me repencher sur le problème... Je pense que le
souci provient du fait qu'Excel considère que la feuille en question
utilise une plage de cellules immense. Lorsque j'ai voulu afficher des
lignes qui étaient cachées j'ai encore eu Excel qui a planté...

Je vais tester de copier les cellules qui m'intéressent sur une autre
feuille pour voir ce que cela donne... Je vous tiens au courant.

@+
HD


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
HD
Le #26326879
Ma partie utilisée de ma feuille (ActiveSheet.UsedRange) devrait faire
1450 cellules... or elle en fait 1835008... d'où problème.

@+
HD


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
HD
Le #26326884
Et malheureusement... Activesheet.UsedRange est loin de toujours
fonctionner... dans mon cas son exécution ne change rien.

@+
HD


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
MichD
Le #26326920
Si la plage est plus grande que celle où il y a des valeurs, essaie cette
macro pour faire le ménage.


'------------------------------------
Sub test()'MichD
Dim Sh As Worksheet, DerLig As Long, DerCol As Integer
Dim ModeCalcul As String

Application.ScreenUpdating = False
ModeCalcul = Application.Calculation
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
On Error Resume Next
For Each Sh In ThisWorkbook.Worksheets
With Sh
If Not IsEmpty(.UsedRange) Then
DerLig = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row

DerCol = .Cells.Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious).Column
.Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count,
.Columns.Count)).Clear
.Range(.Cells(1, DerCol + 1), .Cells(.Rows.Count,
.Columns.Count)).Delete
.Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count,
.Columns.Count)).Clear
.Range(.Cells(DerLig + 1, 1), .Cells(.Rows.Count,
.Columns.Count)).Delete
End If
End With
If Err <> 0 Then Err = 0
Next
Application.Calculation = ModeCalcul
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
'------------------------------------

"HD" a écrit dans le message de groupe de discussion :
m5neqk$6d9$

Et malheureusement... Activesheet.UsedRange est loin de toujours
fonctionner... dans mon cas son exécution ne change rien.

@+
HD


---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
HD
Le #26327128
Bonjour MichD,

J'ai lancé la macro, cela a pris un bon moment mais... le ménage s'est
fait correctement et tout refonctionne comme avant.

Encore un grand MERCI à toi !!!

@+
HD


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Publicité
Poster une réponse
Anonyme