Fonction find

Résolu/Fermé
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013 - 22 mars 2013 à 11:12
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013 - 25 mars 2013 à 15:00
Bonjour tout le monde!

J'ai un tout petit bou de code dans lequel je veux demander la chose suivante à excel:
si tu trouves la même cellule dans une autre feuille tu ne supprime pas la cellule testée, dans le cas contraire tu la supprime.
Je but étant de faire le tri dans mes données, de ne garder que celles qui m'intéressent.
Le hic c'est que je sais pas du tout comment écrire la fonction find, et en cherchant sur google ça m'a pas trop aidé, y en a qui rajoutent des lookin, des lookat des machins que je comprends pas.

Voici mon code:

Dim a As Integer
Dim b As Integer

For a = 50000 To 1 Step -1

    If Find(Cells(a, 30), LookIn:=Worksheet("point de desserte")) = False Then
       Cells(a, b).Select
       Selection.EntireRow.Delete shift:=xlUp
    Next a
    
End Sub



Je suis sur à 90% que j'écrits cette fonction find avec les pieds et que l'erreur vient de là. (les 10% restants vont à la question "j'écrits find ou .find?")

Voilà, merci

1 réponse

roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013
22 mars 2013 à 11:19
***** Désolé, j'ai relu mon message plein de fois et j'ai pas vu des erreurs bêtes dans mon code: voici une version plus propre:


Sub trier_olympiades()

Dim a As Integer

For a = 50000 To 1 Step -1

    If Find(Cells(a, 1), LookIn:=Worksheet("point de desserte")) = False Then
       Cells(a, 1).Select
       Selection.EntireRow.Delete shift:=xlUp
    End If
    Next a
    
End Sub



Voilà, c'est tout

PS: au cas ou j'aurais écrit le code tellement mal que ça pretterait à confusion. Je veux qu'il me trouve la même cellule que cells(a,1) dans la feuille "point de desserte".
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 22/03/2013 à 14:15
bonjour

dim a as integer avec nombre de lignes: 50000 t'es sûr ?

pourquoi Find ?

application.screenupdating=false
If Application.CountIf(Sheets("point de desserte".).Cells, Cells(a, 1)) = 0 Then Rows(1).Delete

mais avec 50000 lignes avec en plus, des "select" ,ca va durer un max....
0
roupille008 Messages postés 33 Date d'inscription lundi 18 février 2013 Statut Membre Dernière intervention 4 avril 2013
25 mars 2013 à 15:00
A vrai dire j'ai mis Find car c'était la seule fonction que je connaissais.
Ouai ça va durer un max (surtout avec ma bécane) mais j'ai pas trop le choix, mais connaissances en VBA sont limités, je me contente d'écrire des procédures simples qui malheureusement prennent du temps.

Par contre pour le "integer" je sais qu'il vaut mieux mettre "long" quand on a des gros chffres mais je pensais que ça irait plus vite avec un integer, j'voulais essayer mais vu que ma macro marchat pas... y avait pas grand chose à essayer.

J'viens de rentre le code suivant:


Sub trier_olympiades()

Application.ScreenUpdating = False

Dim a As Long

For a = 50000 To 1 Step -1

    If Application.CountIf(Sheets("point de desserte").Cells, Cells(a, 1)) = 0 Then Rows(a).Delete
    
Next a
    
End Sub



Ca m'a pris genre 5min environ (durant lesquelles le moindre clic sur une autre fenêtre risque de faire tout planter, c'est un peu une roulette russe).

Merci pour ton code (vraiment), c'est exactement ce que je recherchais
0