Macro dans un classeur excel 2007

Résolu
eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   -  
eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je souhaite faire une macro dans un classeur excel 2007.

J'aimerai qu'un tri alphabétique se fasse automatiquement lorsque je crée une ligne.

En fait, ma feuille est une gestion de stock, avec plusieurs famille de produits et plusieurs colones pour chaque ligne.
Donc a chaque ligne que j'entre dans une famille il faudrai qu'elle se classe automatiquement sans que j'ai a faire "trier de A a Z"

J'ai essayé mais je n'y arrive pas. Je m'y prend peut être mal.

Merci pour votre aide.



--
a+ et bon surfffffffff !!!!!!!!!!!!!!

7 réponses

  1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Essayer avec se code à mettre dans le module de feuille.
    Il détecte l'entré dans la colonne A et trie les 6 colonnes A:E sur la A en tenant compte des titres de colonnes :
    Private Sub Worksheet_Change(ByVal Target As Range)   
    If Not Application.Intersect(ActiveCell, Range("A:A")) Is Nothing Then   
        Columns("A:E").Sort Key1:=Columns(1), Order1:=xlAscending, Header:=xlGuess   
    End If   
    End Sub

    Salutations.
    Le Pingou
    0
  2. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    Salut le forum

    Il serait plus judicieux d'attendre la fin de remplissage de la ligne

    Private Sub Worksheet_Change(ByVal Target As Range) 
    If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then 
        Columns("A:E").Sort Key1:=Columns(1), Order1:=xlAscending, Header:=xlYes 
    End If 
    End Sub

    Mytå
    Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
    0
  3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Et s'il ne la remplie pas, il fait comment ?
    0
    1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
       
      Re le forum

      Je suis à la ligne 3000, j'entre la donnée et oups la ligne est rendu ou pour la complèter.

      Attendons de voir ce que veux vraiment Eliot.

      Mytå
      0
  4. eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   184
     
    Voici le liens pour dl du fameu classeur de mon stock.
    http://eliot34.free.fr/fichier_divers/Inventaire%20Nlle%20Proc%c3%a9dure%20(CA%20-%20KP%20-%20KY)%20V2%20by%20LL1.xlsx

    Prenons juste une feuille "dejeuner-diner", la famille B.O.F. J'aimerai que quand je rentre par exemple "fromage blanc" dans la colone 'nom de l'arcticle", il se mette automatiquemant par ordre alphabétique par rapport au autres article de la famille B.O.F quand je passe a la ligne suivante.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour,
    Selon la structure de votre document, il est préférable d'utiliser le trie manuel qui sera plus efficace.
    Désolé.
    0
  7. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Il manquait de nombreuses précisions pour avoir une fonction qui soit fonctionnelle.

    Regardes si cela te convient :

    http://www.cijoint.fr/cjlink.php?file=cj201007/cijTIVUqEZ.zip

    J'ai compressé ton fichier car il a une taille anormale pour son contenu : tu devrais vérifier les lignes et colonnes inutiles.
    0
    1. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonjour gbinforme,
      Merci, c'est avec grand plaisir que j'ai découvert votre proposition.
      Salutations.
      0
    2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour Le Pingou,
      J'ai essayé de coller au plus près au cahier des charges mais sans retour, on ne saura pas si cela convient.
      Je ne comprend toujours pas pourquoi ce classeur est si volumineux.
      Bien amicalement.
      0
    3. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      Bonjour gbinforme,
      Concernant le volume, j'ai cherché un petit peu, finalement j'ai supprimé la première feuille ([Rappel de la procédure] qui de plus est protègée par mdp) et le volume est maintenant de 622 ko.
      Excellente semaine.
      Amicales salutations
      0
    4. eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   184
       
      Merci pour votre aide à tous les deux.
      Donc il semble pas possible de faire ce tri automatiquement.
      Je ne met pas le sujet en résolu au cas ou!!

      A bientôt
      0
    5. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Tu as peut-être oublié de tester ma proposition alors que Le Pingou la juge tout à fait conforme.
      J'avais pourtant inséré ton "fromage blanc" ... automatiquement à sa place.
      0
  8. Le Pingou Messages postés 12274 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    Bonjour eliot34,
    Eh bien là vous n'avez par essayé la proposition de gbinforme qui répond exactement à votre demande.
    Je l'ai personnellement testé pour apprendre le fonctionnement et c'est parfait.
    Dès que vous avez entré la donnée [NOM DE L'ARTICLE] la procédure se déclenche et trie la catégorie en cours.

    Salutations.
    Le Pingou
    0
    1. eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   184
       
      Milles pardon a tous les deux.

      L'erreure que je faisait, et que trop pressé de tous rentrer, je ne rentrais que la cellule du "nom de l'arcticle" et cela me marquait une erreure. Mais en rentrant comme il faut toutes les cellules, le tri ce fait comme je le souhaitais.

      Donc un grand merci a tous les deux.
      0
    2. eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   184
       
      J'aimerai savoir la procédure que vous avez appliqué pour obtenir ce resultat, pour que je puisse l'appliquer au classeur entier.

      merci.
      0
    3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
       
      Bonjour,

      La procédure est une macro événementielle sur la feuille concernée puisque tous tes onglets ne sont pas identiques et que le tri doit changer de colonne (C par exemple). Tu ne peux donc en raison de ce manque d'homogénéité mettre la procédure sur le classeur car tu auras des résultats curieux sur certaines feuilles en triant sur le prix.

      Private Sub Worksheet_Change(ByVal sel As Range)
      Const col = "D" ' colonne de tri
      If sel.Count > 1 Then Exit Sub
      If Not Intersect(sel, Columns(col)) Is Nothing And sel.Value <> "" Then
          Dim deb As Long, fin As Long
          For deb = sel.Row To 1 Step -1
              If Application.WorksheetFunction.CountA(Cells(deb, 1).Resize(1, 8)) < 2 Then Exit For
          Next deb
          For fin = sel.Row To UsedRange.Rows.Count
              If Application.WorksheetFunction.CountA(Cells(fin, 1).Resize(1, 8)) < 2 Then Exit For
          Next fin
             Cells(deb, 1).Resize(fin - deb, 20).Sort Key1:=Columns(col), Order1:=xlAscending, Header:=xlYes
      End If
      End Sub
      
      0
    4. eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   184
       
      Merci beaucoup, j'ai juste modifié la colonne de tri car sur certaine feuille c'est la C et d'autre c'est la D.

      Merci pour votre aide.
      0
    5. eliot34 Messages postés 2220 Date d'inscription   Statut Membre Dernière intervention   184
       
      Me revoila.

      Pour continuer sur mon classeur, j'aimerai ajouter une fonction;
      Donc quand je crée une nouvelle ligne pour un nouvel article, j'aimerai qu'une formule de multiplication se crée en même temps pour les colones (Prix HT*Stock) résultat dans (Total stock).
      J'aimerai qu'elle se crée automatiquement pour ne pas avoir a la faire manuellement à chaque fois que je crée une nouvelle ligne.

      Merci.
      0