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 :

selection aléatoire de plusieurs lignes dans un tableau


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut selection aléatoire de plusieurs lignes dans un tableau
    Bonjour à tous,

    J'ai besoin de vos compétences en vba pour résoudre ce problème.
    Voici ce que je dois faire:

    Dans une feuille, j'ai un tableau qui peut atteinde des centaines de lignes, avec plusieurs catégories (100) et chaque catégorie il y a 2 types de produit. Après calcul du nombre de chaque type dans chaque catégorie, je dois génerer dans une feuille(en fonction de ces nombres calculés)d'une manière aléatoire un pourcentage ( exemple: 10% de chaque liste çàd 10% de chaque catégorie et en prorata de chaque type-->10% du type x et 10% du type y) et afficher la liste selectionnée. cette opération s'éffectue chaque année, je dois donc éviter une selection répetitive des lignes !

    Je vous joint un fichier exemple en espèrant avoir de l'aide.


    Merci bccccccp d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Bonjour,

    Tu pourrais faire un filtre élaboré (ou avancé) sur la colonne A sans doublon.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim nbLignes As Long
     
        nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
     
        Range("A1:A" & nbLignes).AdvancedFilter Action:=xlFilterCopy, _
            CopyToRange:=Range("G5"), Unique:=True
    Ensuite, il te resterait à remplir les entêtes et à mettre les formules nécessaires.
    Si tu as Excel 2007 ou plus récent, tu peux utiliser NB.SI.ENS pour connaître le nombre de fois qu'un item apparaît
    Exemple en H6:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI.ENS($A:$A;G6;$B:$B;H5)

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour ta réponse même si je n'ai riiien compris !
    peut être pourrais -tu ajouter quleque commentaire si c'est possible

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Points : 5 901
    Points
    5 901
    Par défaut
    Pour connaître le nombre de lignes en colonne A, tu utilises cette formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
    Pour créer une extraction sans doublon de la colonne A et la coller en G5, c'est cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A1:A" & nbLignes).AdvancedFilter Action:=xlFilterCopy, _
            CopyToRange:=Range("G5"), Unique:=True
    Il te reste à mettre tes entêtes en ligne 5 et des formules

    Petit cadeau...
    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
    Sub Extraction()
        Dim nbLignes As Long
     
        'nombre de lignes en A
        nbLignes = Cells(Rows.Count, "A").End(xlUp).Row
     
        'extraction sans doublon
        Range("A1:A" & nbLignes).AdvancedFilter Action:=xlFilterCopy, _
            CopyToRange:=Range("G5"), Unique:=True
     
        'Inscrire les entêtes du tableau
        Entetes
     
        'Inscrire les formules
        nbLignes = Cells(Rows.Count, "G").End(xlUp).Row  'trouver le nombre d'items sortis
        Range("H6:I" & nbLignes).Formula = "=COUNTIFS($A:$A,$G6,$B:$B,H$5)"
        Range("J6:J" & nbLignes).Formula = "=SUM(H6:I6)"
        Range("K6:K" & nbLignes).Formula = "=H6/J6"
            Range("K6:K" & nbLignes).NumberFormat = "00.00%"  'formater en pourcentage
        Range("L6:L" & nbLignes).Formula = "=I6/J6"
            Range("L6:L" & nbLignes).NumberFormat = "00.00%"
        Range("M6:M" & nbLignes).Formula = "=J6/2"
        Range("N6:N" & nbLignes).Formula = "=H6/2"
        Range("O6:O" & nbLignes).Formula = "=I6/2" 
     
    End Sub
     
    Sub Entetes()
        Range("H5") = "Produit x"
        Range("I5") = "Produit y"
        Range("J5") = "Total"
        Range("K5") = "Ratio x"
        Range("L5") = "Ratio y"
        Range("M5") = "50% catégorie"
        Range("N5") = "50% du x"
        Range("O5") = "50% du y"
    End Sub

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci bcp <3 je vais essayer de comprendre tous ça et je te tiens au courant

Discussions similaires

  1. [MySQL] Insert et select pour insérer plusieurs lignes dans table
    Par Khof59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/05/2014, 22h19
  2. Réponses: 7
    Dernier message: 08/06/2012, 17h24
  3. Insertion de plusieurs lignes dans un tableau de cellules
    Par Marinedu26 dans le forum MATLAB
    Réponses: 1
    Dernier message: 23/12/2011, 13h32
  4. [XL-2003] Insérer plusieurs ligne dans un tableau
    Par deamonRav dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/04/2010, 15h07
  5. Réponses: 3
    Dernier message: 13/06/2008, 21h33

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