Bonsoir Tout plein des idées. en B1, tu inscris =alea(), puis tu tires la formule jusqu'à B32. Ensuite, tu trie ( les col A et B) par ordre de grandeur en prenant la col B comme base de tri, puis tu fais un copié-collé des 6 premières valeurs de la col A.... Bonne chance
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news:
Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
Bonsoir
Tout plein des idées.
en B1, tu inscris =alea(), puis tu tires la formule jusqu'à B32.
Ensuite, tu trie ( les col A et B) par ordre de grandeur en prenant la col B
comme base de tri, puis tu fais un copié-collé des 6 premières valeurs de la
col A....
Bonne chance
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" <nospam@nospam.com> a écrit dans le message de news:
OvrKCa1JGHA.3200@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules
au hasard de cette colonne dans les cellules A1 à A6.
Bonsoir Tout plein des idées. en B1, tu inscris =alea(), puis tu tires la formule jusqu'à B32. Ensuite, tu trie ( les col A et B) par ordre de grandeur en prenant la col B comme base de tri, puis tu fais un copié-collé des 6 premières valeurs de la col A.... Bonne chance
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news:
Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
nospam
Excellente idée Jacquouille. Le seul problème, c'est que je ne sais pas écrire cet algorithme en "langage" Macro Excel :-))
Quelqu'un peut m'aider ?
Merci,
Bien Cordialement,
Christian
Excellente idée Jacquouille. Le seul problème, c'est que je
ne sais pas écrire cet algorithme en "langage" Macro Excel :-))
Excellente idée Jacquouille. Le seul problème, c'est que je ne sais pas écrire cet algorithme en "langage" Macro Excel :-))
Quelqu'un peut m'aider ?
Merci,
Bien Cordialement,
Christian
Jacquouille
Bonsoir Rien de plus facile. Tu imprimes ma réponse, puis tu ouvres ton fichier et l'enregistreur de macro. Ensuite, tu fais tout ce que j'ai écrit, puis tu arrêtes l'enregistreur. O, Miracle. VBA est là. -)) Et si tu es gentil, on te fera un bouton pour y coller cette littérature Goncourrienne de VBA. -)) Bonne chance
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news:
Excellente idée Jacquouille. Le seul problème, c'est que je ne sais pas écrire cet algorithme en "langage" Macro Excel :-))
Quelqu'un peut m'aider ?
Merci,
Bien Cordialement,
Christian
Bonsoir
Rien de plus facile.
Tu imprimes ma réponse, puis tu ouvres ton fichier et l'enregistreur de
macro.
Ensuite, tu fais tout ce que j'ai écrit, puis tu arrêtes l'enregistreur.
O, Miracle. VBA est là. -)) Et si tu es gentil, on te fera un bouton
pour y coller cette littérature Goncourrienne de VBA. -))
Bonne chance
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" <nospam@nospam.com> a écrit dans le message de news:
ubhYdp1JGHA.2900@TK2MSFTNGP14.phx.gbl...
Excellente idée Jacquouille. Le seul problème, c'est que je
ne sais pas écrire cet algorithme en "langage" Macro Excel :-))
Bonsoir Rien de plus facile. Tu imprimes ma réponse, puis tu ouvres ton fichier et l'enregistreur de macro. Ensuite, tu fais tout ce que j'ai écrit, puis tu arrêtes l'enregistreur. O, Miracle. VBA est là. -)) Et si tu es gentil, on te fera un bouton pour y coller cette littérature Goncourrienne de VBA. -)) Bonne chance
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news:
Excellente idée Jacquouille. Le seul problème, c'est que je ne sais pas écrire cet algorithme en "langage" Macro Excel :-))
Quelqu'un peut m'aider ?
Merci,
Bien Cordialement,
Christian
nospam
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Jacquouille, merci mais ta solution nécessite de créer une colonne
supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour
différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires
dans un tableau en mémoire, de les trier, puis d'effectuer la recopie
de 6 cellules sélectionnées, le tout dans la macro ?
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Jacquouille
Re Réflexion purement poétique: Si tu mets un truc en mémoire dans un tableau, il n'y aura plus rien d'aléatoire. Ceci dit et écrit, rien ne t'empêche de créer cette colonne hors de ton tableau d'activité, par ex en col AZ ....puisque tu y crées une valeur aléatoire qui changera.....IV peut aussi convenir. Tout ceci pour masquer mon ignorance quant au fait de savoir si VBA accepte une fonction alea qui m eparait assez volatile mais non volage. Si d'autres pouvaient répondre????
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news: uLhkC$
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Re
Réflexion purement poétique: Si tu mets un truc en mémoire dans un tableau,
il n'y aura plus rien d'aléatoire.
Ceci dit et écrit, rien ne t'empêche de créer cette colonne hors de ton
tableau d'activité, par ex en col AZ ....puisque tu y crées une valeur
aléatoire qui changera.....IV peut aussi convenir.
Tout ceci pour masquer mon ignorance quant au fait de savoir si VBA accepte
une fonction alea qui m eparait assez volatile mais non volage.
Si d'autres pouvaient répondre????
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" <nospam@nospam.com> a écrit dans le message de news:
uLhkC$1JGHA.720@TK2MSFTNGP14.phx.gbl...
Jacquouille, merci mais ta solution nécessite de créer une colonne
supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour
différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires
dans un tableau en mémoire, de les trier, puis d'effectuer la recopie
de 6 cellules sélectionnées, le tout dans la macro ?
Re Réflexion purement poétique: Si tu mets un truc en mémoire dans un tableau, il n'y aura plus rien d'aléatoire. Ceci dit et écrit, rien ne t'empêche de créer cette colonne hors de ton tableau d'activité, par ex en col AZ ....puisque tu y crées une valeur aléatoire qui changera.....IV peut aussi convenir. Tout ceci pour masquer mon ignorance quant au fait de savoir si VBA accepte une fonction alea qui m eparait assez volatile mais non volage. Si d'autres pouvaient répondre????
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news: uLhkC$
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Jacquouille
Deuxième RE Rien ne t'empêche, sinon la vitesse de calcul, de mettre ces col sur une autre feuille.....
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news: uLhkC$
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Deuxième RE
Rien ne t'empêche, sinon la vitesse de calcul, de mettre ces col sur une
autre feuille.....
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" <nospam@nospam.com> a écrit dans le message de news:
uLhkC$1JGHA.720@TK2MSFTNGP14.phx.gbl...
Jacquouille, merci mais ta solution nécessite de créer une colonne
supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour
différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires
dans un tableau en mémoire, de les trier, puis d'effectuer la recopie
de 6 cellules sélectionnées, le tout dans la macro ?
Deuxième RE Rien ne t'empêche, sinon la vitesse de calcul, de mettre ces col sur une autre feuille.....
-- Bien amicalmement, Vivement conseillés: http://www.excelabo.net http://jacxl.free.fr/mpfe/trombino.html http://dj.joss.free.fr/netiquet.htm http://frederic.sigonneau.free.fr/
Jacquouille.
"nospam" a écrit dans le message de news: uLhkC$
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Lionel
Bonsoir,
Nettement moins rapide que la solution de Jacquouille, voici une proposition en vba :
Option Explicit Option Base 1
Sub test() ' Dim Tablo Dim Result() Dim Cell As Range Dim i%, Indice% ' Application.ScreenUpdating = False Tablo = Range("C1:C" & Range("C65536").End(xlUp).Row) ReDim Result(1 To UBound(Tablo)) i = 1 Do While i <= 6 Indice = Int(Rnd * 32 + 1) If Result(Indice) = 0 Then Result(Indice) = 1 i = i + 1 End If Loop Set Cell = Range("A1") For i = 1 To UBound(Tablo) If Result(i) Then Cell = Tablo(i, 1) Set Cell = Cell.Offset(1, 0) End If Next i Range("A1").Select Application.ScreenUpdating = True End Sub
Amicalement Lionel
"nospam" a écrit dans le message de news:uLhkC$
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
Bonsoir,
Nettement moins rapide que la solution de Jacquouille, voici une proposition
en vba :
Option Explicit
Option Base 1
Sub test()
'
Dim Tablo
Dim Result()
Dim Cell As Range
Dim i%, Indice%
'
Application.ScreenUpdating = False
Tablo = Range("C1:C" & Range("C65536").End(xlUp).Row)
ReDim Result(1 To UBound(Tablo))
i = 1
Do While i <= 6
Indice = Int(Rnd * 32 + 1)
If Result(Indice) = 0 Then
Result(Indice) = 1
i = i + 1
End If
Loop
Set Cell = Range("A1")
For i = 1 To UBound(Tablo)
If Result(i) Then
Cell = Tablo(i, 1)
Set Cell = Cell.Offset(1, 0)
End If
Next i
Range("A1").Select
Application.ScreenUpdating = True
End Sub
Amicalement
Lionel
"nospam" <nospam@nospam.com> a écrit dans le message de
news:uLhkC$1JGHA.720@TK2MSFTNGP14.phx.gbl...
Jacquouille, merci mais ta solution nécessite de créer une colonne
supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour
différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires
dans un tableau en mémoire, de les trier, puis d'effectuer la recopie
de 6 cellules sélectionnées, le tout dans la macro ?
Nettement moins rapide que la solution de Jacquouille, voici une proposition en vba :
Option Explicit Option Base 1
Sub test() ' Dim Tablo Dim Result() Dim Cell As Range Dim i%, Indice% ' Application.ScreenUpdating = False Tablo = Range("C1:C" & Range("C65536").End(xlUp).Row) ReDim Result(1 To UBound(Tablo)) i = 1 Do While i <= 6 Indice = Int(Rnd * 32 + 1) If Result(Indice) = 0 Then Result(Indice) = 1 i = i + 1 End If Loop Set Cell = Range("A1") For i = 1 To UBound(Tablo) If Result(i) Then Cell = Tablo(i, 1) Set Cell = Cell.Offset(1, 0) End If Next i Range("A1").Select Application.ScreenUpdating = True End Sub
Amicalement Lionel
"nospam" a écrit dans le message de news:uLhkC$
Jacquouille, merci mais ta solution nécessite de créer une colonne supplémentaire dans ma feuille, or cela m'ennuie beaucoup pour différentes raisons.
Ne serait-il pas possible, plutôt, de mettre ces 32 valeurs aléatoires dans un tableau en mémoire, de les trier, puis d'effectuer la recopie de 6 cellules sélectionnées, le tout dans la macro ?
Merci,
B.C.
Christian
michdenis
Bonjour Nospam,
Une variante :
'---------------------- Sub test2()
Dim T(1 To 6) For a = 1 To 6 T(a) = Range("c" & Int(Rnd * 32 + 1)).Value Next Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub '---------------------- Function ListSort(liSte) Dim First As Integer, Last As Integer Dim i As Integer, j As Integer Dim Temp First = LBound(liSte) Last = UBound(liSte) For i = First To Last - 1 For j = i + 1 To Last If liSte(i) > liSte(j) Then Temp = liSte(j) liSte(j) = liSte(i) liSte(i) = Temp End If Next j Next i ListSort = liSte End Function '----------------------
Salutations!
"nospam" a écrit dans le message de news: Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
Bonjour Nospam,
Une variante :
'----------------------
Sub test2()
Dim T(1 To 6)
For a = 1 To 6
T(a) = Range("c" & Int(Rnd * 32 + 1)).Value
Next
Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub
'----------------------
Function ListSort(liSte)
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(liSte)
Last = UBound(liSte)
For i = First To Last - 1
For j = i + 1 To Last
If liSte(i) > liSte(j) Then
Temp = liSte(j)
liSte(j) = liSte(i)
liSte(i) = Temp
End If
Next j
Next i
ListSort = liSte
End Function
'----------------------
Salutations!
"nospam" <nospam@nospam.com> a écrit dans le message de news: OvrKCa1JGHA.3200@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules
au hasard de cette colonne dans les cellules A1 à A6.
Dim T(1 To 6) For a = 1 To 6 T(a) = Range("c" & Int(Rnd * 32 + 1)).Value Next Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub '---------------------- Function ListSort(liSte) Dim First As Integer, Last As Integer Dim i As Integer, j As Integer Dim Temp First = LBound(liSte) Last = UBound(liSte) For i = First To Last - 1 For j = i + 1 To Last If liSte(i) > liSte(j) Then Temp = liSte(j) liSte(j) = liSte(i) liSte(i) = Temp End If Next j Next i ListSort = liSte End Function '----------------------
Salutations!
"nospam" a écrit dans le message de news: Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
michdenis
Oups : J'ai omis de tenir compte de ceci : Les cellules copiées devront être différentes.
Salutations!
"michdenis" a écrit dans le message de news: Bonjour Nospam,
Une variante :
'---------------------- Sub test2()
Dim T(1 To 6) For a = 1 To 6 T(a) = Range("c" & Int(Rnd * 32 + 1)).Value Next Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub '---------------------- Function ListSort(liSte) Dim First As Integer, Last As Integer Dim i As Integer, j As Integer Dim Temp First = LBound(liSte) Last = UBound(liSte) For i = First To Last - 1 For j = i + 1 To Last If liSte(i) > liSte(j) Then Temp = liSte(j) liSte(j) = liSte(i) liSte(i) = Temp End If Next j Next i ListSort = liSte End Function '----------------------
Salutations!
"nospam" a écrit dans le message de news: Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
Oups : J'ai omis de tenir compte de ceci :
Les cellules copiées devront être différentes.
Salutations!
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news: O4pyuV3JGHA.1312@TK2MSFTNGP09.phx.gbl...
Bonjour Nospam,
Une variante :
'----------------------
Sub test2()
Dim T(1 To 6)
For a = 1 To 6
T(a) = Range("c" & Int(Rnd * 32 + 1)).Value
Next
Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub
'----------------------
Function ListSort(liSte)
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(liSte)
Last = UBound(liSte)
For i = First To Last - 1
For j = i + 1 To Last
If liSte(i) > liSte(j) Then
Temp = liSte(j)
liSte(j) = liSte(i)
liSte(i) = Temp
End If
Next j
Next i
ListSort = liSte
End Function
'----------------------
Salutations!
"nospam" <nospam@nospam.com> a écrit dans le message de news: OvrKCa1JGHA.3200@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules
au hasard de cette colonne dans les cellules A1 à A6.
Oups : J'ai omis de tenir compte de ceci : Les cellules copiées devront être différentes.
Salutations!
"michdenis" a écrit dans le message de news: Bonjour Nospam,
Une variante :
'---------------------- Sub test2()
Dim T(1 To 6) For a = 1 To 6 T(a) = Range("c" & Int(Rnd * 32 + 1)).Value Next Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub '---------------------- Function ListSort(liSte) Dim First As Integer, Last As Integer Dim i As Integer, j As Integer Dim Temp First = LBound(liSte) Last = UBound(liSte) For i = First To Last - 1 For j = i + 1 To Last If liSte(i) > liSte(j) Then Temp = liSte(j) liSte(j) = liSte(i) liSte(i) = Temp End If Next j Next i ListSort = liSte End Function '----------------------
Salutations!
"nospam" a écrit dans le message de news: Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
michdenis
Il y a ceci dérivé d'un truc de AV
'------------------------------- Sub SansDoublons()
Dim Top As Integer, Bottom As Integer Top = 32: Bottom = 1 With Worksheets("Feuil1") 'à adapter For i = 1 To 6 .Cells(i, 1) = .Range("C" & Evaluate("int(rand()*(" & Top & "-" & Bottom & ")+" & Bottom & ")")) If i > 1 Then While Not .Range(Cells(1, 1), .Cells(i - 1, 1)).Find(Cells(i, 1)) Is Nothing .Cells(i, 1) = Evaluate("int(rand()*(" & Top & "-" & Bottom & ")+" & Bottom & ")") Wend End If Next End With End Sub '-------------------------------
Salutations!
"michdenis" a écrit dans le message de news: Bonjour Nospam,
Une variante :
'---------------------- Sub test2()
Dim T(1 To 6) For a = 1 To 6 T(a) = Range("c" & Int(Rnd * 32 + 1)).Value Next Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub '---------------------- Function ListSort(liSte) Dim First As Integer, Last As Integer Dim i As Integer, j As Integer Dim Temp First = LBound(liSte) Last = UBound(liSte) For i = First To Last - 1 For j = i + 1 To Last If liSte(i) > liSte(j) Then Temp = liSte(j) liSte(j) = liSte(i) liSte(i) = Temp End If Next j Next i ListSort = liSte End Function '----------------------
Salutations!
"nospam" a écrit dans le message de news: Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.
Les cellules copiées devront être différentes.
Une idée ?
Merci pour votre aide,
Bien Cordialement,
Christian
Il y a ceci dérivé d'un truc de AV
'-------------------------------
Sub SansDoublons()
Dim Top As Integer, Bottom As Integer
Top = 32: Bottom = 1
With Worksheets("Feuil1") 'à adapter
For i = 1 To 6
.Cells(i, 1) = .Range("C" & Evaluate("int(rand()*(" & Top & "-" & Bottom & ")+" & Bottom & ")"))
If i > 1 Then
While Not .Range(Cells(1, 1), .Cells(i - 1, 1)).Find(Cells(i, 1)) Is Nothing
.Cells(i, 1) = Evaluate("int(rand()*(" & Top & "-" & Bottom & ")+" & Bottom & ")")
Wend
End If
Next
End With
End Sub
'-------------------------------
Salutations!
"michdenis" <michdenis@hotmail.com> a écrit dans le message de news: O4pyuV3JGHA.1312@TK2MSFTNGP09.phx.gbl...
Bonjour Nospam,
Une variante :
'----------------------
Sub test2()
Dim T(1 To 6)
For a = 1 To 6
T(a) = Range("c" & Int(Rnd * 32 + 1)).Value
Next
Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub
'----------------------
Function ListSort(liSte)
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp
First = LBound(liSte)
Last = UBound(liSte)
For i = First To Last - 1
For j = i + 1 To Last
If liSte(i) > liSte(j) Then
Temp = liSte(j)
liSte(j) = liSte(i)
liSte(i) = Temp
End If
Next j
Next i
ListSort = liSte
End Function
'----------------------
Salutations!
"nospam" <nospam@nospam.com> a écrit dans le message de news: OvrKCa1JGHA.3200@tk2msftngp13.phx.gbl...
Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules
au hasard de cette colonne dans les cellules A1 à A6.
'------------------------------- Sub SansDoublons()
Dim Top As Integer, Bottom As Integer Top = 32: Bottom = 1 With Worksheets("Feuil1") 'à adapter For i = 1 To 6 .Cells(i, 1) = .Range("C" & Evaluate("int(rand()*(" & Top & "-" & Bottom & ")+" & Bottom & ")")) If i > 1 Then While Not .Range(Cells(1, 1), .Cells(i - 1, 1)).Find(Cells(i, 1)) Is Nothing .Cells(i, 1) = Evaluate("int(rand()*(" & Top & "-" & Bottom & ")+" & Bottom & ")") Wend End If Next End With End Sub '-------------------------------
Salutations!
"michdenis" a écrit dans le message de news: Bonjour Nospam,
Une variante :
'---------------------- Sub test2()
Dim T(1 To 6) For a = 1 To 6 T(a) = Range("c" & Int(Rnd * 32 + 1)).Value Next Range("A1").Resize(UBound(T)) = WorksheetFunction.Transpose(ListSort(T))
End Sub '---------------------- Function ListSort(liSte) Dim First As Integer, Last As Integer Dim i As Integer, j As Integer Dim Temp First = LBound(liSte) Last = UBound(liSte) For i = First To Last - 1 For j = i + 1 To Last If liSte(i) > liSte(j) Then Temp = liSte(j) liSte(j) = liSte(i) liSte(i) = Temp End If Next j Next i ListSort = liSte End Function '----------------------
Salutations!
"nospam" a écrit dans le message de news: Bonjour à tous,
J'ai une colonne de cellules C1 à C32.
Je souhaite lancer une macro Excel qui recopie 6 cellules au hasard de cette colonne dans les cellules A1 à A6.