Microsoft 365 Envoie de données aléatoirement.

GClaire

XLDnaute Occasionnel
Supporter XLD
Hello le fofo

Ce que j'essaye de faire

1710137530837.png


Et d'envoyer les données d'une plage de cellule vers une autre mais aléatoirement.

Avec de l'aide j'ai tenté ceci, mais en vain, je me retrouve avec des doublons.

J'aurais une autre question sur ce fichier, mais je voudrais résoudre cela avant.

Je vous remercie par avance.

Passez une bonne et belle journée.

G'Claire
 

Pièces jointes

  • Fichier.xlsm
    24.9 KB · Affichages: 3
  • Fichier.xlsm
    24.9 KB · Affichages: 1

GClaire

XLDnaute Occasionnel
Supporter XLD
CC Sylvanu

Merci de te pencher sur mon fichier.

Je viens de tester, ton fichier

C'est tout a fait cela, mais dans l'autre sens, lol

On analyse la plage K3:p, pour envoyer vers A3:G, j'ai donc essayé de modifier par moi même, ce qui donnerai :

VB:
Sub Distribue()
DL = [K10000].End(xlUp).Row
Range("B3:G" & DL).ClearContents
N = Application.CountIf([K3:P3], "*")
T = Range("K3:P" & DL)
ReDim Sortie(1 To UBound(T), 1 To N)
For i = 1 To UBound(T)
    Alea = RndList(N)
    For j = 1 To N
        Sortie(i, j) = T(i, Alea(j, 1))
    Next j
Next i
[B3].Resize(UBound(Sortie, 1), UBound(Sortie, 2)) = Sortie
End Sub
Function RndList(N)
ReDim T(1 To N, 1 To 2): Randomize
For i = 1 To N: T(i, 1) = i: T(i, 2) = Rnd: Next i
For i = 1 To N
    For j = i To N
        If T(i, 2) > T(j, 2) Then
            Buffer = T(i, 1): T(i, 1) = T(j, 1): T(j, 1) = Buffer
            Buffer = T(i, 2): T(i, 2) = T(j, 2): T(j, 2) = Buffer
        End If
    Next j
Next i
RndList = T
End Function

Es-tu d'accord avec cette modification?

Merci, G'Claire
 

GClaire

XLDnaute Occasionnel
Supporter XLD
Re,
La modif me semble correcte, le test est concluant.
Pour la notation, vous pouvez faire en H3 :
VB:
=SI(B3=K3;"A";SI(C3=K3;"B";SI(D3=K3;"C";SI(E3=K3;"D"))))
et les couleurs peuvent se faire aisément par MFC.
CC

Bon j'ai voulu tenter de mettre cette formule avec l'automation du reste du code, mais j'ai de suite une erreur dans VBA

Fin d'instruction attende en cela me surligne B3

VB:
Range("H3:H" & DL).formula = "SI("B3:B" & DL="K3:K"& DL;"A";SI("C3:C" & DL="K3:K"& DL;"B";SI("D3:D"& DL="K3:K"& DL;"C";SI("E3:E"& DL="K3:K"& DL;"D"))))"

Ou est ma boulette?

Merci

G'Claire
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re, bonsoir Danielco,
Ou est ma boulette?
1- Si la formule est en anglais, on met .formula, si votre XL est en français et que vous voulez entrer la formule en français on met .formulalocal
2- Il faut doublet les guillemets à chaque fois.
3-Je ne comprend pas votre formule. Que voudrait dire : SI("B3:B25" ="K3:K25".. ?
4- Si vous voulez mettre exactement la même formule que la mienne, vous pouvez mettre :
VB:
Range("H3:H" & DL).FormulaR1C1 = "=IF(RC[-6]=RC[3],""A"",IF(RC[-5]=RC[3],""B"",IF(RC[-4]=RC[3],""C"",IF(RC[-3]=RC[3],""D""))))"
Vous l'obtenez facilement via l'enregistreur de macro.
L'avantage de la laisser en anglais est qu'elle est compatible de tout XL, français ou non.
 

GClaire

XLDnaute Occasionnel
Supporter XLD
CC sylvanu, le fofo

Je viens de me rendre compte d'un truc bizard.

Dans ce fichier (Un allégé de celui que je tente de faire a mon copain) ou j'ai repris ton code

Les données sont a changer dans la feuille "Questions", et la feuille "Mélange", les récupère par des formules comme cela "=Questions!C2"; "=Questions!D2" etc... (Il y aura toujours ce format 3 groupes de 10 questions)

Donc si dans la feuille "Questions" la première question, les réponses sont que des nombres, et bien cela plante et j'ai ce message d'erreur.

1712091804057.png


J'ai mis des lettres et copier coller cette ligne sans lettre plus bas et bien cela fonctionne.

Une idée?

Passez une bonne soirée.

Merci

G'Claire
 

Pièces jointes

  • Grille de quizz MARIES V01AA.xlsm
    80.5 KB · Affichages: 1

Discussions similaires

Réponses
3
Affichages
202
Réponses
7
Affichages
349

Statistiques des forums

Discussions
312 214
Messages
2 086 311
Membres
103 175
dernier inscrit
abcc