Microsoft 365 Copier fige Excel si classeur contenant des macros

TIGER

XLDnaute Nouveau
Bonjour à toutes et tous,

Je rencontre ce problème sur 2 PC qui tournent sous win10/Excel 365. Cela peut se produire avec différents fichiers contenant des macros.

La durée du "figeage" est variable.

S'il n'y a que le fichier en question je n'ai pas le problème, s'il y a un second classeur ouvert j'ai le problème.

J'ai vu plusieurs causes possibles sur ce forum et sur d'autres et ai tenté plusieurs actions :

- changement d'imprimante par défaut 👎
- Supprimer les MEF conditionnelles 👎
- Mode sans échec 👍 -- je peux copier/coller dans tout les sens, même de très grandes quantités de données sans problème
- Du coup arrêter les compléments un à un pour trouver le problème 👎
- Antivirus 👎

Je joins un classeur avec lequel j'ai le problème.

D'avance merci pour votre aide, je sèche.
 

Pièces jointes

  • MEF AUTO.xlsm
    27.1 KB · Affichages: 8
Solution
Bonjour,

Dans le fichier il y avait plusieurs macros de recherche et d'attribution d'un nom à l'imprimante PDF écrites sous cette forme :
VB:
Sub CreerPdf()

    ThisWorkbook.Sheets("CourImp").Select
    For aa = 0 To 9
        Nom = "Bullzip PDF Printer sur Ne0" & aa & ":"
        On Error Resume Next
        Application.ActivePrinter = Nom
        If ActivePrinter = Nom Then Exit For
    Next
    Application.ActivePrinter = "Nom"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
                                         "Nom", Collate:=True

End Sub

Nous avons juste réécrit la chose sous la forme :
Code:
Sub CreerPdf()
    Dim Nom As String
    Dim aa As Integer
    
    ThisWorkbook.Sheets("CourImp").Select...

Hasco

XLDnaute Barbatruc
Repose en paix
Perso, je vous ai montré plusieurs fois comment vous passer des select soit en référençant dans des variables soit en utilisant les structure with ... end with soit en nommant explicitement les objets.


Les select sont exceptionnellement nécessaires. Dans votre cas, non, même pour les fenêtres.

Par contre si vous tenez absolument à sélectionner, une feuille doit être activée AVANT de pouvoir en sélectionner les objets.
VB:
Sub ZoomSurSelectionHS()

    With ThisWorkbook
        With .Sheets("Feuil1")
            .Activate
            .Range("A1:k25").Select
        End With

        ActiveWindow.Zoom = True

        With .Sheets("Feuil2")
            .Activate
            .Range("A1:j9").Select
        End With
        ActiveWindow.Zoom = True

    End With

Dans votre macro, quel est l'intérêt de Sélectionner Feuil1 et A1:K25 pour ne rien en faire, zoomer la fenêtre pour passer à une autre ????
 

TIGER

XLDnaute Nouveau
Edit : Pardon Hasco je n'avais pas vu votre réponse,
Ce bout de code me sert à adapter les fenêtres à la taille des écrans des différents collaborateurs.
Merci pour votre correctif

------------

Bon j'ai revu tout le code et il y a de l'amélioration mais le problème persiste surtout sur les portables de mes collègues qui ont moins de ressource.

Je pense que le problème vient du presse papier Outlook et j'aimerais avoir votre avis là-dessus car j'ai fait quelques tests sur les PC qui ont du mal :

> dans le fichier "A" posant problème copier/coller d'une cellule -> excel se fige mais le processeur et la ram ne passe pas au dessus de 70%
> dans le même fichier "A" si on sélectionne les données dans la barre de formule et qu'on la colle dans la cellule : aucun problème
> ou ouvre un second fichier "B" et on essaye de copier une cellule de celui-ci vers "A" -> excel se fige mais le processeur et la ram ne passe pas au dessus de 70%
> le même tableau collé dans word puis selectionné et collé dans le fichier A : aucun problème

A en perdre son latin ! Une idée ?
D'avance merci
 

TIGER

XLDnaute Nouveau
Hasco, je sais bien mais le classeur en question contient plein de données sensibles.
Une autre piste, je viens d'essayer sur un Office 2010 et je n'ai pas du tout le problème à priori !
On va essayer un peu plus longtemps et je vous redis.
 

TIGER

XLDnaute Nouveau
Bon nous venons de valider sur un second "vieux" PC équipé de office 2010, sur le même fichier.
Nous avons fait des copier/collé dans tous les sens sans soucis.

Donc le fichier marche nickel sous Excel 2010 et pose problème sous excel365...
Du coup je ne vois pas bien comment nous allons nous en sortir...
 
Dernière édition:

TIGER

XLDnaute Nouveau
Bonjour à toutes et tous,
Problème résolu par Hasco que je remercie chaleureusement et à qui je laisse le soin d'expliquer d'où venez le problème car il faut rendre à césar ce qui est à césar.
Pour ma part je vous remercie pour votre aide et je passerai le sujet en résolu une fois l'explication postée.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans le fichier il y avait plusieurs macros de recherche et d'attribution d'un nom à l'imprimante PDF écrites sous cette forme :
VB:
Sub CreerPdf()

    ThisWorkbook.Sheets("CourImp").Select
    For aa = 0 To 9
        Nom = "Bullzip PDF Printer sur Ne0" & aa & ":"
        On Error Resume Next
        Application.ActivePrinter = Nom
        If ActivePrinter = Nom Then Exit For
    Next
    Application.ActivePrinter = "Nom"
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
                                         "Nom", Collate:=True

End Sub

Nous avons juste réécrit la chose sous la forme :
Code:
Sub CreerPdf()
    Dim Nom As String
    Dim aa As Integer
    
    ThisWorkbook.Sheets("CourImp").Select

    On Error Resume Next
    '
    ' Chercher un nom valide pour ActivePrinter
    For aa = 0 To 9
        Nom = "Bullzip PDF Printer sur Ne0" & aa & ":"
        ' Effacer une éventuelle erreur précédente
        Err.Clear
        Application.ActivePrinter = Nom
        ' Si pas d'erreur c'est bon on peut sortir
        If Err.Number = 0 Then Exit For
        Nom = ""
    Next
    
    On Error GoTo 0
    '
    ' Si on a bien obtenu un nom pour ActivePrinter
    If Nom <> "" Then
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=Nom, Collate:=True
    Else
        MsgBox "Impossible de localiser l'imprimante PDF", vbExclamation, "Creation Pdf"
    End If

End Sub

Apparemment la réécriture de ce code a suffit à régler le problème.

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO