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 :

Liste Aléatoire sur plage variable [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut Liste Aléatoire sur plage variable
    Bonjour à tous,

    Je vous sollicite car je souhaiterais réaliser une liste aléatoire, mais avec une plage variable.
    J'ai trouvé la macro suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Aleatoire()
    Dim plage As Range, cel As Range, alea As Double
     
    Set plage = Range("H1:H80")
    plage.Value = ""
    If plage.Count > 80 Then Exit Sub
    Randomize
     
    For Each cel In plage
    1     alea = WorksheetFunction.RandBetween(1, 80)
    If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
    Next
     
    End Sub
    Je souhaiterais que H80 soit variable en fonction d'un nombre d'événement (par exemple dans une cellule P24, la valeur est de 42, je souhaiterai que ma plage soit (H1:H42).
    Je ne sais pas si cela est possible et mon niveau en VBA est proche de 0 (voir 0 tout court).
    D'avance merci et en parallèle je vais continuer mes recherches, j'espère que ma demande est claire

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut
    Bonjour,par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Aleatoire()
    Columns("H").ClearContents
    Dim plage As Range, cel As Range, alea As Double
    ligne = Range("P24").Value
    Set plage = Range("H1:H" & ligne)
    plage.Value = ""
    If plage.Count > ligne Then Exit Sub
    Randomize
    For Each cel In plage
    1 alea = WorksheetFunction.RandBetween(1, 80)
    If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
    Next
     
    End Sub

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Bonjour a_diard

    Merci beaucoup pour votre aide, est-il possible d'avoir les valeurs "alea" suivant la valeur de "P24"?
    je m'explique si P24=10 alors 1 alea = WorksheetFunction.RandBetween(1, 10) ou si P24 est égale a une valeur "n" alors la fonction aléatoire se fera de 1 à n?

    Encore merci pour votre aide

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Re-Bonjour a_diard,

    Il semblerait que j'ai trouvé avec ceci

    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
    Sub Aleatoire()
     
    Columns("H").ClearContents
    Dim plage As Range, cel As Range, alea As Double
    ligne = Range("P24").Value
    Set plage = Range("H1:H" & ligne)
    plage.Value = ""
    If plage.Count > ligne Then Exit Sub
    Randomize
    For Each cel In plage
    ligne = Range("P24").Value
    1 alea = WorksheetFunction.RandBetween(1, ligne)
    If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
    Next
     
    End Sub
    Encore merci

  5. #5
    Membre chevronné
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 214
    Par défaut
    de mon coté je coince
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = Range("H1:H80")
    plage.Value = ""
    If plage.Count > 80 then exit sub

    Ce test est toujours faux non ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Citation Envoyé par sogedic Voir le message
    de mon coté je coince
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set plage = Range("H1:H80")
    plage.Value = ""
    If plage.Count > 80 then exit sub

    Ce test est toujours faux non ?
    Bonjour sogedic,
    De mon coté je n'ai pas de problème, l'ensemble fonctionne bien. Ci-dessous le code de a_diard modifié pour avoir la fonction aléatoire en fonction de cellule variable

    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
    Sub Aleatoire()
     
    Columns("H").ClearContents
    Dim plage As Range, cel As Range, alea As Double
    ligne = Range("P24").Value
    Set plage = Range("H1:H" & ligne)
    plage.Value = ""
    If plage.Count > ligne Then Exit Sub
    Randomize
    For Each cel In plage
    ligne = Range("P24").Value
    1 alea = WorksheetFunction.RandBetween(1, ligne)
    If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
    Next
     
    End Sub
    @+

  7. #7
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Les valeurs que tu souhaites avoir sont bien de type double? ou tu veux des nombres entier
    Par exemple si P24 = 10, tu souhaites avoir
    1;2;3;4;5;6;7;8;9;10 comme valeurs possibles ou 1,022250;1,00058644846843;5,65646846;...

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2018
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2018
    Messages : 6
    Par défaut
    Citation Envoyé par Qwazerty Voir le message
    Salut

    Les valeurs que tu souhaites avoir sont bien de type double? ou tu veux des nombres entier
    Par exemple si P24 = 10, tu souhaites avoir
    1;2;3;4;5;6;7;8;9;10 comme valeurs possibles ou 1,022250;1,00058644846843;5,65646846;...

    ++
    Qwaz
    Bonjour Qwazerty

    Oui tout a fait mais j'ai trouvé la solution, merci pour ton aide

    @+

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

Discussions similaires

  1. [XL-2007] Somme sur plage variable
    Par Kodomo dans le forum Excel
    Réponses: 2
    Dernier message: 18/03/2012, 13h26
  2. Liste aléatoire sur excel
    Par zoumbilemais dans le forum Excel
    Réponses: 3
    Dernier message: 20/09/2011, 17h20
  3. [XL-2003] Graphique sur plage variable
    Par beatrice2fr dans le forum Excel
    Réponses: 22
    Dernier message: 22/12/2009, 18h19
  4. somme sur plage variable
    Par cdvhome dans le forum Excel
    Réponses: 3
    Dernier message: 25/02/2008, 18h37
  5. [VBA-E] Macro Pour Faire un Tri sur plage variable
    Par tabarly35 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/09/2006, 19h02

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