Recherche d'une valeur dans une ligne

Résolu
wassim0285
Messages postés
40
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
11 juin 2010
- 26 avril 2010 à 13:17
wassim0285
Messages postés
40
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
11 juin 2010
- 26 avril 2010 à 17:44
Bonjour,
Comment je peux trouver si une valeur existe ou non sur une ligne particulière, sachant que je connais la ligne ( c'est la ligne 1), donc je doit juste parcourir les colonnes pour la trouver...


Cordialement,

Wassim

8 réponses

jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356
26 avril 2010 à 17:33
re,
bon ok j'ai un peu de mal ce soir...

je fais encore un essai : tu veux une fonction qui recherche une valeur donnée et si elle le trouve alors tu executes un programme ? (en gros tu veux la fonction FIND ? )

Si c'est bien ça, tu peux t'amuser avec ma fonction :

Function cherchC(nomF As String, valCherch As String) As Boolean 
'fonction de recherche... 
'********************************************************** 
' recherche la valeur 'valCherch' et nous indique le 
' N° de ligne et de Colonne où elle se trouve VcLig / VcCol 
' La fonction retourne True ou False.
'********************************************************** 
Dim vc As Variant 
Sheets(nomF).Activate 
Sheets(nomF).Cells(1, 1).Activate 
Set vc = Cells.Find(what:=valCherch, lookAt:=xlWhole, After:=ActiveCell, SearchOrder:=xlByColumns, SearchDirection:=xlNext, LookIn:=xlValues, MatchCase:=False, SearchFormat:=False) 
If Not vc Is Nothing Then 
VcCol = vc.Column 
VcLig = vc.Row 
cherchC = True 
End If 
End Function 




En ce qui concerne ta fonction pour chercher la dernière colonne... Oui elle fonctionne.. mais elle peut générer des erreurs. Car il s'agit de la plage active (usedrange) et si malheureusement quelqu'un a double cliqué dans une cellule genre en Z2530 (même s'il n'a rien écrit), elle est prise en compte dans ton calcul...
C'est pour ça, que personnellement, je n'utilise que celle proposé tout à l'heure


Cordialement,
Jordane,
3
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356
26 avril 2010 à 14:20
bonjour,

par formule il existe pas mal de solutions (fonctions)

Par exemple pour compter le nb de fois où tu as une valeur : =nb.si(ma_plage,ma_valeur)

Pour chercher la position (N° de colonne) d'une valeur :
=EQUIV(Valeur_chercher;Plage_ou_chercher)

Et au cas où, Si tu as besoin d'une formule qui réalise une chose bien précise, explique nous ce que tu veux.

@+

Cordialement,
Jordane,
0
wassim0285
Messages postés
40
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
11 juin 2010

26 avril 2010 à 14:52
Ce que je veux exactement, c'est de réaliser une condition, avec IF, dans le cas ou la valeur recherché est trouvée je fais le traitement qui suit le IF, si non, je passe au traitement qui suit le ELSE, est ce que c'est clair comme ça??


Cordialement,

Wassim
0
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356
26 avril 2010 à 17:12
Re bonjour,

Mouais.. disons qu'à ta question :
est ce que c'est clair comme ça??
...je répondrais... Presque....

Vu que tu parles de If Else..et de traitements.. je peux supposer que tu veux réaliser ce test par une Macro (sinon tu aurais surement parlé de Si(..) pour des formules).

bref..
En vba il existe plusieurs façons de procéder pour traiter ta demande :
La plus simple c'est de parcourir les cellule de ta ligne, d'en lire le contenu et d'y appliquer ton test et le traitement en conséquence...
ce qui donnerait quelquechose du genre :

For i = 1 To 10 'boucle pour parcourir les cellules de la colonne 1 à 10
Ma_valeur = Cells(1, i).Value
If Ma_valeur = Ma_condition Then
'action a faire si vrai
Else
' action a faire si faux
End If
Next 'suivant.


bien sur, tu remplaces: Ma_condition.. par ce dont tu as besoins.. ^^

Cordialement,
Jordane,
0

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

Posez votre question
jordane45
Messages postés
35404
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
15 mai 2022
356
26 avril 2010 à 17:20
re, re..
je ne t'ai pas demandé : tes données sont toujours sur la ligne 1 ? et le nombre de colonne toujours le même ?

Si le nombre de colonne n'est pas fixe, il faudra que tu recherche la dernière colonne
Derniere_Colonne = Cells.Find("*", Range("A1"), , , xlByColumns, xlPrevious).Column 


ce qui fera que ta boucle sera ensuite écrite :
For i = 1 to Derniere_Colonne
...
next



Cordialement,
Jordane,
0
wassim0285
Messages postés
40
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
11 juin 2010

26 avril 2010 à 17:20
Merci pour la réponse Jordane45, c'est gentil de ta part...
mais à vrai dire, c'est pas ça ce que je cherche exactement

j'explique encore une fois, je suis entrain de developper un macro, et je cherche une fonction qui fait la recherche (non pas un boucle) c'est à dire quelque chose de ce genre:
if fonction(...) then
...
else
...
next

j'éspére que c'est un peu plus clair maintenant

Cordialement,

Wassim
0
wassim0285
Messages postés
40
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
11 juin 2010

26 avril 2010 à 17:23
il y a une méthode plus simple pour compter le nombre de colonnes:

derniere_colonne=ActiveSheet.UsedRange.Columns.Count


Cordialement,

Wassim
0
wassim0285
Messages postés
40
Date d'inscription
lundi 23 mars 2009
Statut
Membre
Dernière intervention
11 juin 2010

26 avril 2010 à 17:44
Merci encore Jordane, je retient ça de ta fonction:
If Not vc Is Nothing Then 

tous le reste existe dans mon code

En ce qui concerne la fonction qui cherche la dernière colonne, tu as raison, celle ci ma causé des problémes:
derniere_colonne=ActiveSheet.UsedRange.Columns.Count




Cordialement,

Wassim
0