XL 2013 Récuperer de façon aléatoire

Tarrain

XLDnaute Junior
Bonjour,

J'ai un fichier excel avec des données diverses dans 8 colonnes avec pour chaque colonne 53 448 lignes
Dans la colonne G j'ai des adresses mails

Je souhaiterai savoir comment faire pour récupérér à partir de la colonne G ligne de 2 à 53 448 un choix aléatoire de 2000 données (ici des adresses mail) et je mette cela dans la colonne L de 2 à 2002 - Bien sûr il ne faut pas récuperer deux fois la même case (adresse mail)

Merci pour votre aide

bonne journée pluvieuse
 

xUpsilon

XLDnaute Accro
Bonjour,

Tu peux générer un nombre aléatoire d'une certaine plage de nombres via cette formule :
VB:
Dim NbAleat as Int
NbAleat = Int((ValMax - ValMin + 1) * Rnd + ValMin)
Avec ValMax ta valeur maxi (ici 53448) et ValMin ta valeur mini (ici 2).
Ensuite, il faudrait avoir une mémoire pour conserver les valeurs qui sont déjà sorties, mais Rdn étant une fonction pseudo aléatoire, je doute qu'il te ressorte plusieurs fois la même valeur en 2000 coups (à tester malgré tout).
Ensuite, pour atteindre l'adresse mail de la ligne concernée, tu utilises une fonction telle que (si tes adresses mail sont dans la colonne A) :
Code:
Dim Mail as String
Mail = Range("A" & NbAleat)

Bonne continuation
 

xUpsilon

XLDnaute Accro
Il te suffit d'aller dans l'onglet "Développeur", ensuite tu crées un bouton de commande, puis clic droit dessus -> Affecter une macro. Ensuite Nouvelle Macro et tu adaptes mes bouts de code ci-dessus à ce que tu veux faire, je pense notamment au fait que tu veuilles peut être noter les adresses mails qqpart, et boucler plutot que d'avoir à cliquer 2000 sur le bouton à chaque tirage.

Bonne continuation
 

xUpsilon

XLDnaute Accro
Voici un exemple très simple pour te tirer 2000 adresses mail et les stocker dans la colonne B :

VB:
Dim NbAleat as Int
Dim Mail as String

For i = 1 to 2000
    NbAleat = Int((ValMax - ValMin + 1) * Rnd + ValMin)
    Mail = Range("A" & NbAleat)
    Range("B" & i) = Mail
Next i

Je te laisse adapter tous les paramètres à tes besoins et me dire s'il y a des choses que tu voudrais changer/rajouter.

Bonne continuation
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo