Deux boucles dans un même programme

Résolu/Fermé
Sandy34 - 2 janv. 2012 à 17:24
 Sandy34 - 2 janv. 2012 à 18:14
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

pilas31 Messages postés 1825 Date d'inscription vendredi 5 septembre 2008 Statut Contributeur Dernière intervention 24 avril 2020 644
Modifié par pilas31 le 2/01/2012 à 18:06
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
C'est trop fort çà marche

Merci beaucoup

A+

Cdt
0