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
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas