Supprimer une ligne de tableau si 3 des 4 champs sont vide "Macro VBA"

Hello tout le monde,

Petite question du jour,

J'aimerais à l'aide d'un bouton, supprimer une ligne d'un tableau.

Cependant si les cellules de la ligne H,I,J 10 correspondantes à CATEGORIES Valeur1 Valeur 2 sont vides les trois j'aimerais rendre mon bouton (Verrouiller ou inutilisable) a fin de ne pas supprimer cette ligne.

Dans l'attente de votre aide précieuse je vous souhaite un bon dimanche!

Sub Bouton_Del()

' Bouton_Del Macro

    Sheets("Feuil1").Select
    Range("H10").Select
    Selection.ListObject.ListRows(1).Delete

End Sub

Bonjour,

la question est de savoir pourquoi vous avez une ligne vide ? Est-ce du à d'autre macro qui seraient écrites de façon "aléatoire" et qui provoque cette dernière ?
Car c'est un tableau structuré, alors d'où vient cette ligne vide ?
la ligne de code pourrait être : Range("Tableau1").ListObject.ListRows(1).Delete

Sinon le code serait de faire un test sur le nombre de valeur existante sur la ligne et si = à 0 alors on efface.

@ bientôt

LouReeD

Salut LouReeD,

Oui dans un fichier perso j'ai un autre bouton pour ajouter des lignes et ducoup certaines fois je supprime des lignes, mais pour ne pas supprimer la dernière ligne et avoir un bug j'aimerais rendre le bouton "supprimer" inactivable si les 3 premières cellules de la ligne sont vide. (dans la 4ème j'ai des formules donc elles ne sont jamais vide).

Mais pour ce qui est de la suppression de la ligne c'est ok ça marche bien avec mes codes actuels. je cherche juste a vraiment ne pas pouvoir supprimer la ligne de mon tableau si il y a des cellules non vides dans les 3 premières cellules de ligne.

Bonsoir,

une proposition en code VBA :

Sub TestNbValeur()
    ' on dimensionne une variable Tableau structuré
    Dim MonTab As ListObject
    ' on dimensionne une variable Ligne de tableau structuré
    Dim lRow As ListRow
    ' on dimensionne une variable compteur Cpt
    ' on attribue à la variable tableau le premier tableau de la feuille Formulaire
    Set MonTab = Sheets("Formulaire").ListObjects(1)
    ' on attribue la ligne 1 du tableau à la variable ligne
    Set lRow = MonTab.ListRows(1)
    ' on boucle sur les 3 premières colonne de la ligne
    For i = 1 To 3
        ' si la valeur est égale à rien alors on incrémente la variable compteur Cpt
        If lRow.Range.Cells(i) = "" Then cpt = cpt + 1
    Next i
    ' si la valeur de Cpt = 3 alors on efface la ligne
    If cpt = 3 Then lRow.Delete
End Sub

Je n'ai pas trouver comment compter le nombre de cellule vide d'une variable "ligne" d'un tableau structuré !

Ici si les trois premières colonne de la ligne 1 du tableau sont vides alors on efface.

@ bientôt

LouReeD

Bonjour,

@ LouReed, peut-être ainsi :

Application.CountA(lRow.Range.Cells.Resize(1, 3))

pour calculer le nombre de cellules non vides dans les 3 premières colonnes de la "ligne"

Bonne fin d'apm

Ha ces Bretons !

@ bientôt

LouReeD

Merci pour vos réponses.

Mais je me suis louper dans ma réponse a LouReeD.

Je veux surtout pas supprimer une ligne qui a les cellules vides car si je presse sur mon bouton supprimer ligne trop de fois sans faire exprès j'arrive a un message d'erreur que je ne veut absolument pas voir.

capture
Sub Bouton_Del()

' Bouton_Del Macro

    Sheets("Feuil1").Select
    Range("H10").Select
    Selection.ListObject.ListRows(1).Delete ' <----------- MESSAGE D'ERREUR AFFICHER EN JAUNE APRèS DEBOGAGE!

End Sub

Bonjour,

Un autre code a été fourni...

@ bientôt

LouReeD

Bonjour LouReeD,

J'ai remarqué le code fournis mais malheureusement je suis pas assez fort pour le faire marcher dans mon fichier et je comprend pas vraiment ou le mettre au final...

Désoler vous parlez un peut un autre dialecte que moi avec tout ces codes

Bonjour,

votre fichier en retour avec les explications, l'adaptation du code de cousinhb29, et la mise en place d'une gestion d'erreur simple afin de ne pas provoquer l'arrêt impromptue du code :

@ bientôt

LouReeD

Woua! vous êtes des génie!

Super ça marche bien comme je le veux c'est top merci beaucoup et désoler pour la peine que j'ai a comprendre.

Encore merci! A+

Bonjour

Merci pour vos remerciements et n'hésitez pas à revenir sur le forum pour d'autres explications !

@ bientôt

LouReeD

Rechercher des sujets similaires à "supprimer ligne tableau champs vide macro vba"