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

Excel Discussion :

WorksheetFunction.find ne marche pas en boucle


Sujet :

Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut WorksheetFunction.find ne marche pas en boucle
    Bonjour à tous et à toutes (c'est mon premier message)

    Actuellement débutant en VBA j'essaie de faire une boucle qui détecte une chaîne de caractère et revoie une autre chaîne de caractère en réponse. Je préfère utilise VBA car la formule excel serait trop longue et illisible.

    le problème est que ça marche quand il trouve bien le texte mais quand la formule devrait renvoyer #valeur la formule bug et je ne trouve pas de solution.
    j'aimerai aussi ajouté un Or pour mettre plusieurs chaines de caractère (j'en ai beaucoup au moins 15)

    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
    Sub soumis_or_not_soumis()
     
    Dim i As Integer
     
    X = WorksheetFunction.CountA(Columns(4))
     
    MsgBox X
     
    For i = 2 To X
     
    If WorksheetFunction.Find("text", Cells(i, 4)) Then
        Cells(i, 8) = "soumis"
    Else
     
        Cells(i, 8) = "non soumis"
     
    End If
     
    Next i
    Merci d'avance

  2. #2
    Expert confirmé Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Points : 4 299
    Points
    4 299
    Par défaut
    Salut,

    Pour info (mais c'est normal, c'est ton premier poste ...) quand tu mets du code, il y a une balise spécifique en haut. C'est le #.
    C'est plus lisible (comme en dessous).

    Voici une proposition de code
    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
    Sub soumis_or_not_soumis()
     
        Dim i As Integer
     
        X = WorksheetFunction.CountA(Columns(4))
     
     
        For i = 2 To X
     
            If Cells(i, 4) = "text1" Or Cells(i, 4) = "text2" Then
                Cells(i, 8) = "soumis"
            Else
                Cells(i, 8) = "non soumis"
            End If
     
        Next i
    End Sub
    Et pour la lisibilité de ton code, pense à décaler suivant les structures (If, For, ...)

    En espérant que c'est ce que tu veux.

    GG
    Jérôme

    " Je pense donc je suis. Tu es donc j'apprends ". (GCM)

    Si ce message vous à aidé, merci de cliquer sur . Si ce message est résolu, cliquez sur .

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    merci pour ta réponse malheureusement ce n'est pas ce que je cherche :/

    je cherche à faire une reconnaissance partiel de texte et non pas la totalité de la case. c'est pourquoi j'utilise la fonction Find.

    Cdt,

  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
    12 767
    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 : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    e cherche à faire une reconnaissance partiel de texte et non pas la totalité de la case. c'est pourquoi j'utilise la fonction Find.
    Pourquoi ne pas utiliser la méthode Find de l'objet Range qui permet la recherche partielle et évite de parcourir toutes les lignes de la liste de données
    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

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,

    Pourquoi ne pas utiliser la méthode Find de l'objet Range qui permet la recherche partielle et évite de parcourir toutes les lignes de la liste de données

    bonjour vous auriez un exemple de code ?

  6. #6
    Membre éclairé Avatar de PrinceCorwin
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Mars 2012
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 337
    Points : 692
    Points
    692
    Par défaut
    Bonjour,

    Pourquoi pas la fonction Instr(1,cells(i,4), "Text") ?
    si =0 ou null, alors la chaîne n'a pas été trouvée, sinon donne la position de départ.

    Bon Dév'
    Si ce message vous a aidé, appuyez sur le petit , ca fait toujours plaisir
    Merci.

  7. #7
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    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 : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je préfère utilise VBA car la formule excel serait trop longue et illisible
    Et l'utilisation de la fonction CHERCHE ou TROUVE (la seconde est sensible à la casse, l'autre pas), imbriquée dans un ESTERR, lui même imbriqué dans un SI ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(ESTERR(CHERCHE("text";[@[Libellé 4]]));"Non soumis";"Soumis")
    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

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    comptable
    Inscrit en
    Décembre 2019
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : comptable
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2019
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    malheuresement cela ne repond pas à la question de l'utilisation du Ou :/

    j'ai vu que dans certains language de code il y a la méthode try catch mais il n'existe rien de comparable.

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

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Peut-être quelque chose comme :
    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub soumis_or_not_soumis()
    Dim i As Integer
     
      X = WorksheetFunction.CountA(Columns(4))
      For i = 2 To X
         Select Case Cells(i, 4).Value
           Case "text0" To "text9", "textA" To "textZ"  ' etc...
             Cells(i, 8) = "soumis"
           Case Else
             Cells(i, 8) = "non soumis"
           End If
         End Select
      Next i
    End Sub
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

Discussions similaires

  1. la fonction worksheetfunction.sum ne marche pas
    Par souhail77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/03/2017, 20h35
  2. [Batch] commande (7-zip) qui ne marche pas dans boucle FOR
    Par emTu_ dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 21/08/2015, 14h58
  3. Fonction Find ne marche pas à tous les coups...
    Par silvere123 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/08/2012, 15h54
  4. [XL-2003] VBA Find ne marche pas dans les formules
    Par Ghorin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/11/2011, 17h56
  5. Controls.Find("ToolStripMenuItem1") MARCHE PAS ?
    Par bilal.sdi dans le forum VB.NET
    Réponses: 6
    Dernier message: 09/08/2011, 16h34

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