Deux boucles dans un même programme

Résolu
Sandy34 -  
 Sandy34 -
Bonjour,

je tourne en rond

j'ai un fichier excel avec dans un premier onglet une liste de produits. Dans un deuxième onglet j'ai une deuxième liste de produits.
Je veux supprime les ligne du premier onglet en fonction de la liste du deuxième onglet,

j'ai la programmation suivante

Dim Ligne_lue As Long
Dim Variete As Long
Variete = 1
Ligne_lue = 2
While Cells(Ligne_lue, 2) <> ""
Cells(Ligne_lue, 2).Select
If ActiveCell.Text Like Sheets("liste propriétés").Cells(Variete, 1).Text Then
Range(Cells(Ligne_lue, 1), Cells(Ligne_lue, 15)).Select
Selection.ClearContents
End If
Ligne_lue = Ligne_lue + 1
Wend
End Sub

Je supprime bien tous les produits du premier onglet qui correspond au premier rang de ma liste du deuxième onglet.
Mais je n'arrive pas au passer aux rang suivant du deuxième onglet.
je ne sais pas ou mettre une incrémentation de ma variable "Variete". Sachant que je veus refaire la boucle à partir de Ligne_lue+2

1 réponse

  1. pilas31 Messages postés 1878 Statut Contributeur 648
     
    Bonjour,

    Il faut mettre deux boucles imbriquées avec "for" ou "while" si on souhaite garder des while voila ce que je propose :
    Le test sur cellule vide n'est pas fiable donc il vaut mieux mettre la derniere ligne
    dans une variable et tester la fin de boucle avec cette variable.

    Dim Ligne_lue As Long 
    Dim Variete As Long 
    
    Dim DernLigne As Long 
    Dim DernVariete As Long 
    DernLigne = Columns(2).Find("*", , , , xlByColumns, xlPrevious).Row 
    DernVariete = Sheets("liste propriétés").Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row 
    
    Variete = 1 
    
        While Variete <= DernVariete 
            Ligne_lue = 2 
            While Ligne_lue <= DernLigne 
                Cells(Ligne_lue, 2).Select 
                If ActiveCell.Text Like Sheets("liste propriétés").Cells(Variete, 1).Text Then 
                    Range(Cells(Ligne_lue, 1), Cells(Ligne_lue, 15)).Select 
                    Selection.ClearContents 
                End If 
                Ligne_lue = Ligne_lue + 1 
            Wend 
            Variete = Variete + 1 
        Wend 
    End Sub


    A+

    Cordialement,
    0
    1. Sandy34
       
      C'est trop fort çà marche

      Merci beaucoup

      A+

      Cdt
      0