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 :

La cellule trouvée n'est pas sélectionnée. [XL-2007]


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
    Enseignant/Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant/Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 34
    Par défaut La cellule trouvée n'est pas sélectionnée.
    Bonjour,
    j'ai un soucis avec le code ci-dessous!
    Le but est de vérifier si la valeur tapé dans la cellule "A4" existe ou pas dans la suite de la colonne. Si ce n'est pas le cas, un message apparaît sinon si la valeur existe, le curseur doit se positionner sur la cellule concernée. C'est qu'il y a un problème, il n'y va jamais!

    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
    Private Sub Worksheet_Change(ByVal Target As range)
     
    Dim vnom As String
    Dim vrech As range
    Dim numligne As Long
     
    If Target.Address = "$A$4" Then
     
     
    'donne à la variable vnom la valeur sélectionnée
    vnom = "$A$4"
    'recherche le nom dans la colonne 3 (C) de ma feuil1
    Set vrech = Sheets("Données").range("a5:a5007").Find(vnom)
     
        'si je trouve le nom alors
        If Not vrech Is Nothing Then
         'je donne à nunligne le numéro de la ligne ou se trouve se nom
         'numligne = vrech.Row
         vrech.Select
     
         Else
           MsgBox " Cette chèvre n'est pas encore enregistrée!"
        End If
    End If
     
     
     
    End Sub
    Merci d'avance si quelqu'un a une idée.

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Bonjour,

    Avec ce code tu semble vouloir chercher une cellule contenant la chaîne :"$A$4"..
    est ce le cas ?

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant/Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant/Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 34
    Par défaut
    L'idée est de trouver la valeur (n° d'un animal) que j'ai enregistré dans la cellule A4 et qu'en tapant sur entrée il la recherche entre A5 et A5007.

    NB: j'ai omis d'enlever des infos qu'il y avait dans des codes que j'ai cherché à adapter à mon problème

  4. #4
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Lorsque tu écris
    Set vrech = Sheets("Données").range("a5:a5007").Find(Vnom)
    Vnom doit représenter la valeur recherchée.
    Or, dans ton code, Vnom ne correspond pas à une valeur mais à une adresse ("$A$4")
    Vnom doit être remplacée par Target.Value.
    Tu peux donc écrire
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim vrech As Range
    Dim numligne As Long
        If Target.Address = "$A$4" Then
        'recherche le nom dans la colonne 3 (C) de ma feuil1
        Set vrech = Sheets("Données").Range("A5:A5007").Find(Target.Value, , xlValues, xlPart)
            'si je trouve le nom alors je sélectionne la cellule correspondante
            If Not vrech Is Nothing Then
                vrech.Select
                MsgBox " Cette chèvre est enregistrée à la ligne " & vrech.Row
             Else
                'sinon j'affiche un message
                MsgBox " Cette chèvre n'est pas encore enregistrée!"
            End If
        End If
    End Sub
    Cordialement.

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant/Agriculteur
    Inscrit en
    Juillet 2012
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant/Agriculteur
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 34
    Par défaut
    Que signifie:
    xlvalue et xlpart?
    merci

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    La méthode Range.Find dispose de plusieurs paramètres (voir l'aide pour le détail).

    xlValues est un paramètre de l'argument RechercherDans (lookin). Cet argument permet d'indiquer le type d'information que le système doit trouver , soit une valeur(XlValues) , soit une formule (xlFormulas) .

    xlPart est un paramètre de l'argument Regarder (LookAt). Cet argument permet d'indiquer si le système doit trouver une correspondance avec l'ensemble du texte recherché (xlWhole) ou une partie de ce texte (xlPart).

    Cordialement.

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

Discussions similaires

  1. Lancer une macro si une plage de cellule n'est pas sélectionnée
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/01/2014, 16h15
  2. Hauteur de cellules qui n'est pas respectée
    Par petitours dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 07/11/2011, 13h58
  3. Réponses: 10
    Dernier message: 12/10/2011, 14h23
  4. treenode n'est pas sélectionné
    Par TaymouWan dans le forum Windows Forms
    Réponses: 1
    Dernier message: 08/05/2009, 16h50
  5. vba tant que cellule active n'est pas ma cellule
    Par elise1983 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 03/09/2008, 22h34

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