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.
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.
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.
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.
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.
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.
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.
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" <stephane-lalut@numericable.fr> a écrit dans le message de news:
430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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.
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.
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.
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" <stephane-lalut@numericable.fr> a écrit dans le message de
news: 430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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.
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.
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.
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" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj$zHyhqFHA.240@tk2msftngp13.phx.gbl...
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" <stephane-lalut@numericable.fr> a écrit dans le message de
news: 430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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.
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.
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éepar 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
quiest 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.
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" <stephane-lalut@numericable.fr> a écrit dans le message de
news:430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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.
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éepar 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
quiest 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. Non, c'est une question de décalage.
2. La macro n'est pas conçue pour de grandes plages de données. Elle
calcule la colonne de manière aléatoire, puis vérifie que le nombre de
valeurs de cette colonne est inférieure à 10, sinon, elle recommence le
processus. Pour de grandes plages, ça peut être très long. Il faut
réécrire la macro. Le plus simple est de travailler colonne après colonne
et de choisir aléatoirement les 10 cellules à copier.
Je dois m'absenter pour une bonne partie de l'après-midi. Si personne n'a
répondu, je la reprendrai.
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. Non, c'est une question de décalage.
2. La macro n'est pas conçue pour de grandes plages de données. Elle
calcule la colonne de manière aléatoire, puis vérifie que le nombre de
valeurs de cette colonne est inférieure à 10, sinon, elle recommence le
processus. Pour de grandes plages, ça peut être très long. Il faut
réécrire la macro. Le plus simple est de travailler colonne après colonne
et de choisir aléatoirement les 10 cellules à copier.
Je dois m'absenter pour une bonne partie de l'après-midi. Si personne n'a
répondu, je la reprendrai.
Cordialement.
Daniel
"STEPHANE" <stephane-lalut@numericable.fr> a écrit dans le message de
news: 430eea3a$0$2519$a3f2974a@nnrp1.numericable.fr...
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" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj$zHyhqFHA.240@tk2msftngp13.phx.gbl...
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" <stephane-lalut@numericable.fr> a écrit dans le message de
news: 430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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. Non, c'est une question de décalage.
2. La macro n'est pas conçue pour de grandes plages de données. Elle
calcule la colonne de manière aléatoire, puis vérifie que le nombre de
valeurs de cette colonne est inférieure à 10, sinon, elle recommence le
processus. Pour de grandes plages, ça peut être très long. Il faut
réécrire la macro. Le plus simple est de travailler colonne après colonne
et de choisir aléatoirement les 10 cellules à copier.
Je dois m'absenter pour une bonne partie de l'après-midi. Si personne n'a
répondu, je la reprendrai.
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.
Oula,
à écrire c'est difficile. Y-a-t-il pas moyen de contourner ce code en :
- recopiant ta colonne A en B
- dans B : pour compteur = 1 à 500 : échanger de place des celulles 2 à 2
dont le choix est fait à partir de la fonction aléatoire (ex : B2 devient
B30
et B30 devient B2)
En gros, ca consiste en la recopie des données puis à mettre un grand coup
de shaker (comme ca on contourne la difficulté). pour le compteur de 1 à
500,
tu peux même mettre plus gros si tu trouves que l'on n'a pas assez secouer
!
Philippe.
Philippe.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.
Oula,
à écrire c'est difficile. Y-a-t-il pas moyen de contourner ce code en :
- recopiant ta colonne A en B
- dans B : pour compteur = 1 à 500 : échanger de place des celulles 2 à 2
dont le choix est fait à partir de la fonction aléatoire (ex : B2 devient
B30
et B30 devient B2)
En gros, ca consiste en la recopie des données puis à mettre un grand coup
de shaker (comme ca on contourne la difficulté). pour le compteur de 1 à
500,
tu peux même mettre plus gros si tu trouves que l'on n'a pas assez secouer
!
Philippe.
Philippe.
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" <stephane-lalut@numericable.fr> a écrit dans le message de
news:
430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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.
Oula,
à écrire c'est difficile. Y-a-t-il pas moyen de contourner ce code en :
- recopiant ta colonne A en B
- dans B : pour compteur = 1 à 500 : échanger de place des celulles 2 à 2
dont le choix est fait à partir de la fonction aléatoire (ex : B2 devient
B30
et B30 devient B2)
En gros, ca consiste en la recopie des données puis à mettre un grand coup
de shaker (comme ca on contourne la difficulté). pour le compteur de 1 à
500,
tu peux même mettre plus gros si tu trouves que l'on n'a pas assez secouer
!
Philippe.
Philippe.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. Non, c'est une question de décalage.
2. La macro n'est pas conçue pour de grandes plages de données. Elle
calcule la colonne de manière aléatoire, puis vérifie que le nombre de
valeurs de cette colonne est inférieure à 10, sinon, elle recommence le
processus. Pour de grandes plages, ça peut être très long. Il faut
réécrire la macro. Le plus simple est de travailler colonne après colonne
et de choisir aléatoirement les 10 cellules à copier.
Je dois m'absenter pour une bonne partie de l'après-midi. Si personne n'a
répondu, je la reprendrai.
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. Non, c'est une question de décalage.
2. La macro n'est pas conçue pour de grandes plages de données. Elle
calcule la colonne de manière aléatoire, puis vérifie que le nombre de
valeurs de cette colonne est inférieure à 10, sinon, elle recommence le
processus. Pour de grandes plages, ça peut être très long. Il faut
réécrire la macro. Le plus simple est de travailler colonne après colonne
et de choisir aléatoirement les 10 cellules à copier.
Je dois m'absenter pour une bonne partie de l'après-midi. Si personne n'a
répondu, je la reprendrai.
Cordialement.
Daniel
"STEPHANE" <stephane-lalut@numericable.fr> a écrit dans le message de
news: 430eea3a$0$2519$a3f2974a@nnrp1.numericable.fr...
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" <dZZZcolardelle@free.fr> a écrit dans le message de news:
uj$zHyhqFHA.240@tk2msftngp13.phx.gbl...
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" <stephane-lalut@numericable.fr> a écrit dans le message de
news: 430e44f6$0$2522$a3f2974a@nnrp1.numericable.fr...
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. Non, c'est une question de décalage.
2. La macro n'est pas conçue pour de grandes plages de données. Elle
calcule la colonne de manière aléatoire, puis vérifie que le nombre de
valeurs de cette colonne est inférieure à 10, sinon, elle recommence le
processus. Pour de grandes plages, ça peut être très long. Il faut
réécrire la macro. Le plus simple est de travailler colonne après colonne
et de choisir aléatoirement les 10 cellules à copier.
Je dois m'absenter pour une bonne partie de l'après-midi. Si personne n'a
répondu, je la reprendrai.
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.
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.
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.
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.