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 :

[Excel/Range] Fonction Find de la classe CRange


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut [Excel/Range] Fonction Find de la classe CRange
    Bonjour à tous,
    Je ne code pas en VBA mais vous pourrez surement m'aider
    Voici mon prblème :
    Je recherche une cellule dans laquelle il y a une opération Excel (Donc commence par =, exemple : =PRODUIT(...))
    Donc pour ce faire je fais cet appel de la fonction find :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range.Find(CString("="), vMissing, vMissing, SEARCH_PART, SEARCH_NEXT, SEARCH_BY_ROW, vMissing, vMissing, vMissing);
    SEARCH_PART correspond à la valeur 2 comme expliqué par Microsoft dans ce lien : http://msdn.microsoft.com/en-us/library/bb241368.aspx

    SEARCH_NEXT correspond à la valeur 1 et dit que l'on cherche dans les cellules suivantes et non les précédentes

    SEARCH_BY_ROW correspond à la valeur 1 et dit que l'on cherche par ligne et non par colonne

    Mon range à 3 colonnes et 1 seul ligne, je selectionne ce Range grâce à la méthode GoTo("Nom de mon Range") de la classe CApplication0.

    La dernière Cellule de mon Range possède une Opération, je trouve donc quelque chose avec cette fonction.

    Jusque là je pense que tout fonctionne correctement.

    Je récupère le Range renvoyé par la fonction find dans un range temporaire comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tmpCell = range.Find(CString("="), vMissing, vMissing, SEARCH_PART, SEARCH_NEXT, SEARCH_BY_ROW, vMissing, vMissing, vMissing);
    Puis c'est maintenant qu'il y a un soucis, j'éssaye donc de récupérer la formule qui est dans le Range temporaire. Pour ce faire j'ai essayé les fonctions :
    - get_Value
    - get_Formula
    - get_FormulaArray
    Mais sans succès. J'ai tracé avec le debug, c'est bien cette ligne qui plante, aucune de ces fonctions ne marche pourtant tmpCell n'est pas NULL.

    Est-ce bien l'une de ces fonctions qu'il faut utiliser ?
    Laquelle ? Comment l'utiliser ?

    Merci.

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Ne sachant pas ce que tu comptes faire de la formule récupérée, si tu as plusieurs cellules qui contiennent des formules, quelle formule dans ce cas là, etc..., voici un exemple simpliste qui pourra peut-être t'inspirer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub test()
    Dim C As Range, Plage As Range
     
    Set Plage = Range("A1:A20")
     
    Set C = Plage.Find(What:="=", LookIn:=xlFormulas, LookAt:=xlPart)
     
    If Not C Is Nothing Then
        MsgBox C.Formula
    End If
     
    End Sub
    Dans ce cas la première formule trouvée sera affichée
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  3. #3
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    Bonjour,
    Merci pour ton exemple qui me précise 2-3 trucs.
    Mon problème est la valeur du paramètre LookIn, en effet je ne trouve pas la valeur de xlFormulas dans la msdn de microsoft (et oui les MFC ne supporte pas les énumérations Excel, il faut donc que je mette la valeur en dur)

    Merci.

  4. #4
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut
    C'est bon je l'ai trouvé.
    Alors tout à l'air de fonctionner, j'arrive à récupérer une cellule, mais après je n'arrive pas à afficher la formule.
    La formule est stockée dans la cellule et se récupère avec un get_value ?
    Ou il faut utiliser le Array ?

    Merci.

  5. #5
    Membre habitué Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Points : 127
    Points
    127
    Par défaut


    J'ai trouvé c'est avec la fonction get_Formula de la calsse CRange que j'ai pu récupérer la formule.

    Merci pour ton exemple, cela m'a permis de m'en sortir et de comprendre comment cela fonctionnait.

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

Discussions similaires

  1. [EXCEL 2003] Echec autofill sur la classe range
    Par buhrne dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/12/2008, 17h03
  2. Fonction Find dans un "Range" ?
    Par Calimero06 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/06/2008, 09h47
  3. [MFC/Excel] Fonction Find de la classe CRange
    Par SmOkEiSBaD dans le forum MFC
    Réponses: 1
    Dernier message: 02/06/2008, 10h03
  4. Fonction find de excel
    Par qltmi dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/02/2008, 21h03
  5. [VBA Excel] problème de range avec find
    Par loacast dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/11/2005, 13h56

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