Fonction pour supprimer ligne

Bonjour,

J'ai créer une fonction me permettant de supprimer des lignes si la valeur dans une cellule est 0. Ce que je souhaite faire est de pouvoir décider la valeur de mon i dans l'appel de ma fonction:

Si je fais SuppSiZero12("toto",12) alors ma fonction marchera jusqu'a la ligne 12

Si je fais SuppSiZero12("toto",5) alors ma fonction marchera jusqu'a la ligne 5

Je pense avoir exposer clairement mon problème, merci de votre aide,

Sub SupprSiZero12(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

Je me permet de vous relancer,

Cdlt

Bonjour, il suffit d'ajouter une boite de dialogue pour demander le nombre de ligne avant de lancer le reste du code :

Sub Macro1()
'
Dim i As Long

    i = InputBox("Indiquez le nombre de lignes", "Ligne maximal") 'La variable reçoit la valeur entrée dans l'InputBox

 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

Bonjour,

Merci pour votre réponse. Elle fonctionne parfaitement mais cette fonction va être utiliser plus de 100 fois dans mon code. L'idée de la boite de dialogue n'est donc pas très efficace dans mon cas actuel.

Il me faudrait un code qui me permette de choisir le nombre de ligne directement dans l'appel de la fonction du type : SuppSiZero12("toto",5)

Merci de ta proposition et de ton aide en tout cas,

Cdlt

Je vois le genre mais sans fichier exemple

je ne comprends pas vos : SuppSiZero12("toto",5)

c'est du charabia pour moi ("toto",5)

Quelle est la condition du choix 5 ou 12 ?

Bonjour,

Oui effectivement excusez moi,

SuppSiZero12("toto",5) : Toto c'est la feuille sur laquelle on va appliquer la fonction et 5 c'est la valeur que le i peut prendre dans ma fonction. Donc si je fais SuppSiZero12("toto",5), la fonction va supprimer tout les lignes ou il y aura 0 dans la colonne C( car cells(i,3) dans la fonction) jusqu'à la ligne 5.

Merci à vous

Ok mais ce que vous écrivez est un choix manuel que vous exécutez en écrivant ("toto",5)

Il n'y a rien qui indique que dans la Feuille toto c'est 5 qu'il faut utiliser et pas 12 ? donc à moins de poser la question comme dans mon exemple précédent je

ne vois pas comment excel va choisir 5 ou 12 ?

Au pire vous faites 2 macros identique ( l'une avec 12 l'autre avec 5 ) puis vous lancerez celle que vous souhaitiez.

Bonjour,

Au pire vous faites 2 macros identique ( l'une avec 12 l'autre avec 5 ) puis vous lancerez celle que vous souhaitiez.

Justement c'est pour éviter de faire plein de fois la même fonction que j'ai écris ce post. Puisque la valeur du i sera différente à 15 reprises dans la version final de mon fichier. Finalement mon problème est de pouvoir choisir la valeur du i dans l'appel de ma fonction pour pouvoir faire qu'une seul fonction. Sinon il faut que je fasse 15 fonctions identique en changeant juste la valeur du i ce que je trouve dommage et pas adapté.

Merci de votre aide,

Cdlt

Je comprend encore moins ??? pourquoi 15 valeur de i maintenant ?

Vous voulez une seule fonction mais vous ne voulez pas que excel vous demande la valeur de i ???? on tourne en rond là

Si vous ne donnez pas de fichier exemple ni de solution permettant de deviner la valeur de i ; il n'y a pas de miracle non plus.

Je ne vois que ma première solution pour utiliser une seule macro.

Sub Macro1()
'
Dim i As Long
Dim K As long

    K = InputBox("Indiquez la valeur i Max souhaité", "Ligne maximal") 'La variable reçoit la valeur entrée dans l'InputBox

 With Worksheets("FeuilleName")
        For i = K To 3 Step -1
            If .Cells(i, 3).Value = 0 Then
                .Rows(i).Delete
            End If
        Next
    End With
'
End Sub

Bonjour,

On ne se comprend absolument pas je pense. Je reprend tout pour essayer d'être claire. 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

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

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

SupprSiZero("jeanne",6).

SupprSiZero("gilles",9).

Or je ne sais pas comment programmer cela !

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

Bonjour,

Je me permet de vous relancer,

Cdlt

Merci de ne plus relancer de sujet avant AU MOINS 24h et de ne plus créer de sujets à double

Doublon de : https://forum.excel-pratique.com/excel/fonction-suppression-ligne-156148

Rechercher des sujets similaires à "fonction supprimer ligne"