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 :

Rechercher un mot VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut Rechercher un mot VBA
    Bonsoir, c'est moi encore une fois
    J'ai lancé un code pour rechercher un mot sur ma feuille et j'ai remarqué que lorsqu'il détecte une ligne vide il arrête la recherche genre il ne saute pas la ligne vide pour continuer la recherche jusqu’à la fin de la page.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Rechercher()
     
        'Procédure permettant de réaliser une recherche que la colonne Nom
        Columns("B:B").Select
        Selection.Find(What:=Feuil1.Range("Nom"), After:=ActiveCell, LookIn:=xlValues, _
            Lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
            MatchCase:=False, SearchFormat:=False).Select
     
    End Sub

    Merci d'avance pour votre aide

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Pour l'utilisation de la méthode find, il est préférable de procéder comme ceci

    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 Recherche()
    Dim N As Long
    Dim c As Range
    Dim Nom As String
     
    Nom = Feuil1.Range("Nom").Value
    If Nom <> "" Then
        With Worksheets("nom de ta veuille")
            N = .Cells(.Rows.Count, 2).End(xlUp).Row
            Set c = .Range("B2:B" & N).Find(Nom, LookIn:=xlValues, Lookat:=xlPart)
            If Not c Is Nothing Then
                MsgBox c.Address
                'suite de ton code
            End If
        End With
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre chevronné
    Inscrit en
    Septembre 2007
    Messages
    1 132
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 132
    Points : 1 803
    Points
    1 803
    Par défaut
    Bonsoir,
    Citation Envoyé par Sa Mariam Voir le message
    j'ai remarqué que lorsqu'il détecte une ligne vide il arrête la recherche genre il ne saute pas la ligne vide pour continuer la recherche jusqu’à la fin de la page.
    Je pense que tu as mal "remarqué" car tu peux même rechercher les lignes vides.

    Par contre ta procédure est brute et elle plante si tu n'as pas de résultat. Comme ceci cela serait plus propre même si ton activecell risque de te poser des soucis et il vaudrait mieux le remplacer par [B1]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Rechercher()
     
    'Procédure permettant de réaliser une recherche que la colonne Nom
    Dim pos As Range
    Set pos = Columns("B:B").Find(What:=Feuil1.Range("Nom"), After:=ActiveCell, LookIn:=xlValues, _
        Lookat:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
        MatchCase:=False, SearchFormat:=False)
    If pos Is Nothing Then
        MsgBox "nom inexistant"
    Else
        pos.Activate
        ' ton traitement
    End If
    End Sub

  4. #4
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Bonsoir, ça donne toujours le même résultat, le code ignore les valeurs stocké après une ligne vide

  5. #5
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu as une seule valeur trouvée ou plusieurs?
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Plusieurs valeurs, je les classe sous format fe tableau sur l'interface

  7. #7
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Find trouve uniquement la première occurrence trouvée selon les paramètres.

    Regarde l'aide sur Range.Find, tu trouves un exemple explicite pour trouver toutes les occurrences.
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  8. #8
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Par contre ça me donne tous les résultats disponibles sur ma feuille sauf que ça s'arrete lorsqu'il ya une ligne vide, donc je veux la programmer pour rechercher sur toute la page

  9. #9
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Je n'ai jamais rencontré ce que tu affirmes.

    J'ai même testé maintenant ce 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
    18
    19
    20
    21
    Sub Recherche()
    Dim Nom As String, Prem As String
    Dim N As Long
    Dim c As Range
     
    Nom = Feuil1.Range("Nom").Value
    If Nom <> "" Then
        With Worksheets("Feuil1")
            N = .Cells(.Rows.Count, 2).End(xlUp).Row
            Set c = .Range("B1:B" & N).Find(Nom, LookIn:=xlValues, Lookat:=xlPart)
            If Not c Is Nothing Then
                Prem = c.Address
                Do
                    MsgBox c.Address
     
                    Set c = .Range("B1:B" & N).FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Prem
            End If
        End With
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  10. #10
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Meme avec ce code ça n'a pas marché :'(

  11. #11
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu peux mettre un extrait du fichier sans donnés confidentielles.

    C'est vraiment étrange
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  12. #12
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Bonjour, vu que mon fichier est un peu confidentiel ça concerne mon boulot, je vous ai envoyé celui là du même principeVBA - Formulaire Multi Recherche.xlsm

    Vous pouvez remarquer que le code ne détecte pas les valeurs stocké après la ligne vide


    Merci toujours pour votre aide

  13. #13
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Je ne sais pas pourquoi tu cherche le truc sur Find alors que tu utilises le filtre avancé

    Tu utilise Range("A5").currentregion. bien sur elle s'arrête à la première ligne vide.

    Utilise ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Filtrer()
    Dim LastLig As Long
     
    'Procédure permettant de filtrer les données à partir de la zone de critère
    With Feuil1
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A5:K" & LastLig).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
                                                .Range("N5:N6"), CopyToRange:=.Range("P5:Z5"), Unique:=False
    End With
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    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,

    Citation Envoyé par Sa Mariam Voir le message
    Bonjour, vu que mon fichier est un peu confidentiel ça concerne mon boulot, je vous ai envoyé celui là du même principeVBA - Formulaire Multi Recherche.xlsm
    Commences par supprimer tous les .Select de ton code (utilises les objets).
    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

  15. #15
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Mars 2019
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    Re-Bonsoir, Je suis pas trop familiarisée avec les commandes VBA.

    ça a marché

    Milles Merci encore une fois

    Bonne soirée

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

Discussions similaires

  1. [XL-2013] Rechercher un mot prédéfini dans une chaine de caractères (VBA)
    Par VincentOz dans le forum Excel
    Réponses: 5
    Dernier message: 18/08/2020, 13h35
  2. [XL-2010] Rechercher un mot dans le code VBA de plusieurs classeurs fermés ?
    Par modus57 dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 12/11/2016, 00h00
  3. Réponses: 3
    Dernier message: 22/05/2014, 23h19
  4. Réponses: 33
    Dernier message: 22/08/2011, 14h33
  5. [XL-2003] Recherche un mot dans un autre fichier excel avec vba
    Par alaoui_nizar dans le forum Excel
    Réponses: 5
    Dernier message: 19/04/2010, 17h37

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