Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier et coller en-dessous

  • Initiateur de la discussion Initiateur de la discussion Chris1800
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Chris1800

Guest
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.
 

Pièces jointes

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
 
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
 
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
 

Pièces jointes

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 !!!!!
 
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]
 
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+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
300
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…