Fonction suppression ligne

Bonjour,

J'ai créer une fonction qui me permet de supprimer les lignes jusqu'a 12 ( car i = 12) de la colone C ( car 3 ) lorsque la valeur dans la cellule est0. Ma fonction actuelle est la suivante :

Sub SupprSiZero(FeuilleName As String)
Dim i As Integer
    With Worksheets(FeuilleName)
        For i = 12 To 3 Step -1
            If .Cells(i, 3).Value = 0 Then
                .Rows(i).Delete
            End If
        Next
    End With
End Sub

Donc pour l'utiliser actuellement je fais par exemple SupprSiZero("Le nom de la feuille ou je veux que la fonction s'applique).

Mon problème est que cette fonction actuellement va supprimer les lignes ( jusqu'à 12 ) dans la colonne C.

Je souhaite pouvoir "gérer" cette valeur de i car dans mon fichier final elle va prendre 15 valeur différentes que je connais à l'avance et que je souhaite fixer lors de l'appel de ma fonction.

Si j'ai 5 feuilles : paul, pierre, jacques,jeanne,gilles et que je connais la valeur de i pour chacun je souhaite faire :

SupprSiZero("paul",5). La fonction fonctionnera sur la colonne C jusqu'a la ligne 5 sur la feuille Paul

SupprSiZero("pierre",7). La fonction fonctionnera sur la colonne C jusqu'a la ligne 7 sur la feuille Pierre

SupprSiZero("jacques",4). La fonction fonctionnera sur la colonne C jusqu'a la ligne 4 sur la feuille Jacques

SupprSiZero("jeanne",6).

SupprSiZero("gilles",9).

Or je ne sais pas comment programmer cela !

J'espère avoir eté clair merci à vous

Bonjour,

Déjà vous confondez "fonction" et "sub", votre code est une sub et pas une fonction.

Puis il vous manque la détection de la dernière ligne pleine

DerLig = Range("C" & Rows.Count).End(xlUp).Row
For i = DerLig To 3 Step -1

Cdlt

Bonjour,

Merci pour votre aide.

Effectivement erreur de ma part c'est bien un sub. Par contre je veux pouvoir choisir la valeur de mon i dans l'appel de mon sub. Hors la je ne controle pas la valeur du i et donc el nombre de ligne ou le sub s'applique,

Cdlt

Par contre il faut que je rajoute quelque chose dans la sub pour pouvoir choisir ma valeur lors de l'appel non?
De quelle valeur parlez-vous?

Votre code devrait ressembler à ça:
Sub Sub_principale()
    SupprSiZero ("Feuil2")
End Sub

Sub SupprSiZero(FeuilleName as string)
Dim i As Integer
    With Worksheets(FeuilleName)
    DerLig = .Range("C" & Rows.Count).End(xlUp).Row
    For i = DerLig To 3 Step -1
        If .Cells(i, 3).Value = 0 Then
                .Rows(i).Delete
            End If
        Next
    End With
End Sub

Bonjour,

Merci de votre aide,

Je veux pouvoir choisir la valeur de mon i lorsque j'appel le sub. En gros cela :

Sub Sub_principale()
    SupprSiZero ("Feuil2","10")
End Sub

De façon a ce que sur el Feuil2 l'intégralité des cellules valant 0 dans la colone C jusqu'a la ligne 10 soit supprimer

Ce sub sera utiliser pour plein de feuille différentes mais pas toujours jusqu'a 10

merci

Ne mettez pas de guillemets autour de la valeur.

Call SupprSiZero("Feuil2", 10)

le code devient:

Sub Sub_principale()
    Call SupprSiZero("Feuil2", 10)
End Sub

Sub SupprSiZero(FeuilleName As String, Longueur As Long)
Dim i As Integer
    With Worksheets(FeuilleName)
    For i = Longueur To 3 Step -1
        If .Cells(i, 3).Value = 0 Then
                .Rows(i).Delete
            End If
        Next
    End With
End Sub

Magnifique c'est exactement ce que je voulais merci à vous !!

Rechercher des sujets similaires à "fonction suppression ligne"