Problème tri excel 2003

Résolu
Bonjour,

J'ai fais sous Excel un tableau de suivi pour de la prospection, j'ai les noms des personnes et je voudrais que les noms se rangent automatiquement dès que j'en rentre un nouveau, par exemple je met Monsieur C, ensuite Monsieur A et lorsque je rentre Monsieur B je voudrais qu' il se range automatiquement entre Monsieur A et Monsieur C.

J'ai essayer les macros je n'y arrive pas, le tri automatique sa marche pas comme sa. Donc aider moi s'il vous plait, j'ai beau chercher sur le net : rien!

Merci

8 réponses

Résumé de la discussion

Le problème consiste à automatiser le tri des noms saisis dans Excel afin que l'ajout d'un nouveau nom réorganise immédiatement la liste par ordre alphabétique. Plusieurs utilisateurs proposent une macro dans le module de la feuille via Worksheet_Change pour trier la colonne A en ordre croissant lorsque des données sont modifiées ou ajoutées. La solution propose d'insérer une macro dans le module de la feuille qui déclenche le tri en colonne A lors d'une modification, avec un paramétrage Header et ordre croissant. Pour une mise en œuvre fiable, certains précisent d'activer le tri sur la colonne A avec un en-tête et d'insérer le code dans le module de la feuille, puis de tester en ajoutant des noms.

Bobot (l’IA à votre service)
  1. Contributeur
    bonjour

    Si tu as tes noms en colonne A avec une ligne titre en première ligne, tu devrais obtenir ce que tu souhaites avec cette macro dans le code de ta feuille concernée :

    Private Sub Worksheet_Change(ByVal sel As Range)
    If sel.Column = 1 Then  ' 1 = "A"
        UsedRange.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
    End If
    End Sub
    
    1. Oui ils sont en colonne A, comment on fait pour faire ce que tu dis? Merci. Si tu veux je t'envoie mon fichier
      1. Contributeur
        Bonjour
        en attendant le retour de Gb:

        copier le code dans son message

        dans votre fichier:
        clic droit sur l'onglet feuille concernée
        choisir visualiser le code
        Coller le texte dans la fenêtre
        fermer visual basic

        ça devrait marcher

        crdlmnt
      2. C'est ou l'onglet feuille truc la, moi qui me debrouille en info la je suis perdu!
      3. Contributeur
        l'onglet,c'est dans la règle en bas des tableaux excel, là où sont affichés les noms des feuille.
        Il s'agit de l'étiquette portant le nom de la feuille.
        Cliquez droit dessus.
      4. non je trouve pas!
      5. Contributeur
        ici
        http://www.cijoint.fr/cjlink.php?file=cj201105/cijUWyVcUT.pdf
    2. oui beh j'ai pas compris, je suis deja aller voir ce post
      1. je fais quoi avec sa?
      2. et l'aide de office 2003 est clair, dans la barre de recherche, recherche "trié"
      3. ok merci
    3. Contributeur
      Re

      ci joint votre fichier avec une adaptation de la solution de Gb à votre configuration.
      http://www.cijoint.fr/cjlink.php?file=cj201105/cije23qDeQ.xls
      dites nous si c'est cela que vous vouliez.
      la macro traite le champ de A4 à Z1000
      ... sauf erreur.
      crdlmnt

      1. ok merci beaucoup, pouvez vous m'expliquer la procédure car c'est pour mon stage de bts et je devrais l'expliquer le jour de mon oral.

        merci
    4. Contributeur
      Re

      Private Sub Worksheet_Change(ByVal Target As Range)
      titre de la macro qui définit la fonction à assurer dans la feuille où elle est placée

      If Target.Column = 1 And Target.Row > 4 And Target.Row < 1000 Then
      définit le champ dans lequel l'action effectuée (entrée dans une cellule du champ) va lancer la suite de la macro (1° colonne ligne 4 à 1000)

      Range("A4:Z1000").Select
      sélectionne le champ à trier

      Selection.Sort Key1:=Range("A4"), Order1:=xlAscending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

      lance le tri sur la sélection et définit le type de tri croissant sans titre etc...

      End If
      ferme l'action liée à la condition if

      End Sub
      ferme la macro

      je ne suis pas en mesure de vous en dire plus.

      bonne chance pour votre stage

      crdlmnt

      Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
      1. Et sa il faut l'ecrire a la main?
        1. Contributeur
          Ben... avec le clavier oui :-)

          mais il faut connaitre VBA pour utiliser l'assistance à l'élaboration de programme; Je n'en connais pas assez pour vous en dire plus.

          Je peux aussi vous dire qu'il y a un outil sur excel qui créé des macros par enregistrement , mais elle ne font que reproduire les manipulations faites pendant cet enregistrement.

          Excel Avant 2003:
          Barre d'outil / outil /Macro / Enregistrer une macro
          Sur 2007
          onglet développeur / enregistrer une macro
          (afficher l'onglet développeur à partir des options excel affichées en cliquant sur le logo microsoft en haut à gauche)
          lancer l'enregistrement
          faites les manips voulues
          surtout n'oubliez pas de fermer l'enregistrement en fin de manip.

          Lorsque vous lancez la macro, elle refait les manips enregistrées;
          Par exemple, vous pourriez enregistrer le code qui permet de trier le champ A4:Z2000, mais pas le code qui lance la macro depuis le champ colonne 1.

          c'est à peu près tout ce que je peux vous dire.

          Bonne soirée
        2. d'accord c'est donc compliqué, je vais faire sans tant pis merci en tout cas
        3. Contributeur
          le message n'était pas terminé quand il est parti par erreur je viens de le complèter.
          Vous pouvez le relire.
        4. d'accord merci