OVH Cloud OVH Cloud

suppression lignes

15 réponses
Avatar
pierre
Bonjour

j'aimerais supprimer Des lignes en fonction de deux valeurs touvées sur une
ligne.
En colonne B la reference du produit Refx01 et en Col E et H des valeurs.
Si E=stock et H=plein alors je supprime toutes les lignes contenant en B la
réference du produit.
J'utilise If Cells(l, "E").Value = "stock" _
And Cells(l, "H").Value = "plein" Then Cells(l, 1).EntireRow.Delete
, cela fonctionne que pour une ligne.

merci pour votre aide
Pierre

5 réponses

1 2
Avatar
michel ou sam
Bonjour,
en laissant la ligne stock plein en place et en prenant comme condition
"ple.." voici ce que ça peut donner

Sub Cherchetsup()
'
Dim Reference As String
Dim Derlig As Long
Derlig = Range("B65536").End(xlUp).Row 'sous excel 2003
'recherche stock plein
For i = Derlig To 1 Step -1
If Cells(i, 5).Value = "stock" And Left$(Cells(i, 8), 3) = "ple" Then
Reference = Cells(i, 2).Value
'suppression lignes de même référence
For j = Derlig To 1 Step -1
If j <> i And Cells(j, 2).Value = Reference Then Cells(j,
1).EntireRow.Delete
Next j
'vérification i<dernière ligne+1
Derlig = Range("B65536").End(xlUp).Row
If i > Derlig + 1 Then i = Derlig + 1
End If
Next i
End Sub


Michel

"Gloops" a écrit dans le message de news:
iphjhn$3j0$
pierre a écrit, le 30/04/2011 17:57 :
Bonjour Michel

Tu as parfaitement compris mon besoin et la macro est parfaite.
Dès que stock et plein sont détectés ta macro supprime les lignes
contenant
la référence du produit se trouvant en colonne B (Ce qui soulage le
tableau )
et cela fonctionne parfaitement bien. Tellement bien que je voulais
l'enrichir avec comme condition 2 au lieu du mot fixe ( plein) une
variable
de type "commençant par" .
et garder une seule ligne au lieu de tout supprimer, la premiere en
partant
du haut.
J'abuse mais c'est tellement puissant avec vous le VBA .
Merci à toi ainsi qu'aux autres du forum

Pierre




Bonjour,

Left$(Cells(i, 8), 3) = "ple"



Cells(i, 8) est la huitième cellule de la ligne i, donc la cellule de la
colonne H, et plus exactement sa propriété par défaut, Value.

Left$(texte, nb) retourne nb caractères pris au début de texte.
Avatar
Gloops
C'est surtout Pierre, que ça va intéresser :)


michel ou sam a écrit, le 02/05/2011 11:58 :
Bonjour,
en laissant la ligne stock plein en place et en prenant comme condition
"ple.." voici ce que ça peut donner

Sub Cherchetsup()
'
Dim Reference As String
Dim Derlig As Long
Derlig = Range("B65536").End(xlUp).Row 'sous excel 2003
'recherche stock plein
For i = Derlig To 1 Step -1
If Cells(i, 5).Value = "stock" And Left$(Cells(i, 8), 3) = "ple" Th en
Reference = Cells(i, 2).Value
'suppression lignes de même référence
For j = Derlig To 1 Step -1
If j<> i And Cells(j, 2).Value = Reference Then Cells(j,
1).EntireRow.Delete
Next j
'vérification i<dernière ligne+1
Derlig = Range("B65536").End(xlUp).Row
If i> Derlig + 1 Then i = Derlig + 1
End If
Next i
End Sub


Michel
Avatar
michel ou sam
oui, mais comme j'avais honteusement pompé ta proposition, c'était également
pour en donner suite.
Michel

"Gloops" a écrit dans le message de news:
ipn701$og8$
C'est surtout Pierre, que ça va intéresser :)


michel ou sam a écrit, le 02/05/2011 11:58 :
Bonjour,
en laissant la ligne stock plein en place et en prenant comme condition
"ple.." voici ce que ça peut donner

Sub Cherchetsup()
'
Dim Reference As String
Dim Derlig As Long
Derlig = Range("B65536").End(xlUp).Row 'sous excel 2003
'recherche stock plein
For i = Derlig To 1 Step -1
If Cells(i, 5).Value = "stock" And Left$(Cells(i, 8), 3) = "ple" Then
Reference = Cells(i, 2).Value
'suppression lignes de même référence
For j = Derlig To 1 Step -1
If j<> i And Cells(j, 2).Value = Reference Then Cells(j,
1).EntireRow.Delete
Next j
'vérification i<dernière ligne+1
Derlig = Range("B65536").End(xlUp).Row
If i> Derlig + 1 Then i = Derlig + 1
End If
Next i
End Sub


Michel
Avatar
pierre
Bonjour

C'est pas mal, effectivement cela m'intéresse beaucoup
merci

Pierre

je viens de m'acheter VBA pour les nuls, il me faudra 10 ans pour le même
résultat


"michel ou sam" a écrit dans le message de news:
4dbfdd42$0$14671$

oui, mais comme j'avais honteusement pompé ta proposition, c'était
également pour en donner suite.
Michel

"Gloops" a écrit dans le message de news:
ipn701$og8$
C'est surtout Pierre, que ça va intéresser :)


michel ou sam a écrit, le 02/05/2011 11:58 :
Bonjour,
en laissant la ligne stock plein en place et en prenant comme condition
"ple.." voici ce que ça peut donner

Sub Cherchetsup()
'
Dim Reference As String
Dim Derlig As Long
Derlig = Range("B65536").End(xlUp).Row 'sous excel 2003
'recherche stock plein
For i = Derlig To 1 Step -1
If Cells(i, 5).Value = "stock" And Left$(Cells(i, 8), 3) = "ple" Then
Reference = Cells(i, 2).Value
'suppression lignes de même référence
For j = Derlig To 1 Step -1
If j<> i And Cells(j, 2).Value = Reference Then Cells(j,
1).EntireRow.Delete
Next j
'vérification i<dernière ligne+1
Derlig = Range("B65536").End(xlUp).Row
If i> Derlig + 1 Then i = Derlig + 1
End If
Next i
End Sub


Michel






Avatar
Gloops
michel ou sam a écrit, le 03/05/2011 12:47 :
oui, mais comme j'avais honteusement pompé ta proposition, c'était également
pour en donner suite.
Michel




En effet, c'est élégant :)
1 2