Supprimer lignes vides dans liste de validation

hypo78

XLDnaute Impliqué
Bonjour,
j'ai une liste de validation qui fait référence à une plage contenant des cellules vides, ces cellules vides ne sont pas toujours les mêmes, j'aurais aimé supprimer ces lignes mais seulement dans la liste de choix.
Merci d'avance pour votre aide
 

JeanMarie

XLDnaute Barbatruc
Re : Supprimer lignes vides dans liste de validation

Bonjour

Tu dois passer par des cellules intermédiaires, il n'est pas possible de le faire directement dans la liste de validation.

Place un fichier exemple de ton fichier sur le forum, pour t'expliquer la marche à suivre.

@+Jean-Marie
 

hypo78

XLDnaute Impliqué
Re : Supprimer lignes vides dans liste de validation

merci pour vos réponses rapides, je vais regarder le fichier joint tout de suite, mais j'ai constaté que si je lis mon fichier avec Openoffice, dans les listes de validation, il y a une case à cocher qui s'appelle "tri dans ordre croissant" et çà fait exactement ce dont j'ai besoin.
 

hypo78

XLDnaute Impliqué
Re : Supprimer lignes vides dans liste de validation

j'ai supprimer tous les onglets sauf le 1 et ma base, gardé que la partie qui nous intéresse et mon fichier fait maintenant 47ko donc je peux vous le mettre en pièce jointe.
J'ai appliqué la méthode DV sans doublons, çà fonctionne presque sauf qu'il me met #NOM?
Quelqu'un sait pourquoi??
merci d'avance
 

Pièces jointes

  • feuille de garde essai.xls
    47 KB · Affichages: 139
  • feuille de garde essai.xls
    47 KB · Affichages: 150
  • feuille de garde essai.xls
    47 KB · Affichages: 158

JCGL

XLDnaute Barbatruc
Re : Supprimer lignes vides dans liste de validation

Bonjour à tous,

Tu poses la formule dans un cellule ET tu valides par Ctrl +Maj + Enter
Là tu as mis le texte dans la formule

A+
 

Pièces jointes

  • JC feuille de garde essai.zip
    12.1 KB · Affichages: 120
Dernière édition:

hypo78

XLDnaute Impliqué
Re : Supprimer lignes vides dans liste de validation

j'ai supprimer tous les onglets sauf le 1 et ma base, gardé que la partie qui nous intéresse et mon fichier fait maintenant 47ko donc je peux vous le mettre en pièce jointe.
J'ai appliqué la méthode DV sans doublons, çà fonctionne presque sauf qu'il me met #NOM?
Quelqu'un sait pourquoi??
merci d'avance

Oups, j'avais fait un copier/merder, avec avec un beau copier/coller çà fonctionne à merveille.
Encore merci à tous
 

Pièces jointes

  • feuille de garde essai.xls
    46.5 KB · Affichages: 125
  • feuille de garde essai.xls
    46.5 KB · Affichages: 107
  • feuille de garde essai.xls
    46.5 KB · Affichages: 103

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Supprimer lignes vides dans liste de validation

Bonjour,

Voir PJ

Pour supprimer les vides seulement:

=INDEX(CHAMP;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(CHAMP;CHAMP;0)))*(CHAMP<>0)*(CHAMP<>"");EQUIV(CHAMP;CHAMP;0);"");LIGNE(INDIRECT("1:"&LIGNES(CHAMP)))))

JB
Formation Excel VBA JB
 

Pièces jointes

  • DVSansVides.zip
    12.2 KB · Affichages: 150
Dernière édition:

hypo78

XLDnaute Impliqué
Re : Supprimer lignes vides dans liste de validation

merci.
Maintenant je me suis servi de la liste compressée pour faire une recherchev, et j'aimerai refaire une nouvelle liste compressée par rapport à cette recherche et là çà ne fonctionne pas. Cà m'inscrit #nombre! dans toutes les cases. Une idée??
 

Pièces jointes

  • feuille de garde essai2.zip
    11.4 KB · Affichages: 57
  • feuille de garde essai2.zip
    11.4 KB · Affichages: 67
  • feuille de garde essai2.zip
    11.4 KB · Affichages: 64
Dernière édition:

JeanMarie

XLDnaute Barbatruc
Re : Supprimer lignes vides dans liste de validation

Bonjour tout le monde

Hypo, dans ton fichier que tu nous a transmis, tu avais une formule matricielle qui était fonctionnelle, sauf que le message d'erreur #NOMBRE! s'affiche quand les données sont épuisées.

Tu peux facilement supprimer ce message d'erreur :
1) modifie la référence de la plage nommée en CHAMP, en lui rajoutant une ligne, elle devient ='01'!$BH$4:$BH$34, ce qui fait 31 lignes
2) dans la cellule BH34 tape une espace
3) dans ta formule matricielle, on rajoute cette constante dedans
Code:
=INDEX(CHAMP;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(CHAMP;CHAMP;0)));SI((EQUIV(CHAMP;CHAMP;0)=LIGNE(INDIRECT("1:"&LIGNES(CHAMP))))*(CHAMP>0)*(CHAMP<>"");EQUIV(CHAMP;CHAMP;0);[B]31[/B]));LIGNE(INDIRECT("1:"&LIGNES(CHAMP)))))

Dans la formule JB, on peut faire la même chose. Et on peut supprimer un comparateur
Code:
=INDEX(CHAMP;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(CHAMP;CHAMP;0)))*(CHAMP>"0");EQUIV(CHAMP;CHAMP;0);[B]31[/B]);LIGNE(INDIRECT("1:"&LIGNES(CHAMP)))))

Mais c'est pas le sujet de mon post. Autre proposition sur une des possibilités de la fonction INDEX, en utilisant sa deuxième syntaxe. JC c'est le côté didactique, lol.

Tirée de l'aide d'excel
Syntaxe 2 (référence)

Renvoie la référence de la cellule située à l'intersection d'une ligne et d'une colonne déterminées. Si l'argument référence est une sélection non adjacente, vous pouvez choisir la sélection sur laquelle la fonction doit être exécutée.
Syntaxe
INDEX(réf;no_lig;no_col;no_zone)
réf est une référence à une ou plusieurs plages de cellules.
• Si vous entrez une sélection non adjacente comme argument réf, mettez cet argument entre parenthèses.
• Si chaque zone de l'argument référence contient une seule ligne ou colonne, l'argument no_lig ou no_col, respectivement, devient facultatif. Par exemple, dans le cas d'un argument référence à une seule ligne, utilisez la fonction INDEX(réf;;no_col).
no_lig est le numéro de la ligne de réf à partir de laquelle une référence doit être renvoyée.
no_col est le numéro de la colonne de réf à partir de laquelle une référence doit être renvoyée.
no_zone sélectionne la plage de l'argument réf pour laquelle l'intersection de no_col et no_lig doit être renvoyée. La première zone sélectionnée ou entrée porte le numéro 1, la deuxième, le numéro 2, et ainsi de suite. Si l'argument no_zone est omis, la fonction INDEX utilise la zone numéro 1.

• Par exemple, si l'argument réf décrit les cellules (A1:B4;D1:E4;G1:H4), l'argument no_zone 1 correspond à la plage A1:B4, l'argument no_zone 2, à la plage D1:E4 et l'argument no_zone 3, à la plage G1:H4.
Remarques
• Lorsque les arguments réf et no_zone ont défini une plage précise, les arguments no_lig et no_col permettent d'identifier une cellule spécifique : l'argument no_lig 1 représente la première ligne de la plage, l'argument no_col 1, la première colonne, et ainsi de suite. La référence renvoyée par la fonction INDEX est celle de l'intersection des arguments no_lig et no_col.
• Si vous spécifiez la valeur 0 (zéro) pour l'argument no_lig ou no_col, la fonction INDEX renvoie respectivement la référence de la colonne ou de la ligne entière.
• Les arguments no_lig, no_col et no_zone doivent pointer sur une cellule appartenant à l'argument référence. Sinon, la fonction INDEX renvoie la valeur d'erreur #REF! Si les arguments no_lig et no_col sont omis, la fonction INDEX renvoie la zone de l'argument référence définie par l'argument no_zone.
• Le résultat de la fonction INDEX est une référence et sera interprété comme tel par les autres formules. Selon la formule, la valeur renvoyée par la fonction INDEX peut être utilisée comme une référence ou une valeur. Par exemple, la formule CELLULE("largeur";INDEX(A1:B2;1;2)) est équivalente à la formule CELLULE("largeur";B1). La fonction CELLULE utilise la valeur renvoyée par la fonction INDEX comme une référence de cellule. Par ailleurs, une formule telle que 2*INDEX(A1:B2;1;2) traduit la valeur renvoyée par la fonction INDEX en nombre dans la cellule B1.

On peut donc définir une référence multiple de plages discontinues, gros inconvénient ces plages doivent être obligatoirement sur la même feuille.
Les plages peuvent avoir des dimensions différentes.

Dans le fichier, j'ai remplacé le contenu de la colonne BH par les positions Zone+(N°Ligne/100). Ces valeurs seront ensuite décompressées dans la formule index.

Code:
=INDEX((F4:O13;Y4:AH13;AR4:BA13;A1);MOD(PETITE.VALEUR(CHAMP;LIGNE(1:30));1)*100;0;ENT(PETITE.VALEUR(CHAMP;LIGNE(1:30))))

A1 évite la gestion d'erreur #NOMBRE! et, la chaîne " " le retour de la valeur 0 par la formule.

Voir le fichier....

La formule de validation de la cellule E19 est légèrement modifiée.

@+Jean-Marie

PS : Si vous pouviez à l'avenir mettre dans vos posts les formules dans les bornes
Code:
 [/ code], cela éviterai d'ouvrir vos fichiers pour voir vos propositions.
 

Pièces jointes

  • feuille de garde essai2.zip
    12.7 KB · Affichages: 95
  • feuille de garde essai2.zip
    12.7 KB · Affichages: 94
  • feuille de garde essai2.zip
    12.7 KB · Affichages: 102

JeanMarie

XLDnaute Barbatruc
Re : Supprimer lignes vides dans liste de validation

Re...

Ton fichier a un problème lors de la décompression.

Je pense que tu devrais pourvoir régler le message d'erreur, en appliquant ce que je mettais en début de mon précédent post.

@+Jean-Marie
 

JeanMarie

XLDnaute Barbatruc
Re : Supprimer lignes vides dans liste de validation

Re...

Pour information, la valeur #NOMBRE! retournée par la première formule, n'est pas de type texte, mais de type erreur (type =16)

Soit tu supprimes à la base ce message, ou tu utilises la fonction ESTERR(...)
Je n'ai pas compris ce que tu voulais obtenir dans la dernière colonne de ton tableau.

@+Jean-Marie
 

Discussions similaires

Statistiques des forums

Discussions
312 184
Messages
2 086 007
Membres
103 088
dernier inscrit
Psodam