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

Messages postés
7
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
19 décembre 2007
- - Dernière réponse : cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 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.
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
7
Date d'inscription
mardi 20 novembre 2007
Statut
Membre
Dernière intervention
19 décembre 2007
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MagicDoctor
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
Regarde la fonction Find dans ton aide.
C'est comme faire une recherche à l'aide du menu (Ctrl-F)

MPi²
Commenter la réponse de cs_MPi
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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
Commenter la réponse de bigfish_le vrai
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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²
Commenter la réponse de cs_MPi
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
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
Commenter la réponse de bigfish_le vrai
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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²
Commenter la réponse de cs_MPi
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
8
0
Merci
... 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
Commenter la réponse de bigfish_le vrai
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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²
Commenter la réponse de cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
15
0
Merci
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²
Commenter la réponse de cs_MPi