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 :

recherche sur une plage


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut recherche sur une plage
    Bonjour,

    Je plante un peu sur un code.

    J'ai un classeur constitué de plusieurs feuilles. Sur l'une d'elles il y a une case à remplir pour lancer une macro (nommé "nom" dans mon code).

    Le mot écrit dans cette case doit être dans une liste présente sur une autre feuille. Ce que je veux, c'est lancer une boite di dialogue si le mot a été mal tapé.
    J'ai essayé le code suivant mais sans succès :


    Quelqu'un aurait-il une idée ?

    Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub verifnom()
    Dim nom As String
    nom = Worksheets("réglages").Range("K6")  'récupère le mot entré pour le vérifier
    Worksheets("creation").Activate
     
    Sheets("creation").Range("A3:A40").Select 'definit la zone de recherche
    If (Selection.Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext).Activate) = False Then
     
       MsgBox "la personne n'existe pas, vérifier l'orthographe", vbCritical, "erreur"
     
    End If
    End Sub

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    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
    Dim c as range
    With Sheets("creation").Range("A3:A40")
        Set c = .Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
        SearchOrder:=xlByRows, SearchDirection:=xlNext) '.Activate
        If not c is nothing then
              NoLigne = c.row
              NoCol = c.column
              Adress = c.address
              LeNom = c
              'Tu peux lancer ta macro
           else
               MsgBox "la personne n'existe pas, vérifier l'orthographe", vbCritical, "erreur"
        End If
    End with
    Set c = Nothing

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    Bon, j'ai essayé ce code avec une msgbox pour le tester, mais il me renvoit une incompatibilité de type sur le set c. Je précise que ce qui est écrit dans la case "nom" est en fait l'ensemble nom prenom séparé par un espace.

    Il m'a demandé également de donner une instruction après le premier if, et j'ai mis un then, mais sans grande certitude vu que je ne comprend pas très bien à quoi correspondent les lignes situées après.

    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
     Sub verifnom()
     
     
    Dim nom As String
     
    nom = Worksheets("réglages").Range("K6")
     
    With Sheets("creation").Range("A3:A40")
     
        Set c = .Find(What:=nom, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, _
        SearchOrder:=xlByRows, SearchDirection:=xlNext) '.Activate
          If Not c Is Nothing Then
              NoLigne = c.Row
              NoCol = c.Column
              Adress = c.Address
              LeNom = c
              'Tu peux lancer ta macro
     
           MsgBox "ça marche", vbCritical, "erreur"
           Else
               MsgBox "la personne n'existe pas, vérifier l'orthographe", vbCritical, "erreur"
        End If
    End With
     
    End Sub

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par ousk'
    Dim c as range
    Je ne sais pas si ça vient de là mais tu devrais tout de même essayer

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Je ne sais pas si ça vient de là mais tu devrais tout de même essayer

    non, le résultat est le même

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    simple suggestion.
    si tu veux etre sure ques les orthographes et la casse et les espacements soient a l'identique, tu devrais plutôt opter pour une liste de validation.

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Remplace LookIn:=xlFormulas par LooKin:=xlValues
    Je n'avais pas fait attention...
    Tes nom et prénom sont bien dans une même cellule ?

    Edit
    J'ajoute que tu pourrais simplifier ta ligne de recherche à ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set c = .Find(nom, LookIn:=xlValues)

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 40
    Points : 30
    Points
    30
    Par défaut
    super ça fonctionne !!

    j'avais pensé à une liste de validation, mais ça alourdissait la présentation du fichier (je ne rentre pas dans les détails)

    merci beaucoup

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

Discussions similaires

  1. [XL-2007] Recherche de la valeur # 0 sur une plage de 12 mois
    Par lebonprince dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/05/2010, 18h36
  2. [Toutes versions] Appliquer une recherche sur une plage
    Par lenul78570 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/03/2010, 15h24
  3. recherche sur une plage d'adresse IP
    Par Elessar01 dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/03/2010, 09h32
  4. [date] Recherche dans une plage de dates
    Par astro84 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/06/2005, 18h13

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