Générer un nouveau nombre aléatoire sans doublons à la suite d'un liste

RCToxine

XLDnaute Nouveau
Bien le bonjour à tous et à toutes,

Nouvel adepte de l'utilisation d'Excel et de VBA (galère, galère) j'essai, sans succès, de résoudre le problème à première vu pas compliquer mais pour un novice c'est un calvaire.

Je m'explique:

J'ai une feuille comprenant 100 lignes et 15 colonnes. Dans le troisième colonne, j'ai généré des nombres aléatoires de 10000 à 99999 sur les 100 lignes. Dans le 15ème colonnes j'ai deux choix "OUI" ou "NON".

Lorsqu'il y a écrit "OUI" dans la 15ème colonne la macro "TransfertLigne", suite à son activation par Ctrl +a, supprimer ces lignes et les insert dans la feuille "Personnel Parti".

Voilà a peu près la base de mon programme que je vous met en pièce jointe j'ai enlever les macros car il prenait trop de place.

Macro 1

Sub Aleatoire()
Dim plage As Range, cel As Range, alea As Long
Set plage = Range("C2:C100")
plage.Value = ""
If plage.Count > 89999 Then Exit Sub
Randomize
For Each cel In plage
1 alea = 10000 + Int(89999 * Rnd)
If Application.CountIf(plage, alea) Then GoTo 1 Else cel = alea
Next

End Sub


Macro 2

Public Sub TransfertLigne()

Dim PlageUtile As Range
Dim Ligne As Range
Dim Origine As Worksheet
Dim Destination As Worksheet
Dim LigneDestination As Integer
Dim i As Long

Set Origine = Worksheets("Interne")
Set Destination = Worksheets("Personnel Parti")

Set PlageUtile = Range(Origine.Cells(1, 1), Origine.Cells(1, 1).SpecialCells(xlLastCell))

LigneDestination = 2
For Each Ligne In PlageUtile.Rows
If Not Ligne.Cells(1, 15).Value = "NON" And Ligne.Cells(1, 15).Value = " " Then
Sheets("Personnel Parti").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Ligne.Cut Destination.Cells(LigneDestination, 1)
End If

Next

Sheets("Interne").Select
For i = 10000 To 1 Step -1
If IsEmpty(Cells(i, 3).Value) Then Rows(i).Delete
Next i

End Sub

Maintenant j'essai tant bien que mal, de générer, suite à l'activation d'une nouvelle macro (pression d'un bouton, lancement d'une macro par Ctrl + lettre), un nombre aléatoire dans la première cellule vide de la colonne C. Bien sur, il faut que ce nombre n'ai pas de doublons dans la colonne C.

Voilà le coeur de mon problème, ça serait vraiment super que vous m'aidiez à trouvez la solution.

Merci à tous pour l'attention que vous portez à mon message

Bonne journée à tous et à toutes.

RCToxine
 

Pièces jointes

  • ClasseurRCToxine.xls
    36 KB · Affichages: 66
Dernière édition:
C

Compte Supprimé 979

Guest
Re : Générer un nouveau nombre aléatoire sans doublons à la suite d'un liste

Salut RCToxine et bienvenue sur ce forum ;)
Drôle de pseudo :eek:

Regarde en bas de ce fil, dans Discussions similaires, tu devrais y trouver ton bonheur

A+
 

RCToxine

XLDnaute Nouveau
Re : Générer un nouveau nombre aléatoire sans doublons à la suite d'un liste

Salut BrunoM45,

Merci pour l'accueil et ton interet pour mon problème.

C'est bon j'ai résolu le problème pour ceux qui se poserait la question dans quelques temps voila le code :

Sub NouveauNombreAleatoire()

Dim alea As Long
Dim cel As Range
Dim Message As String
Dim m As Long

Message = CStr(LastRow(ThisWorkbook.Worksheets("Interne FBFC"), "C"))
m = CLng(Message)

debut:
If Cells(m, 3).Value <> "" Then MsgBox "Tirage effectué !": Exit Sub
alea = 10000 + Int(89999 * Rnd)
If Not Columns(3).Find(alea, , xlValues, xlWhole) Is Nothing Then GoTo debut
Set cel = IIf(Cells(1, 3).Value = "", Cells(1, 3), Cells(Rows.Count, 3).End(xlUp).Offset(1, 0))
cel.Value = alea

End Sub

Public Function LastRow(oFeuille As Worksheet, sColonne As String) As Long

Dim oRange As Range
Dim aRowCol() As String

oFeuille.Activate

oFeuille.Range(sColonne & "65534").End(xlUp).Select

Set oRange = ActiveCell

aRowCol = Split(oRange.Address(), "$", 3)

LastRow = CLng(aRowCol(2) + 1)

End Function

Bonne continuation à tous

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 711
Messages
2 081 783
Membres
101 817
dernier inscrit
carvajal