Autres excel vba cellule aléatoires non vides

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 !

gilles72

XLDnaute Junior
bonjour,
SOUS EXCEL 2007
novice en vba,
depuis une cellule en C1, par double click,
Je souhaite extraire un des mots, de façon aléatoire,
Depuis une liste de 2000 mots dans une colonne B
le problème , est que dans cette liste il y a des cellules vides que je souhaite éviter
comment indiquer que je ne souhaite que des cellules non vides?
voici le code que j'ai démarré:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Range("c1").Value = Cells(Int(Rnd * 2000) + 1, 1).Value
End Sub

merci si quelqu'un a la gentllesse de m'éclairer un peu
Gilles
 
Bonjour,

Essaie :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
  Dim Tbl As Variant, Ind As Long
  Randomize
  Cancel = True
  Tbl = [B:B].SpecialCells(xlCellTypeConstants)
  Ind = Application.RandBetween(1, UBound(Tbl))
  Range("A1").Value = Application.Index(Tbl, Ind)
End Sub

(A condition que les cellules de la colonne B contienne des constantes et non des formules.)

Daniel
 
Bonjour,

Essaie :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
  Dim Tbl As Variant, Ind As Long
  Randomize
  Cancel = True
  Tbl = [B:B].SpecialCells(xlCellTypeConstants)
  Ind = Application.RandBetween(1, UBound(Tbl))
  Range("A1").Value = Application.Index(Tbl, Ind)
End Sub

(A condition que les cellules de la colonne B contienne des constantes et non des formules.)

Daniel
Bonjour,

Essaie :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
  Dim Tbl As Variant, Ind As Long
  Randomize
  Cancel = True
  Tbl = [B:B].SpecialCells(xlCellTypeConstants)
  Ind = Application.RandBetween(1, UBound(Tbl))
  Range("A1").Value = Application.Index(Tbl, Ind)
End Sub

(A condition que les cellules de la colonne B contienne des constantes et non des formules.)

Daniel
Un grand merci pour la rapidité. ça fonctionne nickel. Je dois creuser ça car je ne comprends pas bien le code . Encore merci
 
J'ai mis des explications en commentaires :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim Tbl As Variant, Ind As Long
  'Initialise le générateur de nombres aléatoires
  Randomize
  'Sort la cellule du mode modification (initié par le double clic)
  Cancel = True
  'remplit Tbl avec les cellules de la colonne B contenant une valeur
  Tbl = [B:B].SpecialCells(xlCellTypeConstants)
  'C'est la fonction ALEA.ENTRE.BORNES
  Ind = Application.RandBetween(1, UBound(Tbl))
  'FONCTION INDEX
  Range("A1").Value = Application.Index(Tbl, Ind)
End Sub

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

Discussions similaires

Réponses
4
Affichages
513
Réponses
6
Affichages
510
Réponses
4
Affichages
425
Réponses
2
Affichages
699
Retour