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 :

Fonction find entre 2 classeurs


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut Fonction find entre 2 classeurs
    bonjour à tous,

    cela fait un moment que je fouille ce forum en quête de réponses a mes problèmes de programmation, et n'ayant rien trouvé j'ai décidé de poster mon probleme.

    Aors voila, j'ai un premier classeur qui doit aller chercher des informations dans le tableau croisé dynamique du second classeur.

    ma variable projet contient le nom du projet recherché et mon TCD de l'autre classeur("pj") est filtré de façon à ce que les projets se trouvent en colonne A.

    J'ai donc entrer les lignes de code suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Workbooks("pj").Sheets("TCD_post_trait").Range("A:A").Find(projet) = projet Then
     verif = True
                End If
    Quand je lance mon programme j'ai une erreur de type :"variable objet ou varible bloc with non définie"

    De plus, j'aimerais que cette recherche puisse autoriser la casse. J'ai essayé l'aide vba mais quand j'ajoute "matchcase" le probleme est le même.

    Quelqu'un pourrait il m'aiguiller s'il vous plait?
    merci d'avance
    Chappoe

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Et comme cela?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If not Workbooks("pj").Sheets("TCD_post_trait").Range("A:A").Find(what:=projet, lookat:=xlwhole) is Nothing Then
     verif = True
                End If

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set MyFichier = ActiveWorkbook.Application.Workbooks.Open("C:\MyRep\MyFichier.xls")
    On Error Resume Next
    r = MyFichier.Worksheets("TCD_post_trait").Range("A:A").Find(projet).Row
    If Err = 0 Then verif = True
    Err.clear
    On Error GoTo 0
    Quand une occurrence n’est pas trouvée il y a toujours un message d’erreur.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    jfontaine, merci pour ta réponse, cela fonctionne parfaitement. Par contre, la casse n'est toujours pas permise. Comment faire pour que cela soit possible? J'ai essayé de rajouter matchcase a ta ligne de code mais le message d'erreur"attendu:paramètre nommé" apparait.

    rdurupt, je ne comprend pas la fonction set, c'est pourquoi je ne l'utilise jamais. A quoi sert-elle? (désolé pour mon ignorance )

  5. #5
    Invité
    Invité(e)
    Par défaut
    Le set affect une variable à un objet un classeur en l’occurrence.
    Tu travail sur la variable comme si tu étais sur le classeur

    Parce qu’il est préférable de travailler sur des objet que sur des noms :
    Sur un nouveau classeur le nom est par exemple Classeur1, tu peux renommer le classeur en PJ donc son nom est PJ, si tu ouvert le classeur PJ.xls ou PJ.xlsx ou PJ.xlm son nom est PJ.xls ou PJ.xlsx ou PJ.xlm, en travaillant sur un objet, tu t’en moque du nom !

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 6
    Par défaut
    Merci pour ton explication rudurupt. C'est en effet tres pratique, je l'essay de ce pas

    rdurupt,

    J'ai essayé ta solution. le problème était que cela réouvrait le fichier sans faire le tri de nouveau. J'ai donc adapté ton code de la facon suivante

    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
    18
    19
    20
    Set MyFichier = ActiveWorkbook.Application.Workbooks
    On Error Resume Next
    r = MyFichier.Worksheets("TCD_post_trait").Range("A:A").Find(projet).Row
    If Err = 0 Then verif = True
    Err.Clear
    On Error GoTo 0
        If verif = True Then
            With ActiveSheet.PivotTables("TCD_PT").PivotFields("Projet")
            .Orientation = xlPageField
            .Position = 1
            End With
            ActiveSheet.PivotTables("TCD_PT").PivotFields("Projet").ClearAllFilters
            ActiveSheet.PivotTables("TCD_PT").PivotFields("Projet").CurrentPage = projet
     
            Else
                MsgBox ("ce projet est introuvable. Verifiez qu'aucune faute n'as été faite(manque de majuscule ou espaces) et recommencer la mise à jour")
                UFmaj.Hide
                Exit Sub
     
        End If
    mais même si la variable projet est bonne (même nom que l'un des projets de la liste), il n'entre aps dans la boucle if et m'affiche le message d'erreur.

    De plus, comment faire en sorte que la casse soit autorisé?

Discussions similaires

  1. [XL-2003] Fonction de recherche entre deux classeurs
    Par Nemesis7285 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/11/2011, 11h35
  2. [VBA-E]Comment naviguer entre 2 classeur
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/03/2006, 08h45
  3. [VBA-E]Fonction .find
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/01/2006, 11h03
  4. Lien entre 2 Classeur Excel
    Par beurnoir dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/10/2005, 16h51
  5. [VBA-E] Fonction "FIND"
    Par cinc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2005, 11h16

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