| | 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.
|