Extraction de données problème

Bonjour à tous,

J'ai un petit souci sur une macro que je n'arrive pas à faire touner, si vous pouviez m'aider.

Je souhaiterai extraire (en les effacant par la même occasion), à partir d'un tableau excel, les lignes correspondant par exemple aux "femmes" de mon fichier et les stocker dans une nouvelle feuille (appelée Extract) du même fichier. La colonne "Sexe" est située colonne E.

Ci-dessous, ce que j'ai fait :

Ca marche, le souci c'est que ça ne prend pas toutes les lignes contenant "Femme", j'ai l'impression que seules les lignes impaires sont prises en compte dans mon fichier d'origine et je ne comprends pas pourquoi...

Si vous avez une solution, merci d'avance !!

C'est peut être mieux avec le code... :

Sub Femmes()

Dim a As Worksheet, sh As Worksheet, l As Integer, i As Integer, IT As Integer

Set a = Sheets("Extract")
a.Range("a2:f" & a.[a65000].End(xlUp).Row).ClearContents  'efface Extract de ligne 2 jusqu'à colonne F
l = 1   'colle les lignes à partir de la ligne l sur Extract
IT = 5   'désigne la colonne contenant le critère voulu

For Each sh In Worksheets
    If sh.Name <> a.Name Then
        For i = 1 To 50
            If sh.Cells(i, IT) = "Femme" Then
                Rows(i).Copy
                a.Select
                Cells(l, 1).EntireRow.Select
                ActiveSheet.Paste
                sh.Select
                Rows(i).Delete
                l = l + 1
            End If
        Next
    End If
Next

End Sub

Bonjour Mayou,

à première vue, du haut de mes 2 semaines de VBA, il me semble que la ligne

l = l + 1

est de trop, non?

Tu incrémentes L avant que la boucle For i...Next ne fasse de même juste après...

Petit conseil : utilise des majuscules en début de nom de variable, plus explicite (Lig pour ligne, par exemple)

Tu peux envoyer ton fichier que, moi ou d'autres, puissions tester sur nos bécanes ?

Bien à toi.

Bonjour curulis,

Déjà merci pour ta réponse.

C'est normal d'incrémenter à ce moment là car l ne doit s'incrémenter que si la ligne étudiée est une femme. C'est pour ça que je l'ai mis dans la boucle If. Si je le mets après, ça va me faire des lignes vide dans ma nouvelle feuille "Extract". Enfin je pense...

Je mets mon fichier en pièce jointe si ça peut aider !

Trouvé!

For Each Sh In Worksheets
    If Sh.Name <> a.Name Then
        For i = 1 To 50
            If Sh.Cells(i, IT) = "Femme" Then
                Rows(i).Copy
                a.Select
                Cells(Lig, 1).EntireRow.Select
                ActiveSheet.Paste
                Sh.Select
                Rows(i).Delete
                i = i - 1
                Lig = Lig + 1
            End If
        Next
    End If
Next

En deletant ta ligne dans le premier fichier + l'incrémentation de For Next , ta boucle passe au-dessus d'une Femme directement suivante.

Rajoute i=i-1 après Rows(i).Delete !

Bien à toi.

Bien vu !!! Ça marche nickel du coup !

Merci beaucoup Curulis !

Bonne soirée

Rechercher des sujets similaires à "extraction donnees probleme"