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 personnalisée dans une feuille de calcul


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Par défaut Fonction personnalisée dans une feuille de calcul
    Bonjour,

    J'ai essayé de créer une fonction personnalisée me permettant de déterminer si une valeur est présente ou non dans une plage. voici le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Function ESTPRESENT(TEXTE As String, PLAGE As Range) As Boolean
     
    If PLAGE.Find(TEXTE) Is Nothing Then
        ESTPRESENT = False
    Else
        ESTPRESENT = True
    End If
     
    End Function
    Cette fonction marche bien en VBA. Mais lorsque j'utilise cette fonction personnalisée sur une feuille de calcul, je sélectionne ma plage et le résultat est systématiquement "FAUX".
    Est-ce que qqn sait pourquoi?
    Merci de votre aide. John81

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Commence par nous montrer la formule mise dans ta cellule.

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    J'ai refais ta fonction, j'ai testé; si la valeur de H2 (en entier) existe en colonne A;->vrai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function ESTPRESENT(TEXTE As String, PLAGE As Range) As Boolean
     
    ESTPRESENT = IIf(PLAGE.Find(Trim(TEXTE)) Is Nothing, False, True)
     
    End Function

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Oui...
    Et il serait bon de forcer le calcul systématique par

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Je crois le Application.Volatile n'est pas nécessaire
    ou je me trompe

  7. #7
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    124
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 124
    Par défaut
    C'est bizarre mais chez moi ça me donne toujours la valeur "FAUX"

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Citation Envoyé par John81 Voir le message
    C'est bizarre mais chez moi ça me donne toujours la valeur "FAUX"
    Ah...
    Et tu dis que si tu utilises la même fonction en lui passant une plage et un texte depuis VBA (et pas depuis une cellule, en formule) , tout va par contre bien ?

    Etrange, en effet....

    Je n'ai pas les moyens, en ce moment, d'essayer, mais il n'est pas impossible que nous nous trouvions devant un autre cas de figure de carence de "grattage" conjoint entre deux équipes (celle d'EXCEL et celle de VB).

    Va jeter un coup d'oeil à cette discussion qui n'a pas passionné les foules, apparemment (et pourtant ....) :
    http://www.developpez.net/forums/d83...o/#post4766914
    Cela ne résoudra pas ton problème, qui demeure toutefois intéressant (décidément) si tu confirmes la différence de réaction entre depuis VBA et depuis une cellule...

  9. #9
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Rien à voir avec le bug du CheckSpelling
    ci-joint fichier test

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjourt, Mercatog,

    Comme dit souvent : je n'ouvre jamais un xls non écrit par moi !
    Et je ne pourrais de toutes ùmanières pas le faire en ce moment...
    Dis-nous simplement :
    1) que te retourne la cellule concernée par la formule ?
    2) as-tu fait le même appel de fonction, mais en VBA (depuis, par exemple, un bouton de commande, en lui passant les paramètres attendus) ?
    Les deux retours sont-ils les mêmes ?
    Si le 1er retourne FAUX et le second VRAI, c'est le même type de bug (très exactement le même) !

    EDIT :
    Ta réponse va être importante, Mercatog, principalement si les deux retournent VRAI (et tu seras alors gentil de nous préciser la version d'Excel).

  11. #11
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir Ucfoutu;
    Je sais, le fichier a été destiné à John
    Excel 2003:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
    Public Function ESTPRESENT(TEXTE As String, PLAGE As Range) As Boolean
     
    ESTPRESENT = IIf(PLAGE.Find(Trim(TEXTE)) Is Nothing, False, True)
     
    End Function
    Dans une feuille je mets en H2: "toto"
    en C2 =ESTPRESENT(H2;A:A)
    en C3: =ESTPRESENT(" toto ";A:A)
    je mets ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub CommandButton1_Click()
    Range("D2").Value = ESTPRESENT(Range("H2").Value, Columns(1))
    Range("D3").Value = ESTPRESENT("toto", Columns(1))
    End Sub
    Le résultat est le même!

  12. #12
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Merci énormément, Mercatog,

    A John, maintenant :
    - Quelle est ta version de EXCEL ?
    - la plage "prospectée" contient-elle bien au moin une cellule avec la chaîne recherchée ?
    - Nous confirmes-tu deux réactions différentes selon que l'on appelle depuis une cellule (fonction personalisée en formule) ou depuis VBA (en passant les mêmes paramètres) ?
    Ta réponse est également importante ....

    Bon...
    J'ai mis en route Excel sur une autre machine, pour y voir clair
    Excel 2007
    ===>>> pas de bug non plus ! ça marche bien ...

    Attendons maintenant John ...

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/02/2008, 09h07
  2. Supprimer une/des image(s) dans une feuille de calcul
    Par Lorenzole+bo dans le forum Excel
    Réponses: 1
    Dernier message: 21/12/2007, 12h23
  3. Utiliser un userform pour lire et écrire dans une feuille de calculs
    Par sebi78 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/04/2007, 20h51
  4. [VBA-E] Nommer chemin d'accès dans une feuille de calcul.
    Par BRUNO71 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/03/2007, 14h30
  5. [VBA-E] Passer d'un contrôle à l'autre avec tab dans une feuille de calculs
    Par small_heart dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/02/2007, 21h57

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