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 pour rechercher si j'ai formule dans une ligne de sélection


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Par défaut Fonction pour rechercher si j'ai formule dans une ligne de sélection
    Bonjour,
    J'ai crée une fonction qui me doit me retourner si j'ai une fonction sur ma ligne. Mais le résultat n'est pas convaincant.
    merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Function Recher_Formule_Ligne(Ligne As Long, ColDep, ColFin)
    Formule = ""
    Range(Cells(Ligne, Range(ColDep & 1).Column), Cells(Ligne, Range(ColFin & 1).Column)).Select
     
    Dim CurCell As Object
          For Each CurCell In Range(Cells(Ligne, Range(ColDep & 1).Column), Cells(Ligne, Range(ColFin & 1).Column))
            Formule = CurCell.HasFormula
            If Formule = Vrai Then GoTo 99
          Next
    99:
    Recher_Formule_Ligne = Formule
    End Function

    Colonne A Colonne B Colonne C (Formule) Colonne C (Résultat
    Ligne 1 Code Libellé =Recher_Formule_Ligne(LIGNE(C1);"A";"B") FAUX
    Ligne 2 WSM4530 VIS SPHERIQUE DELTA 4.5LG30 - WSM4530 =Recher_Formule_Ligne(LIGNE(C2);"A";"B") FAUX
    Ligne 3 WSM4536 VIS SPHERIQUE DELTA 4.5LG36 - WSM4536 =Recher_Formule_Ligne(LIGNE(C3);"A";"B") FAUX
    Ligne 4 WSM4542 VIS SPHERIQUE DELTA 4.5LG42 - WSM4542 =Recher_Formule_Ligne(LIGNE(C4);"A";"B") FAUX
    Ligne 5 WTIH036 ="TETE HUMERALE DELTA 36/0 - WTIH036" =Recher_Formule_Ligne(LIGNE(C5);"A";"B") FAUX
    Ligne 6 WTIH042 ="TETE HUMERALE DELTA 42/0 - WTIH042" =Recher_Formule_Ligne(LIGNE(C6);"A";"B") FAUX
    Ligne 7 WTIH436 TETE HUMERALE DELTA 36/4 - WTIH436 =Recher_Formule_Ligne(LIGNE(C7);"A";"B") FAUX
    Ligne 8 WTIH442 TETE HUMERALE DELTA 42/4 - WTIH442 =Recher_Formule_Ligne(LIGNE(C8);"A";"B") FAUX
    Ligne 9 XC01015 ="PLAQUE ADHESIX 10X15CM" =Recher_Formule_Ligne(LIGNE(C9);"A";"B") FAUX

    Sur la ligne 5,6 et 9 je devrais avori VRAI comme résultat.

    Merci.

  2. #2
    Membre émérite
    Avatar de eric4459
    Homme Profil pro
    Ingénieur Gestion de Projets
    Inscrit en
    Avril 2014
    Messages
    605
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Gestion de Projets
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 605
    Par défaut
    Bonjour,
    Tu pourrais essayer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If CurCell Like "*=*" Then
            GoTo 99
            End If
    Eric
    "Vous n’avez cessé d’essayer ? Vous n’avez cessé d’échouer ? Aucune importance !
    Réessayez, échouez encore, échouez mieux." Samuel Beckett
    Pensez aux balises et
    Visitez les FAQ Excel et allez faire un tour ici
    Tutoriels de SilkyRoad

  3. #3
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    un exemple :
    une procédure qui va chercher la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Option Explicit
    Dim formule As Boolean
    Sub debut()
    Dim depart As Range, Fin As Range, d As Long
    formule = False
    Set depart = Range("A1")
    d = Cells(1, Columns.Count).End(xlToLeft).Column
    Set Fin = Cells(Rows.Count, d)
    Recher_Formule_Ligne depart, Fin
    MsgBox formule
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function Recher_Formule_Ligne(ColDep As Range, ColFin As Range)
    Dim CurCell As Range
    For Each CurCell In Range(ColDep, ColFin)
      If CurCell.HasFormula = True Then formule = True: Exit For
    Next
    End Function
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Si c'est juste pour savoir si une formule est présente dans une plage définie, il existe la méthode SpecialCells
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function isFormula(myRange As Range) As Boolean
     Dim R As Range
     With myRange
      On Error Resume Next
      Set R = .SpecialCells(xlCellTypeFormulas, 23)
      isFormula = Err = 0
      On Error GoTo 0
     End With
     Set R = Nothing
    End Function
    Que l'on invoque comme dans l'exemple ci-dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub TestFormula()
     Dim rng As Range
     Set rng = Feuil1.Range("A1:D1")
     MsgBox isFormula(rng)
     Set rng = Nothing
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/05/2013, 22h18
  2. [XL-2007] recherche première cellule non vide dans une ligne
    Par tigrou530 dans le forum Excel
    Réponses: 3
    Dernier message: 23/02/2012, 13h21
  3. fonction pour compter le nombre de personne dans une tranche d'age
    Par djo007 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/02/2012, 00h03
  4. [AC-2000] Création d'une requête pour compter le nombre de ok dans une ligne
    Par yassine06 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/05/2010, 16h10
  5. Réponses: 7
    Dernier message: 03/04/2008, 22h31

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