Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

For Each C In / S'arretant au bout de deux cellules testé

F2T

XLDnaute Occasionnel
Bonjour,

le code ci dessous: ne teste et transfere que deux lignes. Alors que quatre ligne corresponde au critere OK.

Je suis donc obligé, de relancer la macro plusieurs fois pour qu'il teste toute les celllules.

D'ou pourrait provenir le bug?

Code:
Sub EOD()

    Workbooks![HISTORIQUE.XLSM].Activate
    Worksheets("SHEET1").Select

    For Each C In Workbooks![HISTORIQUE.XLSM].Worksheets("SHEET1").RANGE("BY11:BY" & RANGE("BY65536").End(xlUp).Row)

    If UCase(C.Text) = "OK" Then
     
    C.EntireRow.Select
    Selection.Copy
    Sheets("SHEET2").Select
    RANGE("A" & Application.Rows.Count).End(xlUp).Offset(1, 0).Select
    ActiveSheet.Paste

    Sheets("SHEET1").Select
    Selection.EntireRow.Delete Shift:=xlUp
    
    Else


    End If



    

    Next


End Sub



Vous en remerciant d'avance.
 

JNP

XLDnaute Barbatruc
Re : For Each C In / S'arretant au bout de deux cellules testé

Bonjour F2T ,
Je pense que l'utilisation d'une description de cellules n'est pas très compatible avec les suppressions dans la même zone simultanément ...
Je coderais plutôt ainsi
Code:
Sub EOD()
Dim I As Long
With Workbooks![HISTORIQUE.XLSM].Sheets("SHEET1")
    For I = Range("BY65536").End(xlUp).Row To 11 Step -1
        If UCase(.Range("BY" & I).Text) = "OK" Then
            .Range("BY" & I).EntireRow.Copy
            Sheets("SHEET2").Range("A" & Application.Rows.Count).End(xlUp).Offset(1, 0).Paste
            .Rows(I).Delete
        End If
    Next I
End With
End Sub
Bonne journée
 

Caillou

XLDnaute Impliqué
Re : For Each C In / S'arretant au bout de deux cellules testé

Bonjour,

Il ne s'agit pas d'un bug !
En effet, tu utilises un For Each pour balayer une plage de cellule, puis un test pour sélectionner les bonnes lignes. Dans ce cas, tu supprimes la ligne correspondante, ce qui a pour effet de décaler le for each d'une ligne.
Donc si 2 lignes consécutives répondent à la condition, seule la première ligne est extraite.

Caillou
 

F2T

XLDnaute Occasionnel
Re : For Each C In / S'arretant au bout de deux cellules testé

Bon! en fin de compte. J'ai appliquer une autre solution. J'ai appliquer un filtrer sur la zone a tester. Pour infos, JNP, ton code ( que je te remercie de m'avoir proposé): s'arrete et se surligne en jaune a ce niveau Sheets |("SHEET2").Select|. Juste pour infos. Je pense qu'il doit fonctionner autrement. Pas eu le temps de comprendre tous le cheminement.



Tks pour l'aide.
 

Discussions similaires

Réponses
38
Affichages
5 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…