Changer macro en code

Bonjour,

Je vous joins un fac-similé d'un tableur d'une amicale dont le tri par région se fait par un code mis au point ici.

Un tri similaire (par simple clic d'une cellule) au niveau des cotisations serait bien pratique..... j'y arrive via le lancement des macros mais je n'arrive pas à transformer ceux-ci en code....

Je vois bien dans les macros les différences au niveau AutoFilter... mais pour les insérer dans un code

Ce tableur sera protégé par un mot de passe et il faudrait que les utilisateurs puissent filtrer et avoir l'affichage demandé sans pouvoir rien modifier.

Dernier point, à l'ouverture, je souhaiterai avoir l'affichage de toutes les régions avec tous les adhérents.

Merci d'avance.

Excellente journée

Tonthon

Bonjour,

Un début de réponse à adapter.

Cdlt.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r

    If Not Intersect(Target, Range("C2:F4,B2")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        If Target.Value <> "Tous" Then
            r = Split(Target.Value, " ")(1)
            [D6] = r
            Range("$A$7:$Q$277").AutoFilter Field:=2, Criteria1:=r
        Else
            Range("$A$7:$Q$277").AutoFilter Field:=2
            [D6] = "Tous"
        End If
    End If

    If Not Intersect(Target, Range("I2:I4,I6")) Is Nothing Then
        If Target.Count > 1 Then Exit Sub
        Select Case Target.Address
            Case "$I$2"
                Range("$A$7:$Q$277").AutoFilter Field:=11
                [D6] = "Tous"
            Case "$I$3"
                Range("$A$7:$Q$277").AutoFilter Field:=11, Criteria1:=">0"
            Case "$I$4"
                Range("$A$7:$Q$277").AutoFilter Field:=11, Criteria1:="<=0"
            Case "$I$6"
                MsgBox "A déterminer..."
        End Select
    End If

End Sub

Bonjour Jean-Eric

J'ai introduit ton code après avoir supprimé l'ancien puisque tu l'as intégré.

Le résultat

Ceci dit, pourrais-tu faire le code pour l'affichage en I6 de "tous les adhérents" et j'essayerai de reproduire la même chose pour les 2 autres cas restants...

Cordialement

Tonthon

Re,

Si j'ai bien compris ta demande.

Cdlt.

Re,

J'ai rectifié = l'affichage à créer se trouve en I6 et non en D6 et complété ta démarche avec succès.

En effet, avec un double-clic gauche sur l'une des 3 cellules adhérents..... l'affichage en I6 est correct !

L'essentiel est donc ok

J'ai introduit ActiveSheet.Unprotect au début et ActiveSheet.Protect AllowSorting:=True, AllowFiltering:=True à la fin

mais il y a une erreur puisqu'après un seul choix.... la feuille se retrouve protégée !

Il faut qu'elle soit non protégée dès que l'on clique sur un choix et se verrouille dès lors que l'on va ailleurs.

Tu pourrais revoir cela ?

Dernier élément, le vrai tableur va être un tableur "copie avec liaison" et il faudrait que l'actualisation avec le tableur "maître" ne soit pas bloquée....

Cordialement

Tonthon


RE.

Je viens de trouver une solution : j'avais omis de cocher certaines cases d'actions autorisées avant de verrouiller.

Néanmoins, je serai rassuré que l'on me confirme que c'est ok.

Reste vraiment =

  • remettre l'affichage à la fermeture à TOUS les régions et Tous les adhérents.
  • si possible la suppression de l'affichage de l'alerte

et l'aspect qu'il va s'agir d'un tableur "copie avec liaison" pour que l'actualisation se fasse automatiquement comme s'il n'était pas protégé.

Cordialement

Tonthon

Re,

On va commencer par ton problème de message d'alerte.

On verra ensuite pour les autres questions. Je ne comprends pas tout. .

Cdlt.

Bonjour Jean-Eric

Je viens de tester le dernier tableur = il fonctionne bien au niveau des choix et est bien verrouillé dès lors que l'on va dans une autre cellule mais le message d'alerte s'affiche.

J'ai introduit mes interrogations dans le code.

Une fois cela résolu,, il ne reste plus d'introduire, si possible un code permettant d'avoir à l'ouverture l'affichage de Tous les régions et Tous les adhérents... de mémoire cela se place soit la fermeture soit à l'ouverture mais c'est une lapalissade !

Le fait que cette feuille devienne "copier avec liaison" perturbe ni le fonctionnement ni son actualisation = c'était l'aspect où je n'étais pas très clair. Mes interrogations sur ce point deviennent sans objet.

Excellente journée

Tonthon

Bonjour,

Je suis passé à Windows 10, et j'ai plusieurs bugs avec Excel 2013, que je cherche à résoudre.

N'attends pas de suivi de part pour l'instant.

Je te n'oublie pas pour autant.

Cdlt.

Re,

OK, ce qui reste relève d'améliorations qui peuvent attendre.

Quelqu'un d'autre peut-il les solutionner ?

Dans tous les cas, merci pour ton aide qui m'a permis d'avoir un tableur fonctionnel.

En espérant pour toi que tu résolves ces bugs avec W10.

Excellente journée

Tonthon

Re,

Je reviens vers toi.

Peux-tu réfléchir à la nécessité de 2 feuilles identiques?

Sinon je regarde pour ta question de filtre à l'ouverture du classeur.

Cdlt.

Bonjour,

Pour répondre à ta question, il y a

  • un tableur "maitre" modifiable par le trésorier et le secrétaire (pour faire simple)
  • l'autre "adhérents" accessible à un public plus large, totalement protégé avec affichage selon les choix.

Le fichier "adhérents" est bien dans un tableur séparé accessible en lecture simple

lié par copie avec liaison avec le tableur "maitre" qui est sur un autre tableur modifiable (que par le trésorier ou le secrétaire)

Dans l'avenir, j'envisage un tableur unique avec une page d'accueil avec identifiant/mdp qui ouvrera que certains onglets

et donc par exemple avec identifiant "consultation" que la feuille "adhérents....."

Dans l'immédiat, retenons un fichier Maitre dans un tableur et le fichier Adhérents dans un autre .

Cordialement

Tonthon

Bonjour,

Ci-joint le fichier modifié avec ta contrainte de fitre au démarrage.

Cdlt.

Private Sub Workbook_Open()

    Application.ScreenUpdating = False
    ThisWorkbook.Application.Goto Worksheets("adhérents").Cells(1)
    With ActiveSheet
        If .FilterMode Then
            ActiveSheet.ShowAllData
        End If
        .[D6] = "Tous"
    End With

End Sub

RE,

C'est parfait

J'ai déplacé les choix "régions" avec succès et introduit 3 choix d'affichage (par masquage de certaines colonnes) en utilisant un code trouvé dans un autre tableur.

Tout est indiqué dans le code

Pour des raisons que je ne m'explique pas, il y a un bug.

Tu pourrais jeter un coup d'oeil ?

C'est la dernière ligne droite puisque l'affichage du message d'alerte ne m'empêche pas de mettre en service ce tableur.

Mille mercis d'avance

Bonjour,

Ton fichier a été modifié de façon à te montrer comment réaliser l'affichage et le masquage des colonnes.

Il faut être prudent car nous travaillons avec une procédure évènementielle, et il faut éviter les conflits (à une cellule correspond une colonne).

J'ai ajouté une procédure Help, qui va certainement t'aider.

A te relire, avant de peaufiner la procédure.

Cdlt.

Re,

J'ai compris le pourquoi je n'arrivais pas à masquer les colonnes ou les faire afficher.

Les autres points sont un peu trop pointus pour moi mais je constate que cela marche.

Si vraiment c'est facile à corriger, cela serait de pouvoir passer de "coordonnées" à "trésorier" sans avoir à repasser par "affichage complet" - et vis versa.

A l'ouverture, tu peux rajouter "affichage complet" à l'affichage de tous les régions et tous les adhérents ?

C'est vraiment tout, promis

Cordialement

Re,

Tu es prié de me renvoyer mon dernier fichier avec tes éventuelles modifications.

Je ne vais pas à chaque fois refaire ce que j'ai fait précédemment.

Cdlt.

Bonjour Jean-Eric

Tu n'aurais pas réagi un peu trop rapidement ?

Sauf démonstration contraire je t'avais bien joint le dernier tableur sur lequel tu as travaillé (16/09 de 16:10).... bref, je n'ai pas très bien compris ta remarque.

Ceci dit, la version 8 est opérationnelle et ne présente plus d'inconvénient sauf l'aspect de l'affichage du message d'alerte dont la suppression ne présente aucune urgence.

Merci pour ton aide pour ce beau tableur qui va rendre bien service.

En attendant.... excellente journée

Tonthon

Rechercher des sujets similaires à "changer macro code"