VBA - Problème boucle avec un Find

Résolu
sygmajf99 Messages postés 18 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

J'ai 2 colonnes de données, et je désire faire un nettoyage des lignes vides laissées par l'utilisateur. Je veux éviter de faire un filtre.

Voici ce que j'ai débuté comme code. L'obstacle que je rencontre est lorsque je suis rendu à faire une recherche des x dans la colonne, je voudrais faire une boucle pour dire : continue de supprimer les lignes appropriées tant et aussi longtemps que tu trouves des "x".

Comment faire ? Voici mon code. Merci.

Sub EnleverBlanc()

On Error Resume Next

Dim PremLigne As Integer
Dim DernLigne As Integer
Dim LigneDelete As Integer

DernLigne = Range("A65536").End(xlUp).Row

For PremLigne = 5 To DernLigne

If Cells(PremLigne, 1).Value = "" And Cells(PremLigne, 2).Value = "" Then
Cells(PremLigne, 3).Value = "x"
Else
'sortir
End If

Next PremLigne

Columns("C:C").Select
Selection.Find(What:="x", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate

LigneDelete = ActiveCell.Row
Rows(LigneDelete).Select
Selection.Delete Shift:=xlUp

End Sub

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour
    à adapter en modifiant les constantes

    Public Sub supprime_lignes_vides() 
    Const lideb = 2 
    Const NF = "Feuil1" 
    Dim li As Long, lifin As Long 
    With Sheets(NF) 
      lifin = .Range("A65536").End(xlUp).Row 
      For li = lifin To lideb Step -1 
        If .Cells(li, 1).Value = "" And Cells(li, 2).Value = "" Then 
          Rows(li).Delete 
        End If 
      Next li 
    End With 
    End Sub

    bonne suite
    1
  2. sygmajf99 Messages postés 18 Statut Membre
     
    Ça marche, merci !!!
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    peux tu mettre le pb a résolu

    merci
    0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    re

    pour faire propre, il manque un point '.' devant Rows(li).Delete

    .Rows(li).Delete 


    bonne suite
    0