Excel : Sélection aléatoire de cellules sauf cellules vides

Fermé
Wombat30 Messages postés 3 Date d'inscription mardi 4 novembre 2014 Statut Membre Dernière intervention 5 novembre 2014 - 4 nov. 2014 à 13:50
Wombat30 Messages postés 3 Date d'inscription mardi 4 novembre 2014 Statut Membre Dernière intervention 5 novembre 2014 - 5 nov. 2014 à 22:52
Et rebonjour tout le monde.

Toujours dans le cadre de mon générateur de personnages, je souhaite le faire sur 2 feuilles : la 1ère qui affiche les résultats et la seconde qui contient tous les tableaux (noms, pays, sexes, traits de personnalités...) répartis en colonnes.

Pour le moment, je m'intéresse à la sélection aléatoire des cellules avec cette fonction :
=INDIRECT(ADRESSE(ALEA.ENTRE.BORNES(2;6);ALEA.ENTRE.BORNES(1;1))) et elle marche très bien.

Son point négatif est que si je rajoute des cellules à un tableau, je dois retourner modifier la formule pour mettre à jour le nombre de cellules qu'elle doit utiliser. Et s'il y a des cellules vides dans le tableau, elle les prends en compte et les affiches.
Bref : elle prend en compte les cellules vides.

Comment je peux faire pour qu'elle les exclues?

PS : je suis sur Excel 2010, en version française.

Merci d'avance pour votre aide :)
A voir également:

4 réponses

Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
4 nov. 2014 à 14:23
Bonjour,

Plusieurs possibilités, en fonction du contenu de tes cellules de la colonne A
si tes valeurs sont toutes numérique
=INDIRECT(ADRESSE(ALEA.ENTRE.BORNES(2;EQUIV(9^9;A:A;1));ALEA.ENTRE.BORNES(1;1)))

par contre si tes cellules sont texte ou mixte il vaudrait mieux utiliser cette formule matricielle qu'il faudra confirmer en cliquant sur les 3 touches du clavier Ctrl, Shift et Entrée, si tu fais bien la formule se placera entre {}

=INDIRECT(ADRESSE(ALEA.ENTRE.BORNES(2;MAX(SI(NON(ESTVIDE(A1:A1000));LIGNE(A1:A1000))));ALEA.ENTRE.BORNES(1;1)))

0
Wombat30 Messages postés 3 Date d'inscription mardi 4 novembre 2014 Statut Membre Dernière intervention 5 novembre 2014
5 nov. 2014 à 10:40
Salut Mike-31.

En effet, y a que du texte dans mes cellules.
Ta fonction marche plutôt bien mais me renvoie un 0 (case vide) de temps en temps.

A quoi sert le "A" devant le numéro de ligne?
Pour un exemple, je bosse sur la colonne U (21), si je change les A par des U, la formule prend plus de 0 ou plante.
0
Mike-31 Messages postés 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
5 nov. 2014 à 10:53
Re,

le A comme tu dis est l'index colonne donc A1:A1000 correspond à la première colonne
dans ton cas si tes valeurs sont en colonne U, la formule devient

=INDIRECT(ADRESSE(ALEA.ENTRE.BORNES(2;MAX(SI(NON(ESTVIDE(U1:U1000));LIGNE(U1:U1000))));ALEA.ENTRE.BORNES(1;1)))

si ta formule renvoie 0 c'est qu'elle n'est pas déclarée en matricielle, clic sur la cellule contenant ta première formule, elle va apparaître dans la barre des formules juste au dessus des entêtes de colonnes
clic dans la barre des formules n'importe ou sur la formule et clic en même temps sur les 3 touches du clavier Ctrl, Shift et Entrée

la formule se placera entre {}

comme ceci
{=INDIRECT(ADRESSE(ALEA.ENTRE.BORNES(2;MAX(SI(NON(ESTVIDE(U1:U1000));LIGNE(U1:U1000))));ALEA.ENTRE.BORNES(1;1)))}
0
Wombat30 Messages postés 3 Date d'inscription mardi 4 novembre 2014 Statut Membre Dernière intervention 5 novembre 2014
5 nov. 2014 à 22:52
Testée sous open office calc, cette formule marche mais avec la colonne A, pas la U (normalement, le dernier point : nommé ALEA.ENTRE.BORNES(1;1) dans mon exemple définit la colonne).

Si je remplace le 1;1 par 21;21 et/ou les U par des A, la formule renvoit soit des 0 soit une erreur.

Comment la régler pour qu'elle touche la colonne de mon choix?
0