Supprimer une ligne d'un tableau nommée

taratata

XLDnaute Junior
Bonjour,

j'ai tableau nommé BaseNeutre sur lequel j'arrive à supprimer toutes les ligne vides
par contre je cherche à supprimer toutes les lignes ayant dans une colonne (ex: Col16) la valeur 0

j'ai test ceci sans succès

VB:
Dim Rng1 As Range
        On Error Resume Next
        Set Rng1 = Range("BaseNeutre[[QtDisp]]").SpecialCells(xlCellTypeAllFormatConditions).Delete
        On Error GoTo 0
            If Not Rng1 Is Nothing Then
              Rng1.Delete Shift:=xlUp
            End If

ou ceci

VB:
Application.ScreenUpdating = 0: Application.DisplayAlerts = 0                                                  'à supprimer si pas nécessaire
    Application.Calculation = xlCalculationManual                                                                 'plus rapide si de nombreuses formules
    On Error Resume Next                                                                                          'pas de correspondance
        With [BaseNeutre]
         .AutoFilter Field:=16, Criteria1:="0.00": .SpecialCells(xlCellTypeAllFormatConditions).Delete: .AutoFilter
         .AutoFilter Field:=16, Criteria1:=0#: .SpecialCells(xlCellTypeAllFormatConditions).Delete: .AutoFilter
        End With
        

        Application.Calculation = xlCalculationAutomatic

une idée sîl vous plaît
 

job75

XLDnaute Barbatruc
Bonjour taratata, bienvenue sur XLD,

Grâce au tri cette macro est très rapide :
VB:
Sub SupprimeZeros()
Application.ScreenUpdating = False                                                  'à supprimer si pas nécessaire
Application.Calculation = xlCalculationManual                                                                 'plus rapide si de nombreuses formules
On Error Resume Next                                                                                          'pas de correspondance
With [BaseNeutre]
    .Columns(16).EntireColumn.Insert 'colonne auxiliaire
    .Columns(16) = "=1/(RC[1]=0)"
    .Columns(16) = .Columns(16).Value 'supprime les formules
    .Sort .Columns(16), xlDescending, Header:=xlYes 'tri pour accélérer
    Intersect(.Columns(16).SpecialCells(xlCellTypeConstants, 1).EntireRow, .Cells).Delete xlUp
    .Columns(16).EntireColumn.Delete
End With
Application.Calculation = xlCalculationAutomatic
End Sub
A+
 

taratata

XLDnaute Junior
merci pour votre aide.

je pense que c'est dû à la feuille contenant 3 tableaux structurés. Je me suis aperçu que je devais obligatoirement avoir le même nombre de colonne.
ceci ne fonctionne pas --> .Columns(16).EntireColumn.Delete
par contre ça - oui --> .Columns(16).ClearContents
 

taratata

XLDnaute Junior
- en fait je prépare une gestion de stock du DIY e-liquide (VP PG Nicotine & Arôme). ces du pure DIY. Puis un suivis de la vape avec quelques stats... Une fois fini, le fichier sera e ligne gratuitement sur ma chaine youtube.

voici le code

VB:
Sub Suppression_Ligne_Zero_BN_NIC()
            
    Application.ScreenUpdating = False                                                  ' à supprimer si pas nécessaire
    Application.Calculation = xlCalculationManual                                       ' plus rapide si de nombreuses formules
    On Error Resume Next                                                                ' pas de correspondance
    
    With [BaseNeutre]
        .Columns(17).EntireColumn.Insert                                                ' colonne auxiliaire
        .Columns(17) = "=1/(RC[-1]=0)"                                                  ' RC[-1] : 1 Colonne avant (la colonne cible à traiter) --> "Q"
                                                                                        ' Valeur de retour --> True - False
        .Columns(17) = .Columns(17).Value                                               ' supprime les formules
        .Sort .Columns(17), xlDescending, Header:=xlYes                                 ' tri pour accélérer
        Intersect(.Columns(17).SpecialCells(xlCellTypeConstants, 1).EntireRow, .Cells).Delete xlUp
        .Columns(17).ClearContents                                                      ' Supprimer data dans les cellules de la colonne
    End With
        
    With [Nicotine]
        .Columns(18).EntireColumn.Insert                                                ' colonne auxiliaire
        .Columns(18) = "=1/(RC[-2]=0)"                                                  ' RC[-1] : 1 Colonne avant (la colonne cible à traiter) --> "Q"
                                                                                        ' Valeur de retour --> True - False
        .Columns(18) = .Columns(18).Value                                               ' supprime les formules
        .Sort .Columns(18), xlDescending, Header:=xlYes                                 ' tri pour accélérer
        Intersect(.Columns(18).SpecialCells(xlCellTypeConstants, 1).EntireRow, .Cells).Delete xlUp
        .Columns(18).ClearContents                                                      ' Supprimer data dans les cellules de la colonne
    End With
    Application.Calculation = xlCalculationAutomatic

End Sub

je suis pour le partage de compétence, d'échange.
 

Discussions similaires

Statistiques des forums

Discussions
312 108
Messages
2 085 361
Membres
102 874
dernier inscrit
Petro2611