VBA pour suppression si plusieurs condition

Bonjour voici mon problème, je dois trouver une VBA sur excel 2013 qui :

  • sur un tableau allant de colonne A à E, si une ligne comporte par exemple "2" dans une colonne et "3" dans une autre colonne et "8" dans une autre ( dans ce tableau "2" peut être à la colonne A ou B ou C ou D ou E ainsi que les autres chiffres) alors supprimer la/les lignes.
  • si une ligne ne comporte que le chiffre "2" dans une colonne et "3" dans une autre et qu'il n'y a pas le "8" dans une autre de la même ligne alors ne pas supprimer.
colonne A colonne B colonne C colonne D colonne E

2 3 8 12 16

3 8 2 189 20

8 3 6 10 21

donc ici la VBA devrait supprimer les deux premières ligne.

Si quelqu’un pourrais m'aider svp merci d'avance.

Bonjour memoli, le forum,

Un essai de ce que j'ai compris....à adapter à ton cas...

Sub Bouton1_Cliquer()
 Dim i As Integer, dl As Integer
 Dim a As Integer, b As Integer, c As Integer
  Application.ScreenUpdating = False
  With Sheets("Feuil1")
   dl = .Range("A" & Rows.Count).End(xlUp).Row
    For i = dl To 2 Step -1
     a = Application.WorksheetFunction.CountIf(.Range(Cells(i, 1), Cells(i, 5)), 2)
     b = Application.WorksheetFunction.CountIf(.Range(Cells(i, 1), Cells(i, 5)), 3)
     c = Application.WorksheetFunction.CountIf(.Range(Cells(i, 1), Cells(i, 5)), 8)
      If a = 1 And b = 1 And c = 1 Then Rows(i).Delete
    Next i
  End With
End Sub
13classeur1.xlsm (17.54 Ko)

Cordialement,

Bonjour,

Ci-joint une proposition à tester

Bouben

19supprlignes.xlsm (16.09 Ko)

oui merci beaucoup ça marche !!

Cordialement,

[/quote]

Bonjour, je vien de m'apercevoir que cette VBA marche pour des petits tableaux et non pour des grands tableaux, il m'affiche erreurs de capacité avec cette partie de la VBA : dl = .Range("A" & Rows.Count).End(xlUp).Row en jaune.

Y a -t-il un moyen d'augmenter la capacité ? merci

Re,

Essaie de déclarer les variables en Long....(Integer est limité à 32767: https://www.excel-pratique.com/fr/vba/variables).

Sub Bouton1_Cliquer()
 Dim i As Long, dl As Long
 Dim a As Long, b As Long, c As Long
  Application.ScreenUpdating = False
  With Sheets("Feuil1")
   dl = .Range("A" & Rows.Count).End(xlUp).Row
    For i = dl To 2 Step -1
     a = Application.WorksheetFunction.CountIf(.Range(Cells(i, 1), Cells(i, 5)), 2)
     b = Application.WorksheetFunction.CountIf(.Range(Cells(i, 1), Cells(i, 5)), 3)
     c = Application.WorksheetFunction.CountIf(.Range(Cells(i, 1), Cells(i, 5)), 8)
      If a = 1 And b = 1 And c = 1 Then Rows(i).Delete
    Next i
  End With
End Sub

Au cas où 2, 3, 8 peuvent être présents plusieurs fois sur la ligne

  If a > 0 And b > 0 And c > 0 Then Rows(i).Delete

Cordialement,

Bonjour,

Tu as eu 2 réponses avec 2 propositions distinctes.

Ton retour "oui merci beaucoup ça marche !! " concerne lesquelles ? Tu as testé les 2 ?

Pour le problème signalé, a priori, proposition 1 : à tester en modifiant le type "integer" en "long"

Dim i As Long, dl As Long

Bouben

EDIT : croisement de post ...

Bonjour, je parlais de la proposition 1 je n'ai pas tester la deuxième, et merci oui je changerais en as long.

Bonne journée !

Rechercher des sujets similaires à "vba suppression condition"