OVH Cloud OVH Cloud

Une macro... s'il vous plaît...

29 réponses
Avatar
STEPHANE
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être réalisée
par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier mais qui
est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon totalement
aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK, à chaque
lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne BCD...

C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.

10 réponses

1 2 3
Avatar
STEPHANE
Bonsoir LSteph,

Merci de ton travail.

Quand je lance la macro, sabler et finalement Excel est planté.
J'ai vérifié mon copier dans le module, j'ai créé un nouveau fichier sans
autre macro, mais même problème.

As-tu une idée de ce qui ne fonctionne pas ?

Merci

Stéphane.
"LSteph" a écrit dans le message de news:
Ofa$
Bonjour Stephane,
..je vois que tu as d'autres réponses, mais comme j'avais préparé ceci:

'****
Sub testal()
Dim c As Range
Dim did As Boolean
Dim myc As String

Application.ScreenUpdating = False

did = False
[b1:k100].ClearContents
On Error Resume Next
For Each c In Range("a1:a100").Cells


Do
myc = Columns(Int((10 * Rnd) + 2)).EntireColumn.Address
If Range(myc).SpecialCells(xlCellTypeBlanks).Count > 65525 Then
c.Offset(0, Range(myc).Column - 1).Value = c
did = True
Else
did = False
End If
Loop While did = False
Next


End Sub
'****


'lSteph



"STEPHANE" a écrit dans le message de
news: 430e44f6$0$2522$
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être
réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier mais
qui est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon
totalement aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK,
à chaque lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne
BCD...

C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.









Avatar
Modeste
Bonsour®
STEPHANE wrote:
Sujet : étude de répartition aléatoire.
Je souhaiterais faire une simulation qui ne peux, je pense,
qu'être réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?


;o))) il ne faut pas etre si definitif ....
pour rester à ta portée ;o)))
une solution sans macro cela te convient-il ???
http://cjoint.com/?iAvzBJqScK

au regard des remarques précedentes quelles sont les variables ???
le nombre de données : OK
le nombre de colonnes (destination) ou le nombre de tirages par colonne ?
les solutions seront differentes (calcul préalable pour répartition)
en piece jointe solution pour 100 données 10 colonnes

--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042

Avatar
LSteph
désolé ...non, effectivement, cela fonctionnait impec ce matin (sur mon
poste en xl97 win xp pro) et voici que ce soir ,
juste près te l'avoir envoyé , je la teste en 2003 at home et cela plante,
je vais chercher ce qui bugue...

..pour simplifier, et répondre à ton autre question sur celles que je viens
de voir construites selon la même idée
pour réitèrer il faut vider la plage en début de macro ainsi:
[b1:k100].ClearContents

a+

lSteph

"STEPHANE" a écrit dans le message de news:
430f5d54$0$2516$
Bonsoir LSteph,

Merci de ton travail.

Quand je lance la macro, sabler et finalement Excel est planté.
J'ai vérifié mon copier dans le module, j'ai créé un nouveau fichier sans
autre macro, mais même problème.

As-tu une idée de ce qui ne fonctionne pas ?

Merci

Stéphane.
"LSteph" a écrit dans le message de news:
Ofa$
Bonjour Stephane,
..je vois que tu as d'autres réponses, mais comme j'avais préparé ceci:

'****
Sub testal()
Dim c As Range
Dim did As Boolean
Dim myc As String

Application.ScreenUpdating = False

did = False
[b1:k100].ClearContents
On Error Resume Next
For Each c In Range("a1:a100").Cells


Do
myc = Columns(Int((10 * Rnd) + 2)).EntireColumn.Address
If Range(myc).SpecialCells(xlCellTypeBlanks).Count > 65525 Then
c.Offset(0, Range(myc).Column - 1).Value = c
did = True
Else
did = False
End If
Loop While did = False
Next


End Sub
'****


'lSteph



"STEPHANE" a écrit dans le message de
news: 430e44f6$0$2522$
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être
réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier mais
qui est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon
totalement aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK,
à chaque lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne
BCD...

C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.













