Vérifier dans une macro si une valeur déterminée se trouve dans un tableau d'Exc

Résolu
MagicDoctor Messages postés 7 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 19 décembre 2007 - 18 déc. 2007 à 23:27
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 19 déc. 2007 à 22:56
Bonsoir à tous,

Je voudrais, au moyen d'une macro savoir si une certaine valeur, par exemple "zaza" se trouve dans une colonne d'un tableau d'une feuille d'Excel. En d'autres termes, je voudrais que la macro analyse son contenu et vérifie si une certaine valeur s'y trouve.

Merci pour toute réponse.

9 réponses

MagicDoctor Messages postés 7 Date d'inscription mardi 20 novembre 2007 Statut Membre Dernière intervention 19 décembre 2007
19 déc. 2007 à 13:52
Bonjour à tous et merci de vos réponses

J'ai essayé la solution de MPi sur Excel (puisque je travaille dans cet environement), malheureusemet, chaque fois la macro plante, et toujours le même message d'erreur (Err. 13). Les types ne coïncideraient pas... (enfin c'est ce que dit mon programme en espagnol, puisque je suis en Uruguay)
Apparemment il y a un problème avec la fonction "Find".

Pour être plus précis, voilà exactement ce que j'avais écrit :
'je cherche si "Julie" se trouve dans la colonne "JamaisContente"

Sub test()

Dim Recherche As Range, MaValeur As String

MaValeur = "Julie"

Set Recherche = Columns("ColonneJamaisContente").Find(MaValeur, LookIn:=xlValues, LookAt:=xlPart)

If Not Recherche Is Nothing Then
MsgBox "Trouvé à l'adresse " & Recherche.Address
'Msgbox "Trouvé à la ligne " & recherche.Row
'Msgbox "Trouvé dans la colonne " & recherche.Column
End If

End Sub
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
18 déc. 2007 à 23:51
Regarde la fonction Find dans ton aide.
C'est comme faire une recherche à l'aide du menu (Ctrl-F)

MPi²
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
19 déc. 2007 à 00:07
Salut,

tu as pas du chercher ou essayer longtemps pour nous poser une question pareil !

Aujourd'hui, y a une personne plus avancée que toi qui a posée une question sur le sujet, en d'autre terme elle a essayée . Comme je veux pas te macher le boulot je te donne juste le sujet :

Sujet : fonction find prenant en compte 2 critères entrés dans des combobox.

Vas voir j'y ais poser un bout de code qui fait exactement ce que tu cherches.

Et STP ne soit pas susceptible a propos de ce que je t'ais dit plus haut. Tu peux revenir si tu as un probleme.
Je te repondrais mais essaye.

En faite j'arrive pas a etre aussi dure que les grandes pontes de ce site ^^... Dite les gars, il faut combien de temps pour y arriver ?

A+
Philippe
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 déc. 2007 à 00:20
Salut BigFish,

Il ne faut se tromper entre la fonction Find et la fonction de tri (Sort)
Find n'a besoin que d'un seul critère: le mot ou chiffre à rechercher.

Et il n'y a pas de raison d'être dur, comme tu dis. Quand tu en es rendu à ce point, il est peut-être temps de prendre une pause...

Et si j'en crois son origine (Uruguay), il est probablement plus facile de se procurer des sarbacanes que des livres VBA

MPi²
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
19 déc. 2007 à 00:46
Salut MPi,

non non, je ne confonds pas lit le sujet... et puis je te met le bout code ici ce sera mieux qu'un long discour.

Sub essai()
    Dim macelule As Range, maligne As Single, lastvalue As Single, Nom As String
    lastvalue = Range("A:A").Find("*", [a1], , , xlByRows, xlPrevious).Row
    For Each macelule In Range([a1], Cells(lastvalue, 1))
    On Error Resume Next
    Nom = Left(macelule.Value, Application.Search(" ", macelule.Value, 1) - 1)
    If  Nom = mavaleur1 Then 'dans ce if tu met un deuxieme if pour verifier la deuxieme valeur (le prenom par exemple)
            maligne = macelule.Row
            MsgBox maligne 
            Exit For
        End If
    Next
End Sub

la variable "mavaleur1" peu venir de n'importe ou une celule, une textebox, une combobox, etc. ici l'interet est que tu peux chercher plusieurs valeur dans une meme celule (dans le if existant).
mais effectivement pour une seul valeur on peu faire plus simple comme:

pour chercher un nom par exemple, si la celule contient le nom et le prenom avec un espace entre les 2

Sub essai()
    Dim maligne As Single, Nom As String
    Nom = Left(mavaleur1, Application.Search(" ", mavaleur1, 1) - 1)
    maligne = Range("A:A").Find(Nom, [a1], , , xlByRows, xlPrevious).Row
    MsgBox maligne 
End Sub

Et desolé si finalement je parait dure cela n'etait pas mon intention.

A+

Philippe
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 déc. 2007 à 01:28
Re-salut,

J'ai bien vu le sujet et il me semble que MagicDoctor recherche une valeur dans une feuille et non pas dans une cellule (?)

De là ma suggestion d'utiliser Find qui ne prend qu'un critère (et je répète... ou je radote (?) )

Le critère dont je parle est en bleu
La recherche se fait dans la colonne A, ici...
Dim Recherche As RangeSet Recherche Columns(" A ").Find(<gras>MaValeur, LookIn:</gras>xlValues, LookAt:= xlPart)
If Not Recherche Is Nothing Then
    Msgbox "Trouvé à l'adresse " & recherche.Address
    'Msgbox "Trouvé à la ligne " & recherche.Row

    'Msgbox "Trouvé dans la colonne " & recherche.Column

End if

MPi²
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
19 déc. 2007 à 02:01
... non non MPi ! ni tu te repetes ni tu radotes
on dit la meme chose.

Tu as raison une fonction find fait tres bien l'affaire et c'est bien une fonction find que j'utilise dans mon deuxieme bout de code. Comme tu peux le voir je cherche dans la colonne A une valeur Nom mais je lui
ai juste ajouté la possibilité de faire une recherche sur les celules d'une colonne qui contiendrais un nom et un prenom separés par un espace puis je renvois via une msgbox le numero de la ligne qui contient la valeur recherchée.

Enfin pour etre plus precis quand j'ai dit regarde le sujet il ne s'agissait pas du present sujet mais du sujet que j'ai suggeré a MagicDoctor.

Et encore une fois desolé de la confusion et de l'emcombrement de ce sujet.



Amicalement

Philippe
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 déc. 2007 à 02:15
J'ai vu que tu utilises Search que je n'utilise jamais...
Ç'a chatouillé un mes de mes 2 neurones. Je vais m'y attarder un peu...

Bonne fin de soirée ou bonne nuit (?)

MPi²
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
19 déc. 2007 à 22:56
L'erreur provient du nom de la plage ou de la colonne que tu as mis ("ColonneJamaisContente")

Essaie plutôt avec la lettre de la colonne entourée de guillemets ("A") ou son Index (1) sans guillemets.

MPi²
0
Rejoignez-nous