Ligne aléatoire

Résolu
Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un tableau avec:
- En colonne A de numéros allant de 1 à 220 000.
- En colonne B des 0 et des 1

Et je voudrais que en C1 apparaisse un numéro de la colonne A que si en B il y as un 0.

Merci pour votre aide.



--
L'amour rend aveugle mais le mariage rend la vue...

7 réponses

  1. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Bonjour.
    En C1, saisir la formule =SI(B1=0;A1;"") , et recopier.
    0
    1. Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   417
       
      Désolé j'ai oublié de préciser:
      Je voudrais qu’apparaisse en "C1" un numéro aléatoire de la colonne A que si en B il y as un 0
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

    formule en A2 (plageA étant la plage A2:Axx)
    =SI(B2=0;"";INDEX(plageA;ENT(NB(A:A)*ALEA()+1)))

    RQ. il pourra y avoir plusieurs fois le même nombre en colonne C

    Cdlmnt
    0
    1. Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   417
       
      Bonjour,

      Si je met ta formule en A2, cela me fait une référence circulaire.
      Mes plages commence bien en 2eme ligne mais la je ne comprend pas comment je peu faire pour que j'ai un numéro aléatoire de la colonne A (bien sur que si en face, dans la colonne B, il y as un 0).

      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      met la en C2 puisque en A et B tu as tes données
      eric
      0
    3. Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   417
       
      En C2, Cela me met: #NOM?
      0
    4. Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   417
       
      Oups désolé, j'avais fait une faute.
      Mais j'ai des Faux positifs:
      Des fois il me choisis des numéros avec un 1 en face dans la colonne B
      0
    5. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ccm se trompe rarement
      Dépose ton fichier avec la formule que tu as mise sur cjoint.com et colle ici le lien fourni.
      eric
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Salut eric

    ah l'orthographe .....

    Et je voudrais que en C1 apparaisse un numéro de la colonne A que si en B il y as un 0.
    j'ai interprété il y as un 0 comme il n'y a pas un 0
    S'il fallait lire il y a un 0 il faut permuter les deux instructions et la formule devient
    =SI(B2=0;INDEX(plageA;ENT(NB(A:A)*ALEA()+1));"")

    Bonne journée

    Cdlmnt
    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Avec une colonne de service on peut obtenir des tirages sans doublon
    https://www.cjoint.com/c/HHlueUgna8B

    Cdlmnt
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   417
     
    Bonjour,
    ccm81 j'ai du mal à comprendre ton tableau dsl. Est-ce possible de ne pas ajouter de colonnes?
    Pour être plus compréhensible, voici le fichier: https://www.cjoint.com/c/HHmuf45ZIyO
    Merci
    0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    formule en C2 à tirer vers le bas
    =SI(B2=0;INDEX(A:A;ENT(NB(A:A)*ALEA()+1));"")

    Comme dit plus haut, cette formule n'assure pas l'absence de doublons en colonne C.

    Cdlmnt
    0
  8. Alex_HX8XF Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   417
     
    Bien le bonjour tout le monde.

    J'ai enfin réussi: (avec un petit VBA)
    Donc dans un module j'ai fait un petit bout de code si ça peut aider:

    Function NumAlea(R As Range, R2 As Range) As String
    Final = R.Rows.Count
    colonne = R.Column
    colonne2 = R2.Column
    i = Round(Application.WorksheetFunction.RandBetween(1, Final))
    While Cells(i, colonne2) <> 0
    i = Round(Application.WorksheetFunction.RandBetween(1, Final))
    Wend
    NumAlea = Cells(i, colonne)
    End Function


    Ensuite en C1 j'ai mis: =NumAlea(A2:A220000;B2:B220000)

    Mais merci quand même à tout les 2.
    Cdlmnt.

    0