Avatar
LSteph
re,
c'est bizarre et maintenant cela fonctionne là:
http://cjoint.com/?iAwsmpdICm

Le plus étrange 'est ceci:
si j'execute cette petite sub sur la colonne A vide

Sub tst()
[a:a].Select
MsgBox Selection.SpecialCells(xlCellTypeBlanks).Count
End Sub

la réponse est 1
si je mets un chiffre en A65535
j'obtiens 65534

Il ya des choses curieuses parfois!

a+

lSteph





"STEPHANE" a écrit dans le message de news:
430f5d54$0$2516$
Bonsoir LSteph,

Merci de ton travail.

Quand je lance la macro, sabler et finalement Excel est planté.
J'ai vérifié mon copier dans le module, j'ai créé un nouveau fichier sans
autre macro, mais même problème.

As-tu une idée de ce qui ne fonctionne pas ?

Merci

Stéphane.
"LSteph" a écrit dans le message de news:
Ofa$
Bonjour Stephane,
..je vois que tu as d'autres réponses, mais comme j'avais préparé ceci:

'****
Sub testal()
Dim c As Range
Dim did As Boolean
Dim myc As String

Application.ScreenUpdating = False

did = False
[b1:k100].ClearContents
On Error Resume Next
For Each c In Range("a1:a100").Cells


Do
myc = Columns(Int((10 * Rnd) + 2)).EntireColumn.Address
If Range(myc).SpecialCells(xlCellTypeBlanks).Count > 65525 Then
c.Offset(0, Range(myc).Column - 1).Value = c
did = True
Else
did = False
End If
Loop While did = False
Next


End Sub
'****


'lSteph



"STEPHANE" a écrit dans le message de
news: 430e44f6$0$2522$
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être
réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier mais
qui est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon
totalement aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK,
à chaque lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne
BCD...

C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.













Avatar
MPi
Salut,
si tu utilises 50 lignes, tu dois modifier le tableau à 49. Si tu as 1000
lignes, il faut mettre 999 comme indice de tableau.
Ensuite, il faut modifier le "1 To 100" par le nombre de lignes (1 To 50 ou
1 To 1000)

Mais je pense que je n'ai pas bien compris le problème...
Mon programme copie toutes les données de la colonne A dans chacune des 10
autres colonnes, mais dans un ordre différent et qui ne se répète pas.

En fait, tu voudrais voir apparaître une seule fois chaque nombre de la
colonne A de façon alétoire dans 10 colonnes ?
C'est-à-dire que chaque valeur de la colonne A ne devrait pas apparaître
plus d'une fois dans l'ensemble des 10 autres colonnes (?)
C'est bien ça ?

Michel


"STEPHANE" a écrit dans le message de
news:430f44d3$0$2514$
Bonjour Michel,

Merci tout d'abord pour ce long développement.

Mais quand je lance la macro, pour 50 ligne en A, une colonne de valeur
s'inscrit en B et le sablier reste bloquer, le programme ne répond plus ?!
J'ai essayé avec 10 lignes 100 lignes, le problème est identique.

Ma demande correspond assez bien à ce que Daniel a fait un peu plus haut,
à

la réserve qu'il me faut pouvoir traiter une colonne d'au moins 1000
lignes

voir beaucoup plus si possible.

Ex :
J'ai 3000 lignes en A je souhaite que les valeurs se répartissent de
façon

aléatoire en 10 colonnes à droite de A sur 300 lignes.

Merci si tu peux étudier de nouveau la question. Et Merci encore, même si
tu

ne le peux pas.

Stéphane.

"MPi" a écrit dans le message de news:
YuBPe.41608$
Salut,

Ceci devrait faire ce que tu souhaites
Il s'agit de charger un tableau avec les valeurs de la colonne A et
inscrire
les données dans les 10 colonnes à droite, une à la fois, tout en
vérifiant
si le nombre a déjà été entré dans la même colonne ou sur la même ligne.
Lorsqu'on inscrit une valeur, on doit modifier cette valeur dans le
tableau
pour ne pas l'utiliser une 2e fois. Ici, je mets -1

Option Explicit

Sub départ()
Dim Tablo(99), Valeur
Dim I As Integer, J As Integer

Columns("B:K").ClearContents

'initialiser le générateur de nombres aléatoires
Randomize

For I = 2 To 11
'remplir un tableau avec les valeurs de la colonne A
For J = 1 To 100
Tablo(J - 1) = Range("A" & J)
Next

For J = 1 To 100
'rechercher une valeur aléatoire qui n'a pas été utilisée
Do
Valeur = Int((100 * Rnd))
Loop Until Tablo(Valeur) <> -1

'Vérifier si la valeur a déjà été entrée dans cette colonne
If Not IsInColonne(Tablo(Valeur), I) Then
'Vérifier si la valeur a déjà été entrée sur cette ligne
If Not IsInLigne(Tablo(Valeur), J) Then
'Inscrire la valeur
Cells(J, I) = Tablo(Valeur)
'Mettre -1 une fois la valeur utilisée
Tablo(Valeur) = -1
Else
J = J - 1
End If
Else
J = J - 1
End If
Next
Next
End Sub

Function IsInColonne(Nb, Col) As Boolean
Dim Recherche

Set Recherche = Columns(Col).Find(Nb, LookAt:=xlWhole)
If Not Recherche Is Nothing Then IsInColonne = True

End Function

Function IsInLigne(Nb, Ligne) As Boolean
Dim Recherche

Set Recherche = Rows(Ligne).Find(Nb, LookAt:=xlWhole)
If Not Recherche Is Nothing Then IsInLigne = True

End Function

Michel
"STEPHANE" a écrit dans le message de
news:430e44f6$0$2522$
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être
réalisée

par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier
mais



qui
est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon
totalement
aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK, à chaque
lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne
BCD...


C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.













Avatar
STEPHANE
Bonsoir Modeste,

Modeste est moqueur ;o)...
Cette solution est presque idéale. Le "presque" étant contenu dans ce qui
est à ma portée....

Le lien http://cjoint.com/?iAvzBJqScK correspond exactement à ce que je
cherche, seulement je ne sais pas transposer, car je ne comprends pas bien
ce qu'il se passe.

Dans mon exemple :
Je copie l'exemple http://cjoint.com/?iAvzBJqScK
Je renomme Références en Réf et Tirage en Tir sinon rien ne marche je ne
sais pas pourquoi ?
je copie en A "collage spécial" valeur mes 1000 valeurs (qui sont positives
ou négatives)
J'incrémente en L la fonction =ALEA()
Et je retrouve en BCDEFGHIJK un tirage
Seulement si B a bien 100 valeurs (1000/10), C lui n'en a plus que 90...et
K10.
Après plusieurs tentatives pour modifier $Lxx, il semble que la limite se
trouve en fait ailleurs mais je ne comprends pas.
Un éclaircissement s'il te plaît.


Je repose mon problème pour répondre à tes questions :

En A ce sont des valeurs (+ ou -) 1000 lignes ou plus toujours divisible par
10.
Une fois posées je ne travaille que sur elles.
Il me faut impérativement 10 colonnes. BCDEFGHIJK sont donc les tirages,
c'est à dire la répartition aléatoire de A.
Par exemple 1000 lignes de A en 100 lignes sur BCDEFGHIJK.
Enfin tout comme dans le fichier que tu m'as indiqué, je dois pouvoir
multiplier les tirages (1000 pour une limite maximale) afin d'étudier la
distribution aléatoire (stats, courbe de Gauss etc....)

Peux-tu m'aider encore un peu

Merci

Stéphane


"Modeste" a écrit dans le message de news:
%
Bonsour®
STEPHANE wrote:
Sujet : étude de répartition aléatoire.
Je souhaiterais faire une simulation qui ne peux, je pense,
qu'être réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?


;o))) il ne faut pas etre si definitif ....
pour rester à ta portée ;o)))
une solution sans macro cela te convient-il ???
http://cjoint.com/?iAvzBJqScK

au regard des remarques précedentes quelles sont les variables ???
le nombre de données : OK
le nombre de colonnes (destination) ou le nombre de tirages par colonne ?
les solutions seront differentes (calcul préalable pour répartition)
en piece jointe solution pour 100 données 10 colonnes

--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042




Avatar
STEPHANE
Re Michel,

« En fait, tu voudrais voir apparaître une seule fois chaque nombre de la
colonne A de façon aléatoire dans 10 colonnes ?
C'est-à-dire que chaque valeur de la colonne A ne devrait pas apparaître
plus d'une fois dans l'ensemble des 10 autres colonnes (?)
C'est bien ça ? »

Oui c'est exactement cela.

Si j'ai 1000 valeurs en A il faut qu'elles se répartissent de façon
aléatoire en 100 lignes sur les 10 colonnes à droite de A. Il me faut
pouvoir répéter l'opération x fois afin d'étudier la distribution aléatoire
de valeurs positives et négatives (Stats, Gauss.)

Merci de ta collaboration.

Stéphane.


"MPi" a écrit dans le message de news:
28MPe.55919$
Salut,
si tu utilises 50 lignes, tu dois modifier le tableau à 49. Si tu as 1000
lignes, il faut mettre 999 comme indice de tableau.
Ensuite, il faut modifier le "1 To 100" par le nombre de lignes (1 To 50
ou
1 To 1000)

Mais je pense que je n'ai pas bien compris le problème...
Mon programme copie toutes les données de la colonne A dans chacune des 10
autres colonnes, mais dans un ordre différent et qui ne se répète pas.

En fait, tu voudrais voir apparaître une seule fois chaque nombre de la
colonne A de façon alétoire dans 10 colonnes ?
C'est-à-dire que chaque valeur de la colonne A ne devrait pas apparaître
plus d'une fois dans l'ensemble des 10 autres colonnes (?)
C'est bien ça ?

Michel


"STEPHANE" a écrit dans le message de
news:430f44d3$0$2514$
Bonjour Michel,

Merci tout d'abord pour ce long développement.

Mais quand je lance la macro, pour 50 ligne en A, une colonne de valeur
s'inscrit en B et le sablier reste bloquer, le programme ne répond plus
?!
J'ai essayé avec 10 lignes 100 lignes, le problème est identique.

Ma demande correspond assez bien à ce que Daniel a fait un peu plus haut,
à

la réserve qu'il me faut pouvoir traiter une colonne d'au moins 1000
lignes

voir beaucoup plus si possible.

Ex :
J'ai 3000 lignes en A je souhaite que les valeurs se répartissent de
façon

aléatoire en 10 colonnes à droite de A sur 300 lignes.

Merci si tu peux étudier de nouveau la question. Et Merci encore, même si
tu

ne le peux pas.

Stéphane.

"MPi" a écrit dans le message de news:
YuBPe.41608$
Salut,

Ceci devrait faire ce que tu souhaites
Il s'agit de charger un tableau avec les valeurs de la colonne A et
inscrire
les données dans les 10 colonnes à droite, une à la fois, tout en
vérifiant
si le nombre a déjà été entré dans la même colonne ou sur la même
ligne.
Lorsqu'on inscrit une valeur, on doit modifier cette valeur dans le
tableau
pour ne pas l'utiliser une 2e fois. Ici, je mets -1

Option Explicit

Sub départ()
Dim Tablo(99), Valeur
Dim I As Integer, J As Integer

Columns("B:K").ClearContents

'initialiser le générateur de nombres aléatoires
Randomize

For I = 2 To 11
'remplir un tableau avec les valeurs de la colonne A
For J = 1 To 100
Tablo(J - 1) = Range("A" & J)
Next

For J = 1 To 100
'rechercher une valeur aléatoire qui n'a pas été utilisée
Do
Valeur = Int((100 * Rnd))
Loop Until Tablo(Valeur) <> -1

'Vérifier si la valeur a déjà été entrée dans cette colonne
If Not IsInColonne(Tablo(Valeur), I) Then
'Vérifier si la valeur a déjà été entrée sur cette ligne
If Not IsInLigne(Tablo(Valeur), J) Then
'Inscrire la valeur
Cells(J, I) = Tablo(Valeur)
'Mettre -1 une fois la valeur utilisée
Tablo(Valeur) = -1
Else
J = J - 1
End If
Else
J = J - 1
End If
Next
Next
End Sub

Function IsInColonne(Nb, Col) As Boolean
Dim Recherche

Set Recherche = Columns(Col).Find(Nb, LookAt:=xlWhole)
If Not Recherche Is Nothing Then IsInColonne = True

End Function

Function IsInLigne(Nb, Ligne) As Boolean
Dim Recherche

Set Recherche = Rows(Ligne).Find(Nb, LookAt:=xlWhole)
If Not Recherche Is Nothing Then IsInLigne = True

End Function

Michel
"STEPHANE" a écrit dans le message de
news:430e44f6$0$2522$
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être
réalisée

par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier
mais



qui
est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon
totalement
aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK, à chaque
lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne
BCD...


C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.

















Avatar
Modeste
bonsour® STEPHANE
Le fichier à été modifié pour 1000 données
http://cjoint.com/?iBbsjtprhx
les plages references et tirages ont été redimensionnées et renommées
la plage résultat en bleu posséde une MEFC pour détecter les doublons
(hautement improbable avec cette méthode)
Les $Lxx sont respectivement
1 pour colonne B
101 pour Colonne C
.......
901 pour Colonne K

il est bien entendu que ce classeur ne détecte pas le nombre de données à
analyser...
mais cela est possible ;o)))
avec des contraintes, notament : nombre de données doit etre multiple du
nombre de colonnes (10)

plus il y a de données, on voit alors dans la barre d'état le % de recalcul
défiler
selon la CPU du poste utilisé la méthode VBA retrouvera son avantage ;o)))
(dans ce classeur il y a plus de 2000 cellules à recalculer et reactualiser)

STEPHANE wrote:
Bonsoir Modeste,

Modeste est moqueur ;o)...
Cette solution est presque idéale. Le "presque" étant contenu dans ce
qui est à ma portée....

Le lien http://cjoint.com/?iAvzBJqScK correspond exactement à ce que
je cherche, seulement je ne sais pas transposer, car je ne comprends
pas bien ce qu'il se passe.

Dans mon exemple :
Je copie l'exemple http://cjoint.com/?iAvzBJqScK
Je renomme Références en Réf et Tirage en Tir sinon rien ne marche je
ne sais pas pourquoi ?
je copie en A "collage spécial" valeur mes 1000 valeurs (qui sont
positives ou négatives)
J'incrémente en L la fonction =ALEA()
Et je retrouve en BCDEFGHIJK un tirage
Seulement si B a bien 100 valeurs (1000/10), C lui n'en a plus que
90...et K10.
Après plusieurs tentatives pour modifier $Lxx, il semble que la
limite se trouve en fait ailleurs mais je ne comprends pas.
Un éclaircissement s'il te plaît.


Je repose mon problème pour répondre à tes questions :

En A ce sont des valeurs (+ ou -) 1000 lignes ou plus toujours
divisible par 10.
Une fois posées je ne travaille que sur elles.
Il me faut impérativement 10 colonnes. BCDEFGHIJK sont donc les
tirages, c'est à dire la répartition aléatoire de A.
Par exemple 1000 lignes de A en 100 lignes sur BCDEFGHIJK.
Enfin tout comme dans le fichier que tu m'as indiqué, je dois pouvoir
multiplier les tirages (1000 pour une limite maximale) afin d'étudier
la distribution aléatoire (stats, courbe de Gauss etc....)

Peux-tu m'aider encore un peu

Merci

Stéphane


"Modeste" a écrit dans le message de news:
%
Bonsour®
STEPHANE wrote:
Sujet : étude de répartition aléatoire.
Je souhaiterais faire une simulation qui ne peux, je pense,
qu'être réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?


;o))) il ne faut pas etre si definitif ....
pour rester à ta portée ;o)))
une solution sans macro cela te convient-il ???
http://cjoint.com/?iAvzBJqScK

au regard des remarques précedentes quelles sont les variables ???
le nombre de données : OK
le nombre de colonnes (destination) ou le nombre de tirages par
colonne ? les solutions seront differentes (calcul préalable pour
répartition) en piece jointe solution pour 100 données 10 colonnes

--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042



--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042



Avatar
STEPHANE
RE Modeste

C'est parfait même si je n'ai toujours pas bien compris comment ça marche,
il y a au moins deux façons de prendre alors les choses. Je choisirais celle
qui sied le mieux à mon égo, en considérant que c'est une invitation à la
réflexion ;o))

Il est tard, je vais donc méditer sur la nécessaire humilité qu'implique la
relativité du savoir.

Merci de cette parfaite solution, je vais exploiter ses possibilités et
peut-être devrais-je encore avoir recours à une « modeste » aide.

Encore merci et Bonsoir.

Stéphane.

"Modeste" a écrit dans le message de news:

bonsour® STEPHANE
Le fichier à été modifié pour 1000 données
http://cjoint.com/?iBbsjtprhx
les plages references et tirages ont été redimensionnées et renommées
la plage résultat en bleu posséde une MEFC pour détecter les doublons
(hautement improbable avec cette méthode)
Les $Lxx sont respectivement
1 pour colonne B
101 pour Colonne C
.......
901 pour Colonne K

il est bien entendu que ce classeur ne détecte pas le nombre de données à
analyser...
mais cela est possible ;o)))
avec des contraintes, notament : nombre de données doit etre multiple du
nombre de colonnes (10)

plus il y a de données, on voit alors dans la barre d'état le % de
recalcul défiler
selon la CPU du poste utilisé la méthode VBA retrouvera son avantage ;o)))
(dans ce classeur il y a plus de 2000 cellules à recalculer et
reactualiser)

STEPHANE wrote:
Bonsoir Modeste,

Modeste est moqueur ;o)...
Cette solution est presque idéale. Le "presque" étant contenu dans ce
qui est à ma portée....

Le lien http://cjoint.com/?iAvzBJqScK correspond exactement à ce que
je cherche, seulement je ne sais pas transposer, car je ne comprends
pas bien ce qu'il se passe.

Dans mon exemple :
Je copie l'exemple http://cjoint.com/?iAvzBJqScK
Je renomme Références en Réf et Tirage en Tir sinon rien ne marche je
ne sais pas pourquoi ?
je copie en A "collage spécial" valeur mes 1000 valeurs (qui sont
positives ou négatives)
J'incrémente en L la fonction =ALEA()
Et je retrouve en BCDEFGHIJK un tirage
Seulement si B a bien 100 valeurs (1000/10), C lui n'en a plus que
90...et K10.
Après plusieurs tentatives pour modifier $Lxx, il semble que la
limite se trouve en fait ailleurs mais je ne comprends pas.
Un éclaircissement s'il te plaît.


Je repose mon problème pour répondre à tes questions :

En A ce sont des valeurs (+ ou -) 1000 lignes ou plus toujours
divisible par 10.
Une fois posées je ne travaille que sur elles.
Il me faut impérativement 10 colonnes. BCDEFGHIJK sont donc les
tirages, c'est à dire la répartition aléatoire de A.
Par exemple 1000 lignes de A en 100 lignes sur BCDEFGHIJK.
Enfin tout comme dans le fichier que tu m'as indiqué, je dois pouvoir
multiplier les tirages (1000 pour une limite maximale) afin d'étudier
la distribution aléatoire (stats, courbe de Gauss etc....)

Peux-tu m'aider encore un peu

Merci

Stéphane


"Modeste" a écrit dans le message de news:
%
Bonsour®
STEPHANE wrote:
Sujet : étude de répartition aléatoire.
Je souhaiterais faire une simulation qui ne peux, je pense,
qu'être réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?


;o))) il ne faut pas etre si definitif ....
pour rester à ta portée ;o)))
une solution sans macro cela te convient-il ???
http://cjoint.com/?iAvzBJqScK

au regard des remarques précedentes quelles sont les variables ???
le nombre de données : OK
le nombre de colonnes (destination) ou le nombre de tirages par
colonne ? les solutions seront differentes (calcul préalable pour
répartition) en piece jointe solution pour 100 données 10 colonnes

--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042



--
n'oubliez pas les FAQ :
http://www.excelabo.net http://dj.joss.free.fr/faq.htm
http://www.faqoe.com http://faqword.free.fr
--
Feed Back
http://viadresse.com/?94912042






Avatar
Daniel
Bonsoir.
J'arrive sans doute après la bataille mais j'ai pondu une macro assez rapide
avec 30000 lignes :

Sub test()
Dim Ctr As Integer, Plage As Range, c As Range, Var As Integer, Lim As
Integer
Dim Ligne As Integer
Application.ScreenUpdating = False
Range("B1:M30000").ClearContents
Set Plage = Range("L1:L30000")
For Each c In Plage
c.Value = c.Row
Next c
Randomize
Lim = 30000
For i = 1 To 10
Do While Ctr < 300
Var = ((Lim - 1) * Rnd() + 1)
Ligne = Range("L1").Offset(Var - 1, 0).Value
Cells(Ligne, i + 1) = Cells(Var, 1)
Range("L1").Offset(Var - 1, 0).Delete xlShiftUp
Ctr = Ctr + 1
Lim = Lim - 1
Loop
Ctr = 0
Next i
Application.ScreenUpdating = True
End Sub

Cordialement.
Daniel
"STEPHANE" a écrit dans le message de news:
430eea3a$0$2519$
Bonjour Daniel,

Merci beaucoup de cette aide...très précieuse et qui devrait remplacer
efficacement mes méthodes empiriques.
La macro fonctionne parfaitement sur l'exemple donnée mais...

Deux questions complémentaires :

Question de curiosité
Comme je ne suis par certain de décrypter ta fonction correctement, la
répartition aléatoire fait appelle à une fonction mathématique ou c'est
une astuce de décalage ?

Question sur un problème de mise en ouvre étendu
Ma plage de valeur étudiée est supérieur à 100 lignes, elle peut
atteindre 30 000 lignes. J'ai fait un test avec ta macro en modifiant le
100 dans "Range("B1:K100")"et dans "Set Plage = Range("A1:A100")" par
1000 (pour voir). Je lance la macro, instantanément la répartition semble
se faire au moins sur la première page, mais le sablier reste bloquer et
finalement un message m'indique que le programme ne répond pas dès que je
tente de faire autre chose.
As-tu une idée d'ou vient le problème ?

Vraiment merci de ton aide.

Cordialement.
Stéphane.

"Daniel" a écrit dans le message de news:
uj$
Bonjour.
La macro suivante devrait le faire :
Sub Test()

Dim Plage As Range, c As Range, Compte(9) As Integer, Var As Integer
Range("B1:K100").ClearContents
Var = WorksheetFunction.CountA(Columns(2))
Set Plage = Range("A1:A100")
For Each c In Plage
For i = 2 To 11
Compte(i - 2) = WorksheetFunction.CountA(Columns(i))
Next i
Var = Int(Rnd() * 10) + 1
Do Until Compte(Var - 1) < 10
Var = Int(Rnd() * 10) + 1
Loop
c.Offset(0, Var).Value = c.Value
Next c
End Sub

Cordialement.
Daniel
"STEPHANE" a écrit dans le message de
news: 430e44f6$0$2522$
Bonsoir,

Sujet : étude de répartition aléatoire.

Je souhaiterais faire une simulation qui ne peux, je pense, qu'être
réalisée par macro, ce qui est hors de ma portée.
Peut-être pourriez-vous m'aider ?

J'ai en A une colonne de valeur dont le nombre de ligne peut varier mais
qui est toujours pair.
Ex: A1 à A100 j'ai en BCDEFGHIJK 10 colonne vides.

Je souhaite que les Valeurs en A1:A100 se répartissent de façon
totalement aléatoire, mais en même nombre, dans les colonnes BCDEFGHIJK,
à chaque lancement de la macro.
Je retrouverais donc dans mon exemple 10 valeurs dans chaque colonne
BCD...

C'est très simple à expliquer, mais il est probable que cela soit plus
complexe à réaliser...

Merci en tout cas de votre aide ou de vos infos.

Stéphane.













1 2 3