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 recherche. Rechercher le contenu d'une cellule.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut Fonction recherche. Rechercher le contenu d'une cellule.
    Bonjour,

    J'essaie d'apprendre le VBA. Je suis à mes débuts.

    Dans excel, j'aimerais rechercher le contenu de la cellule A1 dans la feuille 1 afin d'atteindre la ligne suivante qui contient la même valeur que celle contenue dans A1.
    Lorsque j'utilise la fonction recherche pour recherche =A1, ça ne fonctionne pas. Cela recherche le texte A1 plutôt que la valeur contenue dans cette cellule.

    J'espère que quelqu'un d'entre vous pourra m'aider.

    Merci beaucoup

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Et si tu inscrivais ce que tu fais pour qu'on puisse mieux comprendre ?
    J'imagine que tu utilises Find, c'est ça ?

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    La ligne suivante te donne l'adresse de la cellule suivante ayant la même valeur que la cellule A1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AdreesseCherchée = Cells.Find([A1].Value, [A1], , xlWhole, xlByRows, xlNext).Address

  4. #4
    Membre du Club
    Femme Profil pro
    Autre
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Autre
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Par défaut
    Bonjour, je propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Cells.Find(What:=range("a1").value, after:=Range("a1"), LookIn:=xlValues, LookAt _
            :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
            True, SearchFormat:=False).Select
    il cherche le contenu de A1, à partir de A1 et se positionne sur la prochaine cellule qui la contient

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut
    Citation Envoyé par cathlebo Voir le message
    Bonjour, je propose :
    Cells.Find(What:=range("a1").value, after:=Range("a1"), LookIn:=xlValues, LookAt _
    :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    True, SearchFormat:=False).Select
    il cherche le contenu de A1, à partir de A1 et se positionne sur la prochaine cellule qui la contient
    Merci beaucoup pour la solution. Ça fonctionne à merveille!
    J'aimerais utiliser un code semblable qui me permettrait de me positionner à la prochaine cellule qui contient le même contenu que la cellule sélectionné.
    Par exemple, si je suis sur A1, il se positionne à la prochaine cellule qui contient le même contenu.
    Si je suis sur A2, il cherche le contenu et se positionne sur la prochaine cellule qui le contient.

    Cela est-il possible?

    Merci beaucoup

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Prend le temps de regarder l'aide sur Find.
    Positionne-toi sur le mot Find et tape F1
    Tu verras dans l'exemple fourni qu'il existe aussi FindNext

    Mais tout ça dépend de ce que tu cherches à faire.
    C'est bien beau de se positionner sur une nouvelle cellule, mais qu'est-ce que tu dois y faire ?

  7. #7
    Membre du Club
    Femme Profil pro
    Autre
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Autre
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Par défaut
    Bonjour,
    Parmi est dans le vrai. Doublement, car tout dépend de ce que l'on veut faire.
    Si on veut faire une opération sur toutes les cellules qui contiennent "Val1", une boucle semble aussi une bonne solution - une boucle "while" le "find" n'est pas en erreur - et à un moment, il y aura erreur car on sera en fin de fichier et il ne trouvera plus la valeur.
    Et à la place de repartir de A1 dans la fonction find, démare à partir de activecell.
    Cdlt

  8. #8
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Citation Envoyé par Mikamun Voir le message
    J'essaie d'apprendre le VBA. Je suis à mes débuts.

    Dans excel, j'aimerais rechercher le contenu de la cellule A1 dans la feuille 1 afin d'atteindre la ligne suivante qui contient la même valeur que celle contenue dans A1.
    Lorsque j'utilise la fonction recherche pour recherche =A1, ça ne fonctionne pas. Cela recherche le texte A1 plutôt que la valeur contenue dans cette cellule.
    C'est un problème un peu complexe d'effectuer une recherche avec FIND en utilisant le paramètre LookIn:=xlValues pour la raison que tu soulèves. C'est plus simple avec le paramètre LookIn:=xlFormulas si les valeurs sont des constantes, c'est-a-dire pas le résultat d'une formule.

    Avec xlValues, la technique varie selon qu'on cherche dans un champ contenant des dates, des valeurs numériques ou du texte.

    Plus simple est d'utiliser une itération pour comparer la propriété VALUE des cellules:


    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Sub ProchaineValeurIdentique()
     
        Set f = ActiveSheet
        Set Actuelle = ActiveCell
        Set debut = Actuelle.Offset(1)
     
        colonne = Actuelle.Column
        derniereLigne = f.Cells(Rows.Count, colonne).End(xlUp).Row
     
        LeType = TypeName(Actuelle.Value)
     
    Recherche:
     
        For i = debut.Row To derniereLigne
     
            If f.Cells(i, colonne).Value = Actuelle.Value Then
                If TypeName(f.Cells(i, colonne).Value) = LeType Then
                    f.Cells(i, colonne).Select
     
                    If Actuelle.Address = f.Cells(i, colonne).Address Then
                        MsgBox "C'est la seule occurence.", , ""
                    End If
     
                    Exit Sub
     
                End If
            End If
     
        Next
     
        If Actuelle.Row > 1 Then
            choix = MsgBox("Recommencer la recherche à la ligne 1 ?", vbYesNo, "Fin de la colonne")
     
            If choix = vbYes Then Set debut = f.Cells(1, colonne): GoTo Recherche
     
        End If
     
        MsgBox "C'est la seule occurence.", , ""
     
    End Sub

  9. #9
    Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut
    Merci beaucoup pour votre aide.
    Je n'arrive malheureusement pas à faire ce que j'aimerais faire.

    Je vous explique.

    J'ai 2 feuilles Excel. J'aimerais combiner les données de la première avec la deuxième.
    Voici des données fictives.

    Feuille 1
    1
    3
    4
    9
    12
    13
    16
    20
    21
    25

    Feuille 2
    1 A
    2 B
    3 C
    4 D
    5 E
    6 F
    7 G
    8 H
    9 I
    10 J

    J'essaie de créer une macro qui rechercher d'abord le contenu de la cellule sélectionnée de la feuille 1 dans la feuille 2. Ensuite, elle doit copier le contenu de la cellule qui est à sa droite (colonne B) et la coller dans la cellule à droite de celle sélectionnée dans la feuille 1 (colonne B).

    Après avoir lancé la macro sur chacune des cellules de la colonne A de la feuille 1, le résultat final serait le suivant:

    1 A
    3 C
    4 D
    9 I
    12
    13
    16
    20
    21
    25

    Je n'arrive pas à faire ce que j'aimerais. Je pense bien que cela est possible.

    Merci beaucoup pour votre aide!

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Une simple RechercheV devrait suffire.

    Est-ce que c'est nécessaire de passer par une macro ?

  11. #11
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    'utilisation de RECHERCHEV (VLookUp)
    Dim C As Range
    With Sheets("Feuil1")
        For Each C In .Range(.[A1], .Cells(.Rows.Count, 1).End(xlUp))
            C.Offset(, 1).Value = Application.VLookup(C.Value, Sheets("Feuil2").Range("A:B"), 2, 0)
            If Application.IsNA(C.Offset(, 1).Value) Then C.Offset(, 1) = ""
        Next C
    End With
    End Sub

  12. #12
    Membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur après-vente

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut
    Merci beaucoup à vous tous!
    Grâce à vos explications, j'ai réussi à créer une macro qui fait bien le travail.
    Je suis très content d'avoir réussi.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/11/2014, 18h22
  2. [XL-2003] Macro rechercher le contenu d'une cellule dans tout le feuillet
    Par laboss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/03/2014, 16h20
  3. [XL-2010] RechercheV, plage de recherche contenu dans une cellule
    Par gandalf20000000 dans le forum Excel
    Réponses: 1
    Dernier message: 27/12/2011, 16h26
  4. Rechercher une partie du contenu d'une Cellule
    Par kuma_buzz dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/06/2008, 12h36
  5. Réponses: 4
    Dernier message: 24/07/2006, 03h03

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