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 expression dans une feuille excel.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    automatitien
    Inscrit en
    Novembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 60
    Par défaut Tester la présence d'une expression dans une feuille excel.
    Bonjour,

    J'aimerai teste la présence d'une expression dans l'intégralité d'une feuille excel.

    j'ai plusieurs tableau dans cette feuille et pas forcément de point de repère.
    du coup l'utilisation d'une boucle est à proscrire je pense.
    De plus il fraudais respecter la case...donc si je recherche Test, il ne faut pas que la macro s'arrête sur Test2

    je me disais que de faire une recherche dans la feuille serait mieux.
    le top serai de renvoyer les valeur 0 ou 1 si la valeur est présente.

    à terme je colorerai le texte d'origine en vers ou rouge si la correspondance a été trouvée dans le tableau.

    merci beaucoup pour votre aide.

    Valery

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour et bienvenu sur le Forum,

    Pour ton besoin, tu peux utiliser en l'adaptant le code retourné sur l'aide Microsoft quant à la méthode Find.

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Citation Envoyé par valery.petit Voir le message
    J'aimerai teste la présence d'une expression dans l'intégralité d'une feuille excel.

    à terme je colorerai le texte d'origine en vers ou rouge si la correspondance a été trouvée dans le tableau.
    Bonjour,

    Une proposition sans VBA, en formule donc, à mettre dans une MFC pour gérer automatiquement la couleur:
    =NB.SI(Feuil1!A:Z;"test")>0

  4. #4
    Membre averti
    Homme Profil pro
    automatitien
    Inscrit en
    Novembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 60
    Par défaut
    Bonjour, Merci à vous deux pour vos réponse.

    halaster08 : je préfère rester en VBA d'autant plus que je ne connais pas la taille de mon tableau d'origine qui change d'un projet à l'autre.


    MarcelG : effectivement ça semble être la bonne solution.

    J'ai testé ceci, mais ai un défaut "Boucle sans Do"......

    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
    21
    22
    23
    24
    25
    26
    27
     
    Sub Valider_Tags()
     
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    'On Boucle Chaque tags pour valider sa présence dans le catalogue.
    Nb_ligne_Valid = Range("F65536").End(xlUp).Row
    For Each Valid In Range("F3:F" & Nb_ligne_Valid)
     
    With Worksheets(Tags) '.Range("a:z")
        Set c = .Find("F" & c + 3, LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
        Do
     
        ' On colore le tags en vert si présence validée
            Range("firstAddress").Select
            With Selection.Font
            .Color = -11489280
            .TintAndShade = 0
     
            Loop While Not c Is Nothing
        End If
    End With
     
    Next Valid
     
    End Sub

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Valery,

    Les messages d'erreur Excel VBA ne sont certes pas toujours explicites.

    Il te manque une fin de bloc.
    Regarde les Do, With.....
    Un conseil pour éviter ce genre d'erreur.
    Bien indenter le code. A chaque bloc(Do, With....), mettre en retrait le code placé à l'intérieur.

    Autre chose. Tu peux ôter ces f... Select qui n'ajoutent rien au code, si ce n'est que de l'alourdir.

  6. #6
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut Patrice,


    Pas de Select!!
    Ce code ne correspond pas à l'aide en ligne de la fonction Find.
    En effet, la boucle s'effectue tant que c n'est pas rien, certes, mais aussi tant que l'objet trouvé n'a pas la même adresse que la 1ère.

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Citation Envoyé par MarcelG Voir le message
    Salut Patrice, ...
    C'est pas moi qui demande de l'aide, j'ai n'ai fait qu'indenter son code sans aucune modification pour lui monter où est son erreur "Boucle sans Do" !
    Avançons pas à pas ...

  8. #8
    Membre averti
    Homme Profil pro
    automatitien
    Inscrit en
    Novembre 2015
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Novembre 2015
    Messages : 60
    Par défaut
    Oui effectivement j'avais coupé collé un bout de code crée avec l'enregistreur d'Excel et avais oublié un morceau visiblement.

    Je supprime le .Select, ça veux dire que j'en ai pas besoin au vu de l'avancement du programme?

    actuellement l'expression à vérifier est dans l'onglet Tags et je veux vérifier qu'elle soit dans l'onglet Catalogue.
    auquel cas je lui donne la couleur verte.

    J'ai un peu modifié le code pour m'assurer d'être dans le bon tableau. -> ligne 9

    Il y a toujours une erreur '438' : Propriété ou méthode non gérée par l'objet -> ligne 9

    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
    21
    22
    23
     
    Sub Valider_Tags()
     
    '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    'On Boucle Chaque tags pour valider sa présence dans le catalogue.
    Nb_ligne_Valid = Range("F65536").End(xlUp).Row
    For Each Valid In Range("F3:F" & Nb_ligne_Valid)
        With Worksheets(3) '.Range("a:z")
            Set C = .Find("Tags!F" & C + 3, LookIn:=xlValues)
            If Not C Is Nothing Then
                firstAddress = C.Address
                Do
    ' On colore le tags en vert si présence validée
                    'Range("firstAddress").Select
                    With Selection.Font
                        .Color = -11489280
                        .TintAndShade = 0
                    End With
                Loop While Not C Is Nothing
            End If
        End With
    Next Valid
    End Sub

  9. #9
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    C'est là qu'on comprend tout l'intérêt d'indenter le code correctement !!!
    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
    Sub Valider_Tags()
    Nb_ligne_Valid = Range("F65536").End(xlUp).Row
    For Each Valid In Range("F3:F" & Nb_ligne_Valid)
        With Worksheets(Tags) '.Range("a:z")
            Set c = .Find("F" & c + 3, LookIn:=xlValues)
            If Not c Is Nothing Then
                firstAddress = c.Address
                Do
                    Range("firstAddress").Select
                    With Selection.Font
                        .Color = -11489280
                        .TintAndShade = 0
                    End With
                Loop While Not c Is Nothing
            End If
        End With
    Next Valid
    End Sub

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [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
  4. 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
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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