recherche dans une ligne

  • Initiateur de la discussion Twuce
  • Date de début
T

Twuce

Guest
Bonjour,

Si y a des gens qui aiment les casses tete, enfin en tout cas moi ca me casse la tete :).
C simple
j ai 2 lignes:


date | 01/01/04 | 02/01/04 | 03/01/04 | 04/01/04 | 05/01/04|
valeur | | X | | X | |

voila alors ce que je voudrais est simple

en parcourant la liste des valeurs je voudrais qu on me retourne
le premier X de la liste et le dernier X de la liste
ainsi j aurais 2 dates 02/01/04 et 04/01/04

je ne c pas comment m y prendre si une personne a une idée c super cool
merci d avance
 
M

Monique

Guest
Bonjour,

Tes dates de B1 à F1
Tes X de B2 à F2
La 1ère date :
=INDEX(B1:F1;EQUIV("X";B2:F2;0))
La dernière date :
=INDEX(B1:F1;EQUIV(2;1/("X"=B2:F2)))
La 2è formule est à valider en appuyant simultanément sur ctrl, maj et entrée
2è formule EQUIV(2; etc) 2 ou, en tout cas, > à 1
pourquoi ? Je n'en sais rien
Et je me suis cassé la tête à chercher le pourquoi du 2.
 
R

Ronan

Guest
Bonsoir,

Si ton tableau se situe en A1:E2 :

Dim plage As Range
Dim valeur As Range
Dim date1(1) As Date
Dim ndate As Byte
Set plage = Range("a2:e2")
For Each valeur In plage
If valeur <> "" Then
date1(ndate) = Cells(1, valeur.Column)
ndate = ndate + 1
If ndate = 2 Then Exit For
End If
Next
MsgBox "Date début : " & date1(0) & " # Date fin : " & date1(1), vbOKOnly
End Sub

Bye

Ronan
 
T

Twuce

Guest
Merci d'avoir passer du temps a m aider toi et les autres.
J ai commencé avec ta solution a réfléchire et j en suis arrivé a :

=EQUIV("X";'Qui Quoi Quand T1'!D8:CP8;0)

pour le premier element

=EQUIV("X";'Qui Quoi Quand T1'!D8:CP8)

pour le dernier element

les 2 font exactement ce que je ve je comprends pas comment elle le fait mais elle le fait.
Cependant le probleme c que les fonctions détectent les X ro moi j ai des valeurs qui ne sont pas toujours les memes donc ca complique les choses
Si tu as une idée je suis preneur

Merci d'avance

Mat
 
M

Monique

Guest
Bonjour,

Tes dates de B1 à H1
Tes X Y Z A B F n'importe quoi de B2 à H2

La 1ère date :
Si tu n'as que du texte de B2 à H2 (ou si tu ne veux prendre en compte que le texte)
=INDEX(B1:H1;EQUIV("*";B2:H2;0))
Si tu n'as que des valeurs numériques ou un mélange numérique et texte
=INDEX(B1:H1;MIN(SI(B2:H2<>"";COLONNE(B2:H2);""))-1)
La 2è est matricielle, à valider par ctrl, maj et entrée

La dernière date :
=INDEX(B1:H1;MAX(SI(B2:I2<>"";COLONNE(B2:I2);""))-1)
Formule matricielle, à valider par ctrl, maj et entrée

Cette partie de la 2è :
=MAX(SI(B2:I2<>"";COLONNE(B2:I2);""))
te donne le n° de la dernière cellule vide, en comptant à partir de B2

Tu vérifieras parce que, les 2 deuxièmes, c'est la 1ère fois que je les fais.
(ça me donne une idée pour un autre post)
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 910
Membres
103 983
dernier inscrit
AlbertCouillard