IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

tri et recherche


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut tri et recherche
    Bonjour à tous pour ce super lundi de pentecôte ,

    j'ai un petit problème et je n'arrive pas à trouver la méthode.

    J'ai une liste de fournisseur dans une colonne et dans une autre j'ai des quantités.

    Le but de mon programme, je dois faire les sommes de quantités par fournisseurs et pour chaque fournisseurs différents je dois ouvrir un classeur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Permet de trouver le nombre de ligne à partir de la colonne fournisseur (colonne7)
    Cells(2, 7).Select
    nbligne = Range(Selection, Selection.End(xlDown)).Rows.Count + 1
     
    'Filtrer les fournisseurs
     
    Range("K2").Select
    Range(Selection, Selection.End(xlDown)).Select
     
    Selection.Sort Key1:=Range("K3"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Si quelqu'un peut me venir en aide!!!!!!!

  2. #2
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 38
    Par défaut
    Ola!

    Je ne comprends pas très bien ton exposé: ya til plusieurs quantités pour un même fournisseur? ya til plusieurs colonnes pour les fournisseurs?

    En fait tu pourrais trier tes données par fournisseurs et faire des sommes automatiques, ou encore effectuer une fonction avec un "SI".....

    Donne moi plus de détails et je pourrais t'aider mieux!!

    Bon courage

    TL

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut re
    Merci de m'aider!!!

    en faite j'ai une colonne fournisseur et une colonne quantité.
    Pour chaque fournisseur, je dois faire la somme des quantités et les placer dans une nouvelle feuille

    Par exemple, j'ai

    fournisseur quantité
    x 250
    y 100
    z 50
    y 20

    je voudrais ouvrir une feuille pour le fournisseur y et mettre la quantité dans cette feuille (quantité=120)
    et ça pour tous les fournisseurs de ma colonne.

  4. #4
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Par défaut
    Bonjour,
    je pense que tu peux essayer un truc comme ca:

    tu commence par compter le nombre de ligne fournisseur comme tu l'a fait donc tu obtiens nbligne

    on va supposer ques tes fournisseurs sont dans la colonne A et les quantités dans la colonne B et commencent à la ligne 2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'tu trie tes colonnes par ordre alphabetique
    Range(cells(2,1),cells(nbligne,2)).sort Key1=range("A2")........
    'tu comme tu as fais précédemment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    i=0
    for i=2 to nbligne
      if cells(i,1)=cells(i+1,1) then
         somme_quantite=cells(i,1)
         while cells(i,1)=cells(i+1,1) end cells(i,1)<>""
             somme=somme+cells(i+1,1)
             i=i+1
         wend
         worksheets.add.name=cells(i-1,1)
         worksheets(cells(i-1,1).text).cells(1,1)=somme
      else
         somme=cells(i,1)
         worksheets.add.name=cells(i,1)
         worksheets(cells(i,1).text).cells(1,1)=somme
     end if
    nexti
    après il faut vérifier la syntaxe, je suis pas très sur j'ai pas testé mais je pense que ca peut être une solution à ton problème.

    Bon courage

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 10
    Par défaut re
    Bonjour

    J'ai essayé le code que tu m'as donné, ça fonctione que quand il n'y a qu'un fournisseur mais quand il y en a plusieurs ça ne marche pas.
    j'ai essayé avec cette exemple:

    x 500
    y 100
    y 200
    z 350
    Il y a que pour le x qu'il crée une feuille avec le nom du fournisseur pour le reste ça ne fonctionne pas.
    Si quelqu'un peut jeter un coup d'oeil!!!

    Merci d'avance

  6. #6
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Par défaut
    J'ai vérifier ca ca marche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub fournisseurs()
     
    nb_ligne = 2
    While Cells(nb_ligne, 1) <> ""
        nb_ligne = nb_ligne + 1
    Wend
    nb_ligne = nb_ligne - 1
     
    'Filtrer les fournisseurs
        Range("A2").Select
        Range(Selection, Selection.End(xlDown)).Select
        Range("A1:B5").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
            xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
     
     
    'met dans feuille
    i = 0
    For i = 2 To nb_ligne
      Worksheets("Feuil1").Activate
      If Cells(i, 1) = Cells(i + 1, 1) Then
         somme = Cells(i, 2)
         While Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 1) <> ""
             somme = somme + Cells(i + 1, 2)
             i = i + 1
         Wend
         Worksheets.Add.Name = Cells(i - 1, 1)
         Cells(1, 1) = somme
      Else
         somme = Cells(i, 2)
         Worksheets.Add.Name = Cells(i, 1)
         Cells(1, 1) = somme
     End If
    Next i
     
     
     
    End Sub

Discussions similaires

  1. [XL-2010] tri et recherche pour comparer deux extracts
    Par hfarah7 dans le forum Excel
    Réponses: 8
    Dernier message: 21/05/2014, 11h36
  2. [WD15] fonction de tri et recherche des colonne
    Par fr832 dans le forum WinDev
    Réponses: 2
    Dernier message: 29/11/2011, 21h39
  3. tri de recherche multicritère avec bouton checkbox
    Par solofoniaina alain p dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/11/2010, 18h40
  4. [WD12] Problème tri et recherche sur tables
    Par Xsara 167 cv dans le forum WinDev
    Réponses: 12
    Dernier message: 26/03/2008, 20h56
  5. Tri resultat recherche multi criteres
    Par Oliviers dans le forum Access
    Réponses: 2
    Dernier message: 06/02/2007, 20h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo