Mauvaise execution d'une macro
J
Bonjour
Dans un module j'ai 9 macros.
Quand à l'aide d'un bouton j’exécute la macro bmelanger ça fonctionne bien
si j’exécute la macro dmelanger avec un autre bouton cela me recopie le résultat de bmelanger
Ou se situe mon problème?
Sub bmelanger()
Range("B3:B12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([b3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[b3].Resize(UBound(t)) = t
End Sub
Sub dmelanger()
Range("D3:D12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([d3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[d3].Resize(UBound(t)) = t
End Sub
Sub fmelanger()
Range("f3:f12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([f3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[f3].Resize(UBound(t)) = t
End Sub
Sub hmelanger()
Range("h3:h12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([h3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[h3].Resize(UBound(t)) = t
End Sub
Sub jmelanger()
Range("j3:j12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([j3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[j3].Resize(UBound(t)) = t
End Sub
Sub lmelanger()
Range("l3:ll12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([l3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[l3].Resize(UBound(t)) = t
End Sub
Sub nmelanger()
Range("n3:n12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([n3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[n3].Resize(UBound(t)) = t
End Sub
Sub pmelanger()
Range("p3:p12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([p3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[p3].Resize(UBound(t)) = t
End Sub
Sub rmelanger()
Range("r3:r12").Select
Selection.ClearContents
Dim t, i&, N&, aux
t = Range([r3], Cells(Rows.Count, 1).End(xlUp))
Randomize
For i = 1 To UBound(t): N = 1 + Int(Rnd * UBound(t)): aux = t(i, 1): t(i, 1) = t(N, 1): t(N, 1) = aux: Next
[r3].Resize(UBound(t)) = t
End SubJ
Problème résolu
t = Range([b3], Cells(Rows.Count, 1).End(xlUp)) a chaque macro il faut modifier de 2 Count, 1 pour dmelanger il faut mettre 3re,
c'est peut-être plus facile d'avoir une macro paramétrisée
Sub M_melanger(Plage As Range)
Dim t, i&, N&, aux
With Plage
t = .Value
Randomize
For i = 1 To UBound(t)
N = 1 + Int(Rnd * UBound(t))
aux = t(i, 1)
t(i, 1) = t(N, 1)
t(N, 1) = aux
Next
Plage.Value = t
End With
End Sub
Sub dmelanger()
M_melanger Range("D3:D12")
End Sub
Sub fmelanger()
M_melanger Range("f3:f12")
End Sub
Sub hmelanger()
M_melanger Range("h3:h12")
End Sub
etc