|  | auteurs : SilkyRoad, Singular |  
Cet exemple supprime la ligne complète si des cellules de la plage A1:A10 sont en doublons:
  
 | Vba |  
Option Explicit
Option Base 1
Sub SupprimeDoublons()
    Dim Plage As Range, Cell As Range
    Dim Un As New Collection
    Dim Tableau() As Integer
    Dim x As Integer
    
    
    
    Set Plage = Worksheets("Feuil1").Range("A1:A10")
    
    On Error Resume Next
    
    For Each Cell In Plage
        
        Un.Add Cell, CStr(Cell)
        
        
        
        If Err.Number <> 0 Then
            x = x + 1
            ReDim Preserve Tableau(1 To x)
            Tableau(x) = Cell.Row
            Err.Clear
        End If
    Next Cell
    On Error GoTo 0
    
    
    If x = 0 Then Exit Sub
    
    
    Application.ScreenUpdating = False
    
    
    For x = UBound(Tableau) To LBound(Tableau) Step -1
        Worksheets("Feuil1").Rows(Tableau(x)).EntireRow.Delete
    Next x
    
    Application.ScreenUpdating = True
End Sub
  |  
 
  |  
  |  | auteur : SilkyRoad |  
La procédure suivante crée une série de nombres entre 1 et 25, de façon aléatoire et sans doublon. 
Les valeurs sont écrites verticalement dans la feuille de calcul, et une option permet d'indiquer à partir de 
quelle cellule (B1 dans l'exemple).
  
 | Vba |  
Sub Test()
    GenereSerieAleatoireSansDoublons 25, Range("B1")
End Sub
Sub GenereSerieAleatoireSansDoublons(NbValeurs As Integer, Cell As Range)
    Dim Tableau() As Integer, TabNumLignes() As Integer
    Dim i As Integer, k As Integer
    
    ReDim Tableau(NbValeurs)
    ReDim TabNumLignes(NbValeurs)
    
    For i = 1 To NbValeurs
        TabNumLignes(i) = i
        Tableau(i) = i
    Next
    
    
    Randomize
    
    For i = NbValeurs To 1 Step -1
        k = Int((i * Rnd) + 1)
        Cells(Cell.Row + i - 1, Cell.Column) = Tableau(TabNumLignes(k))
        TabNumLignes(k) = TabNumLignes(i)
    Next
End Sub
  |  
 
 
  
Il est aussi possible d'effectuer le tirage sans macro:
  
Insérez la formule = Alea() dans la cellule A1, puis utilisez les poignées 
de recopie jusqu'en A25. 
Saisissez les nombres 1 à 25 chronologiquement dans la plage B1:B25 
Dans la cellule C1 vous saisissez:  
=RECHERCHEV(PETITE.VALEUR($A$1:$A$25;LIGNE());$A$1:$B$25;2;0) 
puis utilisez les poignées de recopie jusqu'en C25.
  
Utilisez la touche clavier F9 pour lancer nouveau tirage.
  
 
  |  
 
 
 
						Consultez les autres F.A.Q's
					 
 Les sources présentés sur cette pages sont libre de droits,
			et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
			Copyright ©2008 
			Developpez LLC. Tout droits réservés Developpez LLC.
			Aucune reproduction, même partielle, ne peut être faite de ce site et de
			l'ensemble de son contenu : textes, documents et images sans l'autorisation
			expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
			de prison et jusqu'à 300 000 E de dommages et intérets.
			Cette page est déposée à la SACD. 
												 |