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 :

Macro + tirage aléatoire avec condition [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Par défaut Macro + tirage aléatoire avec condition
    Salut à tous,

    Malheureusement je n’arrive pas à faire ce que je souhaite. Donc voici mes explications.

    L'action que je veux que se trouve sur la feuille "Echantillon analyse".

    Ce que j'ai :
    • Une valeur d'échantillon C1.
    • A partir de celle-ci, j'ai une valeur donnée en A3, aléatoire, par rapport à mon tableau "Tableau 1", qui est dans l'onglet "Rapport 1".
    o Attention, la valeur aléatoire bouge, si des valeurs, de mon classeur en entier, sont changées.
    o C'est pour ça que j'ai créé la colonne B, qui est le fruit d'un copié de la colonne A, et dont je colle les valeurs (et pas la fonction) dans la colonne B
    • Les colonnes C, D et E travaillent donc avec la valeur fixe, de la colonne B
    • Et je tire vers le bas manuellement, la ligne A3:E3 pour avoir le même nombre de ligne que la valeur de mon échantillon C1.

    Ce que je souhaite :
    • Créer un bouton sur la feuille
    • Je veux qu'en cliquant sur le bouton, un nombre de ligne A:E correspondant à la valeur de l'échantillon soient créées.
    • La valeur aléatoire qui ressort en A, est une valeur de "Tableau 1[Code OEIE]
    o Attention, je voudrais que les valeurs soient uniquement celle qui ont une valeur dans "Tableau 1[Date d'archivage de la DOC]".

    Possibilité d'un bouton RAZ, pour supprimer les lignes créées, avant de relancer une création au prochain échantillon.

    Merci à vous


    Je vous souhaite tous mes vœux pour la nouvelle année.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 508
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 508
    Par défaut
    J'ai pas compris:
    Citation Envoyé par emarnolydia Voir le message
    • Je veux qu'en cliquant sur le bouton, un nombre de ligne A:E correspondant à la valeur de l'échantillon soient créées.
    Dans ton exemple precis ou l'echantillon (C1) vaut 116, tu veux créer 116 lignes ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Par défaut
    Bonjour,

    en effet, oui 116, avec les conditions citées.

  4. #4
    Membre chevronné
    Homme Profil pro
    retraité enseignement
    Inscrit en
    Mars 2013
    Messages
    213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : retraité enseignement
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 213
    Par défaut
    bonsoir,
    j'ai essayé de comprendre votre fichier...

    Je supprime toutes les lignes sauf la 1ere.
    Mon idée est de recopier la première ligne, coller en dessous et vérifier si date <>0 et itérer sur l'ensemble des valeurs.

    J'installe un bouton sur la feuille pour lancer une nouvelle liste aléatoire

    Il faudrait en plus vérifier si en 1ere ligne la date est vide... à vous de le faire!...

    le code :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub newligne()
     
    Dim fechant As Worksheet, rap As Worksheet
    Dim echant As Range, c As Range, rdate As Range
    Dim ligne As Integer, der As Integer
    Dim archi As Date
     
    Application.ScreenUpdating = False
     
    Set rap = Worksheets("Rapport 1") 'pour les dates
    Set fechant = Worksheets("Echantillon analyse")
    Set echant = fechant.Range(fechant.Range("A4"), fechant.Range("A4").End(xlDown))
    der = echant.Count
    echant = Range(fechant.Cells(1, 1), fechant.Cells(der, 5))
    echant.Clear 'effacement des lignes en gardant la première
     
    Set echant = fechant.Range("A3:E3") '1ère ligne
    fechant.Range("A3").Select
    fechant.Range("A3").Copy
    fechant.Range("A3").Calculate
     
    fechant.Range("B3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False 'copy du 1er alea
    For ligne = 4 To fechant.Cells(1, 3).Value + 2 'parcours des lignes
      'copie de ligne
      With echant
        .Copy
        fechant.Range("A" & CStr(ligne)).Select
        fechant.Paste 'copy ligne
        Application.CutCopyMode = False
        fechant.Range("A" & CStr(ligne)).Copy 'copy alea
        fechant.Range("B" & CStr(ligne)).Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
      End With
     
      'élimination des dates vides
      der = rap.Range(rap.Range("D2"), rap.Range("D2").End(xlDown)).Count + 1
      Set rdate = Range(rap.Cells(2, 4), rap.Cells(der, 8))
      archi = Application.WorksheetFunction.VLookup(fechant.Cells(ligne, 2), rdate, 5, VRAI)
      If archi = 0 Then ligne = ligne - 1
    Next ligne
    Application.CutCopyMode = False
     
    Application.ScreenUpdating = True
    Application.Calculate
    End Sub
    Je vous joins mon travail...

    TMJD_QRMJDessai.xlsm

    à vous...

    a+

    geogeo70

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur de construction de réseaux
    Inscrit en
    Janvier 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de construction de réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2015
    Messages : 3
    Par défaut Merci
    Super, merci beaucoup à vous, cela correspond fortement à ce que je souhaite.
    Je vais essayer d'y mettre ma petite touche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tirage aléatoire avec condition
    Par maxbfox dans le forum Excel
    Réponses: 6
    Dernier message: 08/09/2013, 16h00
  2. [XL-2000] macro copier coller avec condition ne marche pas
    Par antfo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 17/03/2010, 10h54
  3. Tirage aléatoire à 2 conditions
    Par jacfld49 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 22/02/2010, 16h41
  4. Tirage aléatoire avec remise
    Par ndiayette dans le forum SAS STAT
    Réponses: 3
    Dernier message: 16/05/2008, 22h14

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