XL 2010 Supprimer lignes vides dans validation de données

Orson83

XLDnaute Impliqué
Bonjour la communauté XLD,
J'aurai besoin de votre aide pour supprimer des lignes vides dans une liste de validation de données (1000 lignes, mais 20 renseignées). Voici la formule :
Code:
=INDIRECT("TabRecap[Locataire]")
Cette formule fait appel à un tableau structuré "TabRecap" dont l'en-tête se nomme "Locataire".
Avez-vous une solution à me proposer ?
Merci pour votre aide.
Je ne pense pas qu'un fichier Excel en PJ soit nécessaire, sinon, je pourrais en fournir un.
PS : je ne peux pas réduire la hauteur de mon TS. De plus, cocher la case "Ignorer les lignes" vides ne fonctionne pas.
Orson83
 
Solution
Bonjour Orson, ToofatBoy, Job,
Un essai en PJ avec :
VB:
Sub SupLigVides()
    Application.ScreenUpdating = False
    Dim Nlig%, N%
    Nlig = [TabRecap].Rows.Count
    For N = Nlig To 1 Step -1
        If [TabRecap[Locataire]].Item(N) = "" Then [TabRecap].ListObject.ListRows(N).Delete
    Next N
End Sub
Je ne pense pas qu'un fichier Excel en PJ soit nécessaire, sinon, je pourrais en fournir un.
Ben si, ça évite d'en recréer un. ;)

sylvanu

XLDnaute Barbatruc
Supporter XLD
Y aurait-il quelque chose à modifier en raison de mon dernier message dans le post#14 ?
En fait je ne comprends plus :
Vous demandez au post #1 de "supprimer des lignes vides", puis en parlant du tableau "Je l'ai ensuite redimensionné "
Si on supprime des lignes, cela le réduit, non ?
Je remarque juste que mon clavier numérique se verrouille
Je ne vois pas comment mes trois lignes de code peuvent verrouiller votre clavier.

Si depuis le début vous aviez fourni un fichier test ainsi que l'attendu, vous auriez évitez de perdre votre temps ... et le notre. :)
 

Orson83

XLDnaute Impliqué
En fait je ne comprends plus :
Vous demandez au post #1 de "supprimer des lignes vides", puis en parlant du tableau "Je l'ai ensuite redimensionné "
Si on supprime des lignes, cela le réduit, non ?

Je ne vois pas comment mes trois lignes de code peuvent verrouiller votre clavier.

Si depuis le début vous aviez fourni un fichier test ainsi que l'attendu, vous auriez évitez de perdre votre temps ... et le notre. :)
Message reçu @sylvanu et merci @job75 pour ce râteau (je plaisante :)).
 

TooFatBoy

XLDnaute Barbatruc
En fait je ne comprends plus :
Vous demandez au post #1 de "supprimer des lignes vides", puis en parlant du tableau "Je l'ai ensuite redimensionné "
Si on supprime des lignes, cela le réduit, non ?
En fait il ne veut pas utiliser son TS normalement :

- il veut laisser des lignes vides (à cause de formules qui remplissent le TS, si j'ai bien compris...), et il veut utiliser le contenu d'une des colonnes de ce TS comme source d'une liste de choix,

- mais comme il y a ces fameuses lignes vides inutiles (et qu'il veut les garder...), il obtient une liste de choix avec des items vides.

Ce sont ces items vides qu'il veut supprimer.
 

job75

XLDnaute Barbatruc
Voyez le fichier joint et cette macro dans le code de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, liste(), i&, x$, n&
tablo = [TabRecap].Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(tablo)
    x = CStr(tablo(i, 1))
    If x <> "" Then
        ReDim Preserve liste(n) 'base 0
        liste(n) = x
        n = n + 1
    End If
Next
With [C2].Validation
    .Delete 'RAZ
    .Add xlValidateList, Formula1:=Join(liste, ",")
End With
End Sub
La liste de validation se crée en dur en cellule C2 quand on modifie une cellule quelconque.
 

Pièces jointes

  • Liste(1).xlsm
    17.3 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Pas sûr que ce soit l'idée du siècle...
CousinHub, s'il vous plait, faites nous profiter de vos connaissances, et partagez un fichier avec nous.
C'est l'essence même d' XLD de partager.

En PJ une solution sans VBA juste avec ces deux formules :
Code:
En matriciel :
=SIERREUR(INDEX(TabRecap[[#Tout];[Locataire]];PETITE.VALEUR(SI(FREQUENCE(SI(TabRecap[[#Tout];[Locataire]]<>"";EQUIV(TabRecap[[#Tout];[Locataire]];TabRecap[[#Tout];[Locataire]];0)); LIGNE(TabRecap[[#Tout];[Locataire]])-LIGNE(Feuil1!$G$1)+1);LIGNE(TabRecap[[#Tout];
Pour la liste déroulante :
=DECALER(Locataire0;0;0;99-NB.SI(Locataires;""))
 

Pièces jointes

  • SupLigVides V3.xlsx
    12.6 KB · Affichages: 3

Staple1600

XLDnaute Barbatruc
Re,

@sylvanu
En dehors de ma petite blague du #25, je crois comprendre ce que voulait dire @Cousinhub
J'ai fait l'essai suivant
Une validation en XFC1
J'insère une colonne
La validation passe en XFD1
J'insère une seconde colonne
=> Je n'ai plus de validation sur ma feuille
EDITION: si ma validation est sur plusieurs cellules en colonne XFC
j'ai au final ce message d'erreur
erreur.png
D'où le
Cousinsub à dit:
Juste la possibilité d'insérer 1 colonne (pas 2...)
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
@Staple,
Réclamée depuis le début, Orson n'a jamais daigné fournir un fichier représentatif.
Il a donc droit à un fichier test. Ca je l'avais vu, mais comme il devra reprendre le code pour l'adapter, je ne vois pas où est le souci.
Maintenant, ma PJ #28 est sans VBA, cela résous le problème.
 

Discussions similaires

Réponses
9
Affichages
281