VBA excel

Résolu
Bonjour,

En fait j'ai un tableur avec des filtres (tri de A à Z), et je souhaite envoyer le classeur à des personnes qui ont un niveau "0" en informatique :-) Voila pourquoi je voudrais trouver un moyen d'intégrer une réactualisation du tri à chaque changement des données, pour pas qu'ils aient à déclencher soit un bouton de macro, soit le raccourci CTRL+ALT+L qui permet de réactualiser.
Une solution ? Merci d'avance.

6 réponses

  1. ok j'ai compris le truc ^^

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim liste As Range
    Set liste = Range("B2:B100")
    If Intersect(Target, liste) Is Nothing Then: Exit Sub
    Application.EnableEvents = False
    Range("A2:B100").Sort Range("B2"), xlAscending
    Application.EnableEvents = True
    End Sub

    donc si je fais ça, ça fait la même chose avec pour base un tri en colonne B. Et c'est possible de pas s'arrêter à B100, je veux dire de sélectionner tout A et tout B ?
    0
    1. est ce que tu pourrais mettre des petits commentaires pour chaque ligne, parce que je comprends pas pourquoi le range du setlist c'est A2:A100.

      et oui c'était bien qu'il suive le a :-)
      0
      1. ok ça c'est pas mal, je connaissais pas Worksheet_Change(ByVal Target As Range)

        En fait plus exactement, si on a un tableau de A1 à B100, on peut utiliser range pour faire le setlist ? genre range (A1:B100) ?

        Mon problème est que je souhaiterais que la colonne A et la colonne B restent liées. Si on a :
        a 1
        b 2
        c 3
        e 4
        f 5
        g 6
        h 7

        et qu'on change le a en z, que le 1 se mette à la fin aussi, qu'il suive le z quoi. C'est possible ? merci d'avance
        0
        1. Contributeur
          qu'on change le a en z, que le 1 se mette à la fin aussi, qu'il suive le z quoi.

          tu voulais dire qu'il suive le a quoi ??

          Private Sub Worksheet_Change(ByVal Target As Range) 
          Dim liste As Range 
          Set liste = Range("A2:A100") 
          If Intersect(Target, liste) Is Nothing Then: Exit Sub 
          Application.EnableEvents = False 
          range("A2:B100").Sort Range("A2"), xlAscending 
          Application.EnableEvents = True 
          End Sub
          0
      2. Contributeur
        bonjour,

        la macro ci dessous se déclenche à un changement dans la Zone A2:A100 et trie cette zone dans l'ordre ascendant (ta demande n'indique pas les coordonnées du tableau, donc...)

        Private Sub Worksheet_Change(ByVal Target As Range)
        Dim liste As Range
        Set liste = Range("A2:A100")
        If Intersect(Target, liste) Is Nothing Then: Exit Sub
        Application.EnableEvents = False
        liste.Sort Range("A2"), xlAscending
        Application.EnableEvents = True
        End Sub


        installation: copier cette macro
        clic droit dans le nom de l'onglet-visualiser code
        coller
        0
        1. A la rigeur pour simplifier tu mets sur la page un "bouton" relié à ta macro avec marquer en gros "pour faire le tri, appuis moi dessus avec la souris"

          Il n'y aura qu'a cliquer dessus et là même en étant une bille en informatique...

          (solution que j'avais trouvé pour mon père et ça a marché)
          0