Copier et coller en-dessous

Chris1800

XLDnaute Nouveau
Bonjour à tous,

J'ai fait une petite macro qui me génère des nombres aléatoires que je souhaite présenter dans les cellules D8 et E8 dans mon exemple ci-joint.

Ce que je souhaiterais ajouter, c'est une commande qui me pose les nouveaux chiffres tirés en-dessous des autres, à chaque fois que je clique sur le bouton.

Si vous parvenez à m'aider, ça serait génial !!

Merci d'avance.
 

Fichiers joints

don_pets

XLDnaute Occasionnel
Hello,

Essaie ceci
VB:
Range("A18:B18").Copy
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
 

Chris1800

XLDnaute Nouveau
Hello,

C'est absolument parfait, merci ! Génial même !

Je ne savais pas de quel côté chercher.

Encore merci et une belle journée.
 

Staple1600

XLDnaute Barbatruc
Bonjour Chris1800, don_pets

Histoire de varier les plaisirs, deux autres écritures possibles ;)
La première macro ne passe pas par le copier/coller
VB:
Sub Simili_Copie()
Cells(Rows.Count, 1).End(3).Resize(, 2).Offset(1, 0).Value = [A18:B18].Value
End Sub
Dans celui-ci, la liste s'incrémente directement.
VB:
Sub aléatoireV2()
Cells(Rows.Count, 1).End(3).Offset(1, 0).Value = Int(([A9] - 1 + 1) * Rnd) + 1
Cells(Rows.Count, 2).End(3).Offset(1, 0).Value = Int(([B9] - 1 + 1) * Rnd) + 1
End Sub
 

Staple1600

XLDnaute Barbatruc
Re,

Et une dernière pour le fun ;)
Code:
Sub aléatoireV3()
'Ligne ci-dessous juste pour un clin d'oeil ;-), et parfaitement futile donc suppressible
Randomize CInt(Asc("Staple") + 1517)

'Une dernière écriture pour la route
Cells(Rows.Count, 1).End(3).Resize(, 2).Offset(1, 0) = Array(Int(([A9] - 1 + 1) * Rnd) + 1, Int(([B9] - 1 + 1) * Rnd) + 1)
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @Chris1800, @don_pets, @Staple1600,

Une p'tite dernière ? Une macro qui remplit les quatre cellules en un coup et qui commence à la ligne 8 même si les colonnes D et E sont vides.
VB:
Sub EncoreUneAutre()
With Application
  Union(Range("a18"), Cells(.Max(8, Cells(Rows.Count, "d").End(xlUp).Row + 1), "d")) = .RandBetween(1, [A9])
  Union(Range("b18"), Cells(.Max(8, Cells(Rows.Count, "d").End(xlUp).Row), "e")) = .RandBetween(1, [B9])
End With
End Sub
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Bonjour mapomme ;)

Dans la macro initiale, ils n'étaient que deux ;) même si le message initial parlait de quatre cellules.
Et comme le demandeur s'est satisfait de la réponse de don_pets.
C'est absolument parfait, merci ! Génial même !
j'en ai déduit qu'on pouvait oublier ce qui passe en colonne D et E ;)
 
Dernière édition:

Chris1800

XLDnaute Nouveau
Merci pour vos réponses !
Effectivement la réponse de don_pets me convenait parfaitement. Mais cette nouvelle version offre l'avantage de me permettre de mieux comprendre l'utilisation de cette ligne de commande.
Donc un grand merci à vous tous pour votre aide !!!!!
 

Staple1600

XLDnaute Barbatruc
Bonjour

Chris1800
[taquinerie du lundi matin]
La solution de don_pets comme la mienne ne tenaient pas compte de ce que tu disais
que je souhaite présenter dans les cellules D8 et E8 dans mon exemple ci-joint.
Et ta macro dans ton fichier exemple n'allait pas chatouiller ces deux cellules.
Seul ma pomme a intégrer ces cellules dans sa macro.
Or donc comment parfaitement don_pets et moi pouvions coller au cahier des charges du message#1?
;)
[/taquinerie du lundi matin]
 

Chris1800

XLDnaute Nouveau
:) C'est vrai. Je m'étais accommodé de cette situation, car elle m'aidait déjà énormément !!! Mais là, c'est carrément le graal !!
 

job75

XLDnaute Barbatruc
Bonjour Chris1800, don_pets, JM, mapomme,

Le fichier du post #1 est clair : en D8 et E8 on récupère par formules les derniers nombres aléatoires tirés, donc la liste est en colonnes A et B.

D'où le fichier joint et cette macro :
VB:
Sub MesAleas()
[A18].Offset(IIf([A18] = "", 0, Application.Match(9 ^ 9, [A:A]) - 17)) = Application.RandBetween(1, [A9])
[B18].Offset(IIf([A18] = "", 0, Application.Match(9 ^ 9, [A:A]) - 18)) = Application.RandBetween(1, [B9])
End Sub
Formule en D8 à tirer sur E8 =INDEX(A:A;MAX(EQUIV(9^9;$A:$A);18))

A+
 

Fichiers joints

Staple1600

XLDnaute Barbatruc
Bonjour job75

Je n'avais vu que le code VBA présent dans le fichier exemple du message#1
Pas les formules existantes en D8 et E8.
Mea culpa
 

Haut Bas