XL 2013 Supprimer ligne si cellule est vide

susaita

XLDnaute Occasionnel
Bonjour à tous,

sur l'exemple ci-inclus j'ai un onglet Total-Mois et sur B9 j'ai une liste déroulante contenant les noms des fournisseurs.
ce que je désire avoir : c'est un code lié a cette liste, et en choisissant un fournisseur si une cellule de la colonne C du tableau est vide alors supprimer la ligne correspondante

Merci d'avance
 

Pièces jointes

  • Ajout FRS.xlsm
    54.8 KB · Affichages: 48
Dernière édition:

Modeste

XLDnaute Barbatruc
Bonjour susaita,

Supprimer des lignes, ça a un petit côté ... définitif :p (d'autant qu'en cas de problème, d'erreur de manipulation ou de cas non-prévus dans le code, tu pourrais te retrouver avec ... 0 lignes ... et donc toutes tes formules à recréer :eek:)

Pourquoi ne pas simplement les masquer (comme si tu décochais les "Vides" dans un filtre automatique)?
 

susaita

XLDnaute Occasionnel
Bonjour Modeste,
c'est une bonne idée de les cacher au lieu de les supprimer

une proposition de ta part s'il te plait


EDIT: tu as raison il vaut mieux masque la ligne quand elle est vide et la démasquer une fois remplie
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re,

à tester soigneusement ...

Clic droit sur l'onglet de la feuille "Total - Mois" --> Visualiser le code --> coller ce qui suit dans la fenêtre:
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells(1, 1).Address <> "$B$9" Then Exit Sub
Rows("9:14").Hidden = False
If Target.Cells(1, 1) = "" Then Exit Sub
For Each c In [C9:C14]
    If c = "" Then c.EntireRow.Hidden = True
Next c
End Sub
 

JBARBE

XLDnaute Barbatruc
Bonjour à tous,

Peut-être en cliquant sur les boutons "afficher" : " masquer "

L'intérêt de ces boutons permet d'ajouter de la saisie ou de masquer une cellule vide

Bonne journée !
 

Pièces jointes

  • Ajout FRS-2.xlsm
    59.8 KB · Affichages: 48
Dernière édition:

Modeste

XLDnaute Barbatruc
Re²,

Dans l'exemple fourni, il n'y avait que 6 lignes ... ça ne devrait donc pas prendre des plombes!?
Tu as plus de lignes? Beaucoup plus? Infiniment plus?
S'il y a des cellules vides en colonne C elles ne seront jamais que dans les dernières lignes? Dans ce cas, on peut commencer par le bas et sortir de la procédure à la première cellule non-vide ... mais il faut plus de précisions (ou un exemple plus représentatif)
 

Modeste

XLDnaute Barbatruc
j'aimerais éviter le screen updating
Ben, si tu connais la solution ... pourquoi ne pas la mettre en œuvre?

Une version ci-dessous, qui scanne la colonne C en commençant en ligne 14 et en remontant. J'ai considéré qu'il ne saurait (vu la formule utilisée) y avoir des cellules vides entre les données. Les lignes sont masquées en une seule fois.
Je t'ai laissé le ScreenUpdating en commentaire ... il me semble que ça ne devrait rien changer? Supprime l'apostrophe en début de ligne, si tu veux activer ces 2 lignes.

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells(1, 1).Address <> "$B$9" Then Exit Sub
Rows("9:14").Hidden = False
If Target.Cells(1, 1) = "" Then Exit Sub
For lig = 14 To 9 Step -1
     If Cells(lig, 3) = "" Then
        derLigne = lig
    Else: Exit For
    End If
Next lig
'Application.ScreenUpdating = False
If derLigne > 0 Then Rows(derLigne & ":14").Hidden = True
'Application.ScreenUpdating = True
End Sub

Bon après-midi
 

Discussions similaires

Réponses
4
Affichages
220

Statistiques des forums

Discussions
312 347
Messages
2 087 500
Membres
103 563
dernier inscrit
samyezzehar