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 :

Tester la présence d'une formule dans une cellule [XL-2010]


Sujet :

Macros et VBA Excel

  1. #41
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour,

    Franck c'est bien d'avoir spécifié le 3ê état et les explications sont très claires

    Citation Envoyé par patricktoulon Voir le message
    parcontre je viens de tester si j'ai pas de formule dans la plage elargie j'ai quand meme le message '"pas de cellules correspondante"
    Oui Patrick je l'ai déjà dit dans l'un de mes posts

    Menhir :
    C'est A2 qui est sélectionné, malgré le fait qu'on l'ai appliquée uniquement à A1.
    Pour moi, et j'espère ne pas me tromper, c'est un comportement normal car SpecialCells prends en compte toutes les cellules d'une feuille, mais pour cela il faut lui spécifier une cellule / plage de départ …
    et là on lui demande de trouver les cellules contenant une formule, A1 n'en contient pas, mais est le point de départ / adresse pour l'utilisation de SpecialCells.

    Maintenant je pense qu'il pourrait y avoir des utilisations avec SpecialCells et Intersect … à voir …
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  2. #42
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par RyuAutodidacte Voir le message
    Pour moi, et j'espère ne pas me tromper, c'est un comportement normal car SpecialCells prends en compte toutes les cellules d'une feuille, mais pour cela il faut lui spécifier une cellule / plage de départ …
    et là on lui demande de trouver les cellules contenant une formule, A1 n'en contient pas, mais est le point de départ / adresse pour l'utilisation de SpecialCells.
    Peu importe que ce soit un comportement normal ou non.
    C'est de manière évidente un comportement qui la rend inutilisable dans le cas présent jusqu'à preuve du contraire.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #43
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    @ryu
    tu a raison specialcells (avec une seule cellule) prend bien toute la feuille
    met une/des formule(s) ou tu veux dans le sheets sauf en "B2" et teste ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
     MsgBox EstFormule(Feuil1.[B2])
    End Sub
     '
    '
    Function EstFormule(F As Range) As String
        'On Error Resume Next
            EstFormule = F.SpecialCells(xlCellTypeFormulas).Address
            'If Err Then EstFormule = False
        'On Error GoTo 0
    End Function
    parti de la en effet le intersect est de rigeur
    et la gestion d'erreur au cas ou il n'y a pas d'occurence et de rigueur aussi

    par contre sur une plage 2 cells minimum specialcells donne les trouvée de la plage en parametre
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #44
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Re Patrick,

    Ce test là je l'avais déjà fait d'ailleurs j'ai parlé du pb dans ce post : https://www.developpez.net/forums/d1.../#post10384247

    La réponse de Menhir dans le post #6 disant que l'on ne pouvait rien trouvé de fiable m'a titillé l'esprit par rapport à la réponse de Thautheme en post #2

    Le post de Thautheme m'a rappeler le mécanisme SpecialCells(xlCellTypeFormulas) mais aussi m'a montré le défaut à pointer sur une cellule de son choix.
    C'est pour cela que j'en suis venu à utiliser directement Intersect, seul moyen à ma connaissance de restreindre SpecialCells(xlCellTypeFormulas) à la cellule/plage de son choix
    Il manquait plus qu'à résoudre le problème de l'erreur que j'ai rencontré ICI mais vite résolu

    Bien entendu c'est une solution non conventionnelle qui nous a permis de triturer SpecialCells(xlCellTypeFormulas) mais qui marche.

    Et je rejoins Franck qui a tout a fait raison sur le fait que la fonction ne peut être Boolean, mais de type Variant afin d'avoir, dans un premier temps, les états que sont :
    True , False et Null

    L'utilisation de HasFormula est pré-requis afin de savoir si une cellule ou une plage contient une/des formule(s) pour la cellule/toutes les cellules/une partie des cellules (en plus il n'y a pas de gestion d'erreur)

    Alors que peut on faire d'intéressant avec SpecialCells(xlCellTypeFormulas) seul et avec intersect en sus :

    - avec SpecialCells(xlCellTypeFormulas) seul => Vérifier si il existe des formules dans une feuille (on l'a vu avec l'erreur) => cela éviterai de vérifier par exemple plusieurs cellules par ci par là dans une feuille dans le cas où il n y a pas de formules

    - a) avec SpecialCells(xlCellTypeFormulas) et Intersect => Vérifier si il y a une/des formule(s) dans une cellule/plage (revoir le comportement en type variant pour prendre en compte tous les cas)

    - b) avec SpecialCells(xlCellTypeFormulas) et Intersect => Connaitre le nombre de cellules concernées par une formule dans une plage que l'on aura déterminée

    - c) avec SpecialCells(xlCellTypeFormulas) et Intersect => Obtenir les adresses des cellules contenant une formule voir créer un plage qu'avec les cellules concernées dans une plage que l'on aura déterminée

    … … … à voir, à explorer

    Voilà

    PS : je le re-dis dans un premier temps l'utilisation de HasFormula est conseillé
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  5. #45
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui je suis d'accords "hasformula" et fait pour ca
    j'ai trouvé la tripatouille de specialcells interessante tout de meme
    mais perso j'ai toujours utilisé hasformula
    je vais lancer un sujet similaire demain avec autofilter et specialcells pour voir si d'autre ont une solution mieux que la mienne
    j'ai vu quelques exemple ici et la mais qui n'a rien a voir avec ma methode
    encore un debat en perspective
    A demain
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #46
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    pour moi Intersect ne présente un intérêt que pour tenter de contourner l'impossibilité de SpecialCells sur une plage d'une cellule.
    En vba pur et sur une plage de plusieurs cellules aucune raison de faire des contorsions.
    Quand à son utilisation dans une fonction sur feuille il semble raisonnable de le bannir.
    eric

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [Toutes versions] Imbriquer une formule dans une formule à l'aide de l'outil Insertion de fonction
    Par Philippe Tulliez dans le forum Contribuez
    Réponses: 0
    Dernier message: 27/08/2014, 11h21
  2. [XL-2010] Formule : attribuer une formule dans une cellule
    Par popi33370 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2014, 18h06
  3. Réponses: 3
    Dernier message: 29/01/2008, 12h08
  4. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  5. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13

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