IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

utilisation de Find


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Salut tt le monde,

    Voila j'ai un problème avec la méthode Find et je ne vois pas comment m'en sortir.

    Sur une feuille je recherche un numéro de Tel, en utilisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set d = ActiveSheet.UsedRange.Find(Num)
    par exemple au 1er passage il le trouve a la ligne 10, puis 20 et enfin 50. En combinant ma 1ere rechreche avec une 2nde donc un autre critère je ne prend en considérantion que le résultat de la ligne 50. Jusqu'a la c bon. ensuite je selectionne quelques lignes (par exemple entre 50 et 55) que je copie dans une autre feuille.

    Je souhaitrai ensuite reprendre ma recherche au dela de la précédente, mais je n'arrive pas à trouver la bonne méthode.

    j'ai essayé:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set d = ActiveSheet.UsedRange.FindNext(d)
    Mais s'il il ne trouve rien au dela de a ligne 50, il ne fera que boucle en reprenant la recherche du début

    J'ai essayé ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set plage = Range(Cells(m, 1), Cells(Lig, 18))
    Set d = ActiveSheet.plage.Find(Num)
    Mais la je trouve une erreur 438... Objet ne supporte pas cette propriete ou methode

    Merci de votre aide

    Si la description de mpn pn n'est pas claire, merci de me le signaler

  2. #2
    Membre actif
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Points : 246
    Points
    246
    Par défaut
    bonjour

    essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test3()
        Adres = Selection.Address
        Num = 55
     
        With Worksheets(1).Range(Adres)
            Set c = .Find(Num, LookIn:=xlValues)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    If c Is Nothing Then Exit Do
                    MsgBox ("Valeur " & Num & " en " & c.Address)
                    Set c = .FindNext(c)
                    If c.Address = firstAddress Then Exit Do
                Loop
            End If
        End With
    End Sub
    ce code recherche un N° (Num) dans une zone de cellules sélectionnées (Adres )
    à plus

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Salut Le Pierre, Merci de ta suggestion qui a permis de mettre sur le bon chemin.
    Tout d'abord par rapport a l'erreur que je recevais en nommant une plage, j'ai pu la résoudre en ajoutant des points a range et cells:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set plage = .Range(.Cells(m, 1), .Cells(Lig, 18))
    Set d = ActiveSheet.plage.Find(Num)
    par contre j'ai un autre probleme que je n'arrive n'y a comprendre et encore - a resoudre

    Je cherche le Numero de tel n°1, je traite les informations le concernant... la c bon. Je passe au Numero de tel n°2 qui ne peut se trouver dans la feuille qu'apres la partie relative au Numero de tel n°1... pour cela je conserve le n° de ligne ou j'avais trouvé pour la derniere fois le n°1 et de la je commence la recherche du n°2 et le meme principe pour le Numero de tel n°3... (j'espere n'avoir perdu personne en chemin )

    A un certian moment la Plage de recherche se trouve entre la ligne 296 et 1080 mais bizarement la recherche se fait entre la ligne 734 et 1525... Je me suis rendu compte de ce probleme en controlant l'adresse de la plage de recherche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Set plage = .Range(.Cells(m, 1), .Cells(Lig, 18))
    plage.select
    Adres = Selection.address
    Je m'etais dit que peut etre que c'etait du au fait qu'il y avait des cellules fusionnees... j'ai donc utilisé "Unmerge", ça n'a rien donné, ensuite "Clearformats", kifkif le meme pb continue a seposer...

    Si quelqu'un a une petite idee...

  4. #4
    Membre actif
    Inscrit en
    Février 2008
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 208
    Points : 246
    Points
    246
    Par défaut
    bonjour

    j'ai du mal à voir le problème sans ton fichier mais je pense qu'il faut effectuer une nouvelle sélection avant de lancer la procédure de recherche
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Cells(m, 1), Cells(Lig, 18)).Select
    car la recherche ne débute pas forcément à la première cellule en haut à gauche de la plage sélectionnée (je l'avais constaté dans le module test3 que je t'avais donné le 5 mai).

    à plus

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Pour essayer de resumer je reçois les factures Tel detaillées du staff au format PDF que je convertit ensuite en HTML puis en Excel... le fichier convertit contient trop d'nfo qui ne me servent a rien... Ma Macro a pour but de recuperer de ce fichier le detail des communication pour chaque staff/Num.
    Dans mon fichier chaque zone de detail se trouve apres une cellule qui contient le text "Detail..." et la zone qui m'interesse vient par la suite et commence par "Date". Donc pour chaque Num je fais ce qui suit:
    1. je cherche la cellule "detail"
    2. je cherche le Num en question de façon a ce que son adresse soit apres celle de "detail"
    3. Et enfin je cherche "Date", je selectionne la zone et la copie vers un autre fichier destine a l'utilisateur.
    Une fois que c'est fait pour le meme Num je reprend les 3 etapes et ce tant que le Num est trouvé sinon je passe au Num suivant et ainsi de suite. Et pour chaque Etape la recherche ne ce fait qu'apartir de l'addresse du critere trouve dans la recherche precedente...
    Mais bizarement a un moment donné l'adresse de la plage selectionne ne correspond pas a la realite... Je selectionne une plage partant de la ligne 296 a 1080 et en realite la plage traite commence de 734 a 1525...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Le problème est résolu...

    Toute la partie de recherche des données dans mon code commençais pas "With ActiveSheet.Range(Adres)" et finissais par "End With". J'ai enlevé ces "With" et remis le "ActiveSheet.Range(Adres)" à chaque endroit ou c'était nécessaire exemple:
    avant:
    Après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "c= ActiveSheet.Range(Adres)"
    Et la par magie mon code c'est remis a marché correctement...

    Je vais laisse cette discussion non résolue qq temps... le temps que qq'un puisse peut être expliquer cette bizarrie...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. utilisation de find
    Par Joccy dans le forum Unix
    Réponses: 5
    Dernier message: 09/09/2008, 22h05
  2. utilisation de find pour trouver date
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/03/2008, 14h23
  3. Utilisation de find
    Par Fry dans le forum Administration système
    Réponses: 2
    Dernier message: 02/11/2006, 15h39
  4. [C++ .NET] Comment utiliser fonction Find ?
    Par thecrax dans le forum Framework .NET
    Réponses: 3
    Dernier message: 17/08/2006, 09h02
  5. [VBA-E] Pb avec l'utilisation de .Find
    Par belfaigore dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2006, 07h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo