Fonction .FIND ne fonctionne pas

Bonjour la communauté,

J'aurai besoin d'un petit coup de main avisé de votre part pour résoudre une macro que j'essaie de mettre en place, sachant que je ne maîtrise pas vraiment ce domaine.

J'ai pour objectif (dans un fichier excel déjà ouvert) de chercher la valeur 411000 dans la colonne "D1:D6000" du worksheets (SAGE_CEP) et si oui copier la ligne dans le worksheet "411000" du même classeur

vous trouverez ci-dessous mon code.

Sub Macro1()

TOPO_REP = 411000

START_LINE = 1

NBR_LINE_CEP = 478

For i = 1 To NBR_LINE_CEP

With Worksheets("SAGE_CEP").Range("D1:D1000")

Set c = .Find(TOPO_REP, LookIn:=xlValues, MatchCase:=False)

If c Is Nothing Then

For k = 1 To 8

Worksheets("411000").Cells(START_LINE, k) = Worksheets("SAGE_CEP").Cells(i, k)

Next k

START_LINE = START_LINE + 1

End If

End With

Next i

End Sub

Mon problème , il n'arrive jamais a rentrer dans la boucle k car pourtant les cellules avec la valeur 411000, il y en a .

Merci beaucoup pour votre aide

Bonjour,

tes 411000 sont-ils alignés à gauche ?

Parce que tu ne recherche pas la chaine "411000" mais le nombre 411000.

If Not c Is Nothing Then

Et j'ai bien l'impression que tu fais 478 fois la même chose

Pourquoi boucler sur toutes les lignes et au final rechercher toujours sur D1:D1000 ?

eric

Bonjour eriic,

Merci beaucoup pour ta réactivité.

je viens de vérifier 411000 sont alignés a droite de la colonne , est ce important l'alignement ?

pour les 478 c'est juste un essaie .

comment différentier une chaine d'un nombre ?

Cdt

Quelle est la différence entre

If Not c Is Nothing Then et If c Is Nothing Then

quand j'intègre le not , je rentre dans la boucle tous le temps

il ne tient pas compte de la valeur 411000.

Bonjor requin,

Merci beaucoup.

le voici

Fichier retiré (données personnelles)

Salut Requin,

Qu'est-ce qu'il se passe quand tu trouves plusieurs fois 411000.

La a mon avis ton find ne te sers à rien.

En gros tu veux pour chaque ligne vérifier la valeur de la colonne D et si c'est 411000 mettre toute la ligne dans la feuille 411000 non?

Et si tu as plusieurs lignes avec 411000 les reporter toutes dans la feuille?

Essaye ça

Sub Macro1()

TOPO_REP = 411000

START_LINE = 1
NBR_LINE_CEP = Sheets("SAGE_CEP").Cells(1, 1).End(xlDown).Row

With Sheets("SAGE_CEP")
    For i = 1 To NBR_LINE_CEP
        If .Cells(i, 4).Value = TOPO_REP Then
            For k = 1 To 8
            Sheets("411000").Cells(START_LINE, k) = Sheets("SAGE_CEP").Cells(i, k)
            Next k
        START_LINE = START_LINE + 1
        End If
    Next i
End With

End Sub

oui c'est exactement ça.

j'ai fait un extrait de ma macro, car j'ai plusieurs feuilles avec des tableaux comme dans SAGE_CEP .

l'objectif de balayer la première ensuite l'autre feuille ... desque d'on trouve 411000 dans la colonne D recopier la ligne ou celllule par cellule de la ligne dans la feuille 411000.

voila

j'espère avoir été claire

Ah tu veux splitter les valeurs en fonction de tes nom de feuilles?

Il y a d'autres feuilles que 411000 ?

Merci ça fonctionne parfaitement

oui il y a d'autre SAGE_BP et SAGE_PQ avec des données

Mais j'aurais bien aimer comprendre le .FIND pourquoi ne marche t-il pas

encore merci

vous etes très efficace

requin

Merci funkyfoenky

oui j'ai d'autre feuille avec des sonnées aussi.

SAGE_BP et SAGE_BPOP

Ah tu veux splitter les valeurs en fonction de tes nom de feuilles?

Il y a d'autres feuilles que 411000 ?

oui j'ai d'autre feuille avec des données SAGE_BP et SAGE_POP

Quelle est la différence entre

If Not c Is Nothing Then et If c Is Nothing Then

La même qu'entre 'j'ai du pain' et 'je n'ai pas de pain'

eric

Quelle est la différence entre

If Not c Is Nothing Then et If c Is Nothing Then

La même qu'entre 'j'ai du pain' et 'je n'ai pas de pain'

eric

alors ça doit fonctionner si If c Is Nothing Then ==> si la valeur est trouvé , il rentre dans boucle

Non, si ce n'est pas trouvé tu as c Is Nothing

Toi tu veux faire un traitement si trouvé, pas si non trouvé. Donc si Not c Is Nothing

Dit autrement : si le résultat n'est pas vide

eric

Non, si ce n'est pas trouvé tu as c Is Nothing

Toi tu veux faire un traitement si trouvé, pas si non trouvé. Donc si Not c Is Nothing

Dit autrement : si le résultat n'est pas vide

eric

Ah ok, merci eriic pour ton retour.

et merci a tous le forum pour la réactivité

Appliqué à toutes les feuilles d'un coup

Sub Macro1()
Dim TOPO_REP As String

For Each sh In Sheets
    If sh.Name <> "SAGE_CEP" Or sh.Name <> "SAGE_POP" Then
    TOPO_REP = CLng(sh.Name)

    START_LINE = 1
    NBR_LINE_CEP = Sheets("SAGE_CEP").Cells(1, 1).End(xlDown).Row

        With Sheets("SAGE_CEP")
            For i = 1 To NBR_LINE_CEP
                If .Cells(i, 4).Value = TOPO_REP Then
                    For k = 1 To 8
                    sh.Cells(START_LINE, k) = Sheets("SAGE_CEP").Cells(i, k)
                    Next k
                START_LINE = START_LINE + 1
                End If
            Next i
        End With
    End If
Next sh

End Sub

Appliqué à toutes les feuilles d'un coup

Sub Macro1()
Dim TOPO_REP As String

For Each sh In Sheets
    If sh.Name <> "SAGE_CEP" Or sh.Name <> "SAGE_POP" Then
    TOPO_REP = CLng(sh.Name)

    START_LINE = 1
    NBR_LINE_CEP = Sheets("SAGE_CEP").Cells(1, 1).End(xlDown).Row

        With Sheets("SAGE_CEP")
            For i = 1 To NBR_LINE_CEP
                If .Cells(i, 4).Value = TOPO_REP Then
                    For k = 1 To 8
                    sh.Cells(START_LINE, k) = Sheets("SAGE_CEP").Cells(i, k)
                    Next k
                START_LINE = START_LINE + 1
                End If
            Next i
        End With
    End If
Next sh

End Sub

Merci funkyfoenky pour ton retour.

je rencontre un nouveau problème et je pense que c'est a cause de ça que la fonction .FIND ne fonctionné pas.

lors du copie/coller du classeur vers mon classeur je m'aperception que j'ai des erreurs : voir fichier joint

De plus quand je viens click sur toute la colonne "D" et sur erreur transformer en nombre , plus d'erreur et le cellule rechercher fonctionne.

je ne sais pas comment éviter ça ?

auriez vous une idée ?

merci

de

Bonjour,

Une autre proposition à étudier.

Cdlt.

Fichier retiré (données personnelles)

Rechercher des sujets similaires à "fonction find fonctionne pas"