Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL pour MAC excel 2011 à 2016 : gros ralentissement macro et bug bouton

marty

XLDnaute Nouveau
Bonjour,

Je viens vers vous car je rencontre 3 problèmes en tentant d'adapter un fichier excel 2011 qui marchait très bien sur la version 2016.
Je précise que je suis sur Mac.

Problème 1 :
J'avais créé une macro sur excel 2011 pour réduire et masquer des cellules.
La macro marchait parfaitement sur excel 2011 et était très rapide.

En passant sur 2016, j'ai un énorme ralentissement : 5 fois plus long...

Voici la macro :

Sub Masque_lig() ' masque les lignes ou la valeur dans les cellules de la colonne I sont =0
Application.ScreenUpdating = False
Sheets("DEVIS OK").Select
Set a = Range("I28", Range("I170").End(xlUp))
Set b = Range("J28", Range("J170").End(xlUp))
Union(a, b).Select
For Each cellule In Selection
If cellule.Value = "0" Then cellule.EntireRow.Hidden = True
Next cellule
Range("C26:F200").Select
Selection.NumberFormat = ";;;"
Application.ScreenUpdating = True
Range("B27").Select
End Sub

Quelqu'un aurait une idée ?

2nd problème :
Mes boutons affectant les macros sont devant des cellules dans un coin de la feuille.
Sur 2011, pas de soucis : je passais la souris sur le bouton et il comprenait que je souhaitais cliquer dessus.
Sur 2016 : je passe la souris sur le bouton, clique mais la souris me sélectionne la cellule en dessous...


3ème problème : ma macro créant un pdf automatique bugue complètement et plante excel 2016 :

Sub RecordPDF()
Application.ScreenUpdating = False
Dim LeRep As String, LeNom As String, LeClient As String, LaDate As String
LeRep = ThisWorkbook.Path & Application.PathSeparator
LeNom = ThisWorkbook.Name
LeNom = Left(LeNom, Len(LeNom) - 4)
LaDate = Format(Date, "ddmmyyyy")
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
LeRep & LeNom & "_" & LaDate & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
Application.ScreenUpdating = True
End Sub

Est ce que quelqu'un a déjà rencontré ce problème ?

Un grand merci d'avance, pour vos réponses !

Kiné.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Test OK sur PC
(macro pour masquer ligne zéro)
VB:
Sub Masque_Demasque_Ligne_I_zero()
Dim x&: x = Application.Columns.Count
Application.ScreenUpdating = False
With Range("I2", Range("I" & Rows.Count).End(xlUp))
    Set p = .Offset(, x - 9)
End With
p.Formula = "=IF(I2=0,""$²$"",9)": p.Value = p.Value
Columns(x).SpecialCells(2, 2).EntireRow.Hidden = Not Columns(x).SpecialCells(2, 2).EntireRow.Hidden
End Sub[code]

Test OK sur mon PC
(macro pour Export en PDF)
VB:
Sub RecordPDF()
Application.ScreenUpdating = False
Dim LeRep$, nf$, Fichier$
LeRep = ThisWorkbook.Path & Application.PathSeparator
nf = ThisWorkbook.Name: nf = Mid(nf, 1, InStrRev(nf, ".") - 1)
Fichier = LeRep & nf & Format(Date, """_""ddmmyyyy"".pdf""")
ActiveSheet.ExportAsFixedFormat _
            Type:=xlTypePDF, _
            Filename:=Fichier, _
            Quality:=xlQualityStandard, _
            IncludeDocProperties:=True
End Sub
 
Dernière édition:

marty

XLDnaute Nouveau
Bonjour Staple1600,

Merci beaucoup ça fonctionne en effet sur mon Mac et c'est super rapide ! Bravo !

En revanche est-il possible que la macro n'intervienne qu'à partir de la ligne 29 et pas au delà de la ligne 154. Je m'explique : il y a un haut de page avec des infos concernant la date, le client, le projet et en bas le total avec des mentions que l'on ajoute, qui disparaissent avec votre macro.
Avec ma macro, le bas de page doit remonter d'autant qu'il y a dans la liste de lignes masquées.

Autre question/remarque : mon code permettait de ne pas faire disparaitre les lignes nommée "PRODUCTION" dans le fichier joint (ligne 28, 50, 79...) qui sont en quelques sortes des têtes de chapitre qui calculent le total de chaque chapitre (je ne sais pas si c'est très clair).

Merci beaucoup !
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Et la macro PDF (voir mon précédent message)
Elle fonctionne aussi.

Pour la première macro, je te laisse essayer de l'adapter
(Faut bien que tu bosses un peu sur la résolution de ta question, non ? )
Je repasse plus tard voir comment tu t'en seras sorti.

NB: Tu as remarqué que la macro a un double effet ?
Tu l’exécutes une fois: les lignes sont masquées
Tu l’exécutes une seconde fois : les lignes sont affichées
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…