Créer une liste dans une feuille VBA

amerya2016 Messages postés 37 Statut Membre -  
tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour. j'ai crée une feuille de calcule qui me permet de faire une classification selon catégorie A, B et C

j'ai passé par plusieurs étapes: la première est de saisir le nombre d'articles
après que mon application fait la classification
je voudrai que chaque catégorie et ses articles qui lui appartient s’affichent dans une autre feuille

par exemples les articles de la classe A s’afficheront dans une feuille (classe A)
j'ai besoin d'aide merci d'avance

http://www.cjoint.com/c/FBrkLxWuxHF

4 réponses

  1. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 061
     
    Bonjour, étant donné que les articles une fois triés pour la méthode ABC sont colorés (en admettant qu'il n'y a aucune erreur), c'est d'effectuer un tri sur la couleur. Tous les verts seront à copier sur une feuille A, les jaunes en B et rouge en C.

    Déjà, créer les feuilles par vba

    Sub ajout_feuille()
    Sheets.Add after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = "Classe B"
    End Sub
    3
    1. amerya2016 Messages postés 37 Statut Membre
       
      Bonjour, je vous remercie pour votre aide.
      Mais encore j'ai pas compris ce que vous m'avez postuler puisque je suis un débutant en VBA. svp plus de détails
      Merci
      0
    2. amerya2016 Messages postés 37 Statut Membre
       
      Bonjour, j'ai céer les feuilles par vba Merci
      Il me reste les autres étapes mnt ... comment faire svp?
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    merci de joindre vos fichiers au format .zip , existant d'origine sur Windows, plut^t que de nous obliger à télécharger un logiciel .rar
    0
    1. amerya2016 Messages postés 37 Statut Membre
       
      ok tout de suite :)
      0
  3. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 061
     
    Bonjour, la suite de ce qui faut faire. Ta macro doit commencer par inspecter la couleur des cellules de la place K8 à K17 dans ton exemple (ou Ki où i est la dernière ligne).

    Donc, commencer par créer la variable i (ou ce que tu veux) qui sera le n° de la ligne en question

    i = range(K3600).end(xlup).row


    et pour la sélection, la manière que je te propose c'est de partir de la cellule active (activecell) et de sélectionner ce qui est à gauche de celle-ci ce qui donnerait

    Range(ActiveCell, ActiveCell.Offset(0, -9)).Select
    où le -9 est le décompte des colonnes de gauche (de K8 à A8) et de coller la sélection dans la feuille adéquate que tu as créé
    0
    1. amerya2016 Messages postés 37 Statut Membre
       
      Bonjour.... Merci Merci mais j'ai pas compris ... comme c compliqué lol...
      SVP. si vous permettez plus de précision
      je suis hyper débutant lol en VBA alors aidez moi pour réaliser mon projet .
      0
    2. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 061
       
      Bonjour, je n'avais pas bien tout lu sur le point où tu sis que tu débute, mille excuses. Donc, si tu veux quelques bases sur le VBA tu as ce site où tout est très expliqué avec captures d'écran à l'appui. Concernant mes lignes de code, i=range("K3600").end(xlup).row va, à partir de la cellule K3600 remonter toutes les lignes jusqu'à la première remplie.
      Pour la seconde ligne, cela va créer une sélection allant de la cellule active jusqu'à la 9 cellules à gauche (le - (moins) signifie à gauche avec le paramètre offset => déplacement). Si tu copies ces deux lignes de code à la suite après Sub test() et terminant part end sub en pressant F8 (pas à pas), tu vois, au ralentit, ce que fera Excel en temps normal d'exécution. N'oublies pas de presser F1 pour de l'aide
      0
    3. amerya2016 Messages postés 37 Statut Membre
       
      Merci cher Tyranausor ...
      dans mon code ou je met ce que vous m'avez proposer.... exactement svp
      0
    4. tyranausor Messages postés 3501 Date d'inscription   Statut Membre Dernière intervention   2 061
       
      Pardon, j'avais oublié. Donc,
      i = range(K3600).end(xlup).row
      Range("K"& i, range("K" & i).Offset(0, -9)).Select

      et pour la copier vers la feuille "Classe B" ce sera
      Range("K" & i, Range("K" & i).Offset(0, -7)).Copy Destination:=Sheets("Classe B").Range("B2") 

      à la place de
      Range("K"& i, range("K" & i).Offset(0, -9)).Select
      0
    5. amerya2016 Messages postés 37 Statut Membre
       
      excusez moi je demande trop

      j'ai pas encore compris ou je met ce code? dans quel module ?
      ou bien dans les nouvelles feuilles classe A....?
      0
  4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    Pour l'instant je n'ai travaillé que sur la sub "preparer tableau" que j'ai simplifiée
    La présentation des entêtes de ton tableau (B7:E7")sont déjà faites: pourquoi la tu reprogrammée ?
    D'autre dans la macro suivante tu utilises toujours les colonnes F et G: pourquoi ne pas les dessiner 1 bonne fois pour toutes ?

    Option Explicit
    Dim x As Integer, classe_a As Integer, classe_b As Integer, classe_c As Integer
    '----------------------------
    Sub preparer_un_tableau()
    Dim i As Integer

    Application.ScreenUpdating = False
    Range("B8:E1000").Clear

    On Error GoTo erreur:
    x = Application.InputBox("Veuillez introduire le nombre d'articles", "Nombre d'articles", "Veuillez introduire un nombre naturel", 1)
    If x = 0 Then GoTo erreur
    Randomize
    For i = 1 To x
    Cells(7 + i, 2) = i
    Cells(7 + i, 3) = "Article " & i
    Cells(7 + i, 4) = Int(Rnd * 1000) + 1
    Cells(7 + i, 5) = Int(Rnd * 100) + 1
    Next
    Range(Cells(7, "B"), Cells(7+x, "E")).Borders.Weight = xlThin
    Exit Sub

    'gestionnaire erreurs
    erreur:
    MsgBox "saisie incorrecte", vbCritical
    End Sub
    "
    pour la suite, combien prévois tu d'article: 50 500,5000....?
     Michel
    0
    1. amerya2016 Messages postés 37 Statut Membre
       
      Bonjour.permettez moi de vous remercie infiniment .. c'est très gentil de votre part.
      pour le nombre d'article ça dépend jusque à 10000 artciles
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      ok,merci

      du fait qu'on dépasse 1000 articles, utiliser des filtres pose problème (but de ma question)

      qu'appelles tu "commentaire" dans ton code?
      0
    3. amerya2016 Messages postés 37 Statut Membre
       
      c'est commentaire
      ou bien j'ai pas compris votre question?
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > amerya2016 Messages postés 37 Statut Membre
       
      A quoi correspond en langage VBA "commentaire" ?
      pour avoir ce qui correspond au commentaire en Excel c'est "comments" en VBA.. cest ca que tu veux faire ?

      Pour les colonnes F à L (G :faute de frappe!) que fait on : tu les mets on su la feuille avant action de "preparer_un_tableau" ?

      les textes que tu as mis sont très longs comme par ex::"Pourcentage de nombre d'articles" et vont posés des pb de lecture a moins d'avir une largeur démésurée ou plusieurs lignes dans la cellule
      donc: réduire tes textes ?

      Merci de répondre à mes questions: je ne peux rien faire en attendant et j'ai d'autres trucs à faire...
      0
    5. amerya2016 Messages postés 37 Statut Membre
       
      Cher michel_m. excusez mon niveau bas en vba. mais je sollicite votre aide pour terminer mon travail.
      vous avez le fichier . vous avez toute la liberté pour modifier et proposer de modification pour tout choses vous voyez inutiles ou ...
      le commentaire est le résumé de la classification
      on peut le modifier ou bien le supprimer pas de problème
      0