Macro acceptée ou pas

Bonjour,
J’ai un fichier Excel(.xlsm) simplissime ; c’est une liste d’adhérents avec 3 colonnes (N°, Nom, Prénom). La feuille est protégée mais doit pouvoir être triée. Je lui ai donc ajouté deux boutons (à partir d’images) auxquels j’ai affecté les macros ci-dessous, afin de pouvoir trier la liste par nom ou par numéro.
J’ai installé le fichier sur un réseau interne et, à partir de là, des raccourcis pour y accéder sur plusieurs postes.
Tout se passe bien sur 4 postes ; mais impossible d’utiliser les macros sur 3 autres. J’ai pourtant vérifié dans les options qu’Excel accepte les macros, mais rien à faire, je prends un refus avec code 438. Le débogueur me surligne en jaune la zone que j’ai mise en italique.(cf photo jointe).

Comment se fait-il que ça marche parfaitement ici, et pas là, alors que le code est évidemment le même ?

Un grand merci d’avance à qui pourra m’expliquer et m’aider à résoudre le problème.

Sub TriParNom()

’ TriParNom Macro
’ Classe la liste des adhérents par nom


ActiveSheet.Unprotect
ActiveWorkbook.Worksheets(« Adherents »).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(« Adherents »).Sort.SortFields.Add2 Key:=Range( _

  •    "B2:B2500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _*
    
  •    xlSortNormal*
    
    With ActiveWorkbook.Worksheets(« Adherents »).Sort
    .SetRange Range(« A1:C2500 »)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
    False, AllowSorting:=True
    End Sub
    Sub TrParNumero()

    ’ TrParNumero Macro
    ’ Classe la liste des adhérents par numéro


ActiveSheet.Unprotect
ActiveWorkbook.Worksheets(« Adherents »).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(« Adherents »).Sort.SortFields.Add2 Key:=Range( _

  •    "A2:A2500"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _*
    
  •    xlSortNormal*
    
    With ActiveWorkbook.Worksheets(« Adherents »).Sort
    .SetRange Range(« A1:C2500 »)
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
    False, AllowSorting:=True
    End Sub

Bonjour,

avoir le fichier nous aidera bien a mieux comprendre et à pouvoir tester.
(de façon anonyme si possible)
Will

Merci Jacquinot pour cette réponse rapide.
Voici en PJ le fichier Excel :
Ex_Listing_Tri.xlsm (81,7 Ko)
Merci d’avance.

1 « J'aime »

Il se peut que la version Excel des trois autres postes n’est pas identique aux quatre autres qui fonctionnaient ou bien la mise a jour n’est pas bien faite.
La fameuse erreur 438.

Merci pour cette réponse.
Je vais tâcher de regarder ces postes dans les prochains jours, et je te ferai part du verdict…
Cordialement,

Bonjour Jacquinot,
Je viens de regarder les articles concernant l’erreur 438 et les fichiers exd
Mais je me demande si ça me concerne. Les images que j’ai utilisées pour créer mes deux « boutons » s’apparentent-elles à des Contrôles ActiveX ?

ah, il faut donc trouver d’autre solution,

bonjour,
je ne suppose pas qu ceci sera une bonne solution, mais si on n’essaie pas …
Ex_Listing_Tri (1).xlsm (78,6 Ko)

Merci Cow18.
Un petit coup d’éclairage peut-être… car je ne vois pas le changement.
Merci d’avance.

ce méthode de trier, je pense que cela est assez vieux (avant excel 2016, je crois) mais si vous n’avez pas d’erreurs, alors …

With Sheets("Adherents")
          .Unprotect
          .Range("A1:C2500").Sort .Range("B1"), xlAscending, Header:=xlYes
          .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True
     End With

OK je vois mieux.
J’essaierai avec ce nouveau codage pour voir si cette fois-ci, les postes récalcitrants le sont moins…
Je reviendrai ici pour te dire, bien sûr ; mais je ne pourrai pas m’en occuper avant une bonne dizaine de jours. Mon silence d’ici-là sera donc normal ; ni un oubli ni une grossièreté !
Un grand merci en attendant, quoi qu’il en advienne.

1 « J'aime »