Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Recherche d'un élément dans un tableau

8 réponses
Avatar
Jean-mi
Voici mon probl=E8me :
Je cherche comment trouver un chanteur dans le tableau de=20
3 chanteurs que j'ai d=E9fini ci-dessous:

Dim chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i =3D 1 To 3
chanteur(1) =3D "Polnaref"
chanteur(2) =3D "Halliday"
chanteur(3) =3D "Roussos"
Worksheets(1).Cells(1, i).Value =3D chanteur(i)
Next i

Je souhaiterais ensuite balayer le tableau de 3 chanteurs=20
jusqu'=E0 ce que je trouve le chanteur donn=E9
dans l'instruction InputBox message ("Bravo, ..."). Je=20
d=E9sirerais avoir autrement le message:("D=E9sol=E9,...").
Quelqu'un peut-il me dire ce qui ne va pas. D'avance=20
merci. Jean-michel

i =3D 1
Do
nom =3D InputBox("Entrez le nom d'un chanteur ") =20
chanteur(i) =3D nom
If chanteur(i) =3D nom Then
MsgBox ("Bravo, ce chanteur est pr=E9sent dans ce=20
tableau !")
ElseIf chanteur(i) <> nom Then
MsgBox ("D=E9sol=E9, ce chanteur ne figure pas dans le=20
tableau ") =20
End If
i =3D i + 1
Loop Until chanteur(i) =3D nom Or i =3D 3
End Sub

8 réponses

Avatar
Emcy
Salut


Sub main()

Dim Chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i = 1 To 3
Chanteur(1) = "Polnaref"
Chanteur(2) = "Halliday"
Chanteur(3) = "Roussos"
Worksheets(1).Cells(1, i).Value = Chanteur(i)
Next i


nom = InputBox("Entrez le nom d'un chanteur ")

i = 1
Do Until i > 3

'Chanteur(i) = nom
If Chanteur(i) = nom Then
MsgBox ("Bravo, ce chanteur est présent dans ce
tableau !")
i = 4
Exit Do
End If
i = i + 1
Loop

If i = 4 Then
MsgBox ("Désolé, ce chanteur ne figure pas dans le
tableau ")
End If

End Sub


ça te va ?

-----Message d'origine-----
Voici mon problème :
Je cherche comment trouver un chanteur dans le tableau
de

3 chanteurs que j'ai défini ci-dessous:

Dim chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i = 1 To 3
chanteur(1) = "Polnaref"
chanteur(2) = "Halliday"
chanteur(3) = "Roussos"
Worksheets(1).Cells(1, i).Value = chanteur(i)
Next i

Je souhaiterais ensuite balayer le tableau de 3
chanteurs

jusqu'à ce que je trouve le chanteur donné
dans l'instruction InputBox message ("Bravo, ..."). Je
désirerais avoir autrement le message:("Désolé,...").
Quelqu'un peut-il me dire ce qui ne va pas. D'avance
merci. Jean-michel

i = 1
Do
nom = InputBox("Entrez le nom d'un chanteur ")
chanteur(i) = nom
If chanteur(i) = nom Then
MsgBox ("Bravo, ce chanteur est présent dans ce
tableau !")
ElseIf chanteur(i) <> nom Then
MsgBox ("Désolé, ce chanteur ne figure pas dans le
tableau ")
End If
i = i + 1
Loop Until chanteur(i) = nom Or i = 3
End Sub

.



Avatar
Daniel.M
Bonjour,

Utilise Application.Match pour circuler dans un tableau (ou une plage).

Salutations,

Daniel M.

Sub TrouveChanteur()

Dim chanteur(1 To 3) As String
Dim nom As String, Res As Variant

chanteur(1) = "Polnaref"
chanteur(2) = "Halliday"
chanteur(3) = "Roussos"

Worksheets(1).Range("A1:C1") = chanteur
' ou Worksheets(1).Range("A1:A3") = Application.Transpose(chanteur)

nom = InputBox("Entrez le nom d'un chanteur ")

Res = Application.Match(nom, chanteur, 0)
If IsError(Res) Then
MsgBox "Pas trouvé " & nom
Else
MsgBox "Trouvé " & nom & " en position " & Res
End If
End Sub
Avatar
AV
nom = InputBox("Entrez le nom d'un chanteur ")
If If Evaluate("isnumber(match(""" & nom & """,Feuil1!A1:C1,0))") Then
MsgBox "il est là"
Else: MsgBox "il est pas là"
End If

AV
Avatar
Jacky
Bonjour Daniel (Le vrai, je crois)

Application.Match(nom, chanteur, 0)


Je ne trouve pas d'aide sur ce code, ni sur ceux qui sont précédés du mot
'application' d'ailleurs, existe t'il une liste ?
Pourrais-tu expliquer SVP

D'où vient Match ??
Pourquoi valeur 0 ??

Merci
JJ




"Daniel.M" a écrit dans le message de
news:
Bonjour,

Utilise Application.Match pour circuler dans un tableau (ou une plage).

Salutations,

Daniel M.

Sub TrouveChanteur()

Dim chanteur(1 To 3) As String
Dim nom As String, Res As Variant

chanteur(1) = "Polnaref"
chanteur(2) = "Halliday"
chanteur(3) = "Roussos"

Worksheets(1).Range("A1:C1") = chanteur
' ou Worksheets(1).Range("A1:A3") = Application.Transpose(chanteur)

nom = InputBox("Entrez le nom d'un chanteur ")

Res = Application.Match(nom, chanteur, 0)
If IsError(Res) Then
MsgBox "Pas trouvé " & nom
Else
MsgBox "Trouvé " & nom & " en position " & Res
End If
End Sub




Avatar
Daniel.M
Salut Jacky,

Bonjour Daniel (Le vrai, je crois)


Breveté au sirop d'érable, monsieur.


Application.Match(nom, chanteur, 0)


Je ne trouve pas d'aide sur ce code, ni sur ceux qui sont précédés du mot
'application' d'ailleurs, existe t'il une liste ?
Pourrais-tu expliquer SVP


L'aide est dans Application.Worksheetfunction.Match()

mais il ne faut pas l'utiliser dans la classe Worksheetfunction puisque
l'implantation de Match dans cette classe VBA n'est pas bien réalisée (lors de
recherches infructueuses, elle produit une erreur système au lieu de retourner
une valeur d'erreur: une très mauvaise habitude VB. Ici, on peut contourner en
adoptant l'implantation effectuée depuis plus longtemps, i.e. lorsque les
fonctions Excel se trouvaient sous la classe Application. On n'a pas toujours ce
choix avec certaines méthodes comme .SpecialCells() et autres, mais je m'égare).


D'où vient Match ??


C'est l'équivalent de EQUIV(), la fonction française.
En VBA, les noms des fonctions Excel (présents et accessible par
Worksheetfunction) sont toujours en anglais.


Pourquoi valeur 0 ??
L'équivalent de FAUX. Tu peux mettre FALSE si tu veux. Regarde l'aide de EQUIV()

et son dernier argument.

Merci
Bienvenue.


Salutations,

Daniel M.


Avatar
Jacky
Merci beaucoup Daniel.
Le breveté au sirop d'érable ;-))
Bonne soirée
JJ

"Daniel.M" a écrit dans le message de
news:
Salut Jacky,

Bonjour Daniel (Le vrai, je crois)


Breveté au sirop d'érable, monsieur.


Application.Match(nom, chanteur, 0)


Je ne trouve pas d'aide sur ce code, ni sur ceux qui sont précédés du
mot


'application' d'ailleurs, existe t'il une liste ?
Pourrais-tu expliquer SVP


L'aide est dans Application.Worksheetfunction.Match()

mais il ne faut pas l'utiliser dans la classe Worksheetfunction puisque
l'implantation de Match dans cette classe VBA n'est pas bien réalisée
(lors de

recherches infructueuses, elle produit une erreur système au lieu de
retourner

une valeur d'erreur: une très mauvaise habitude VB. Ici, on peut
contourner en

adoptant l'implantation effectuée depuis plus longtemps, i.e. lorsque les
fonctions Excel se trouvaient sous la classe Application. On n'a pas
toujours ce

choix avec certaines méthodes comme .SpecialCells() et autres, mais je
m'égare).



D'où vient Match ??


C'est l'équivalent de EQUIV(), la fonction française.
En VBA, les noms des fonctions Excel (présents et accessible par
Worksheetfunction) sont toujours en anglais.


Pourquoi valeur 0 ??
L'équivalent de FAUX. Tu peux mettre FALSE si tu veux. Regarde l'aide de

EQUIV()

et son dernier argument.

Merci
Bienvenue.


Salutations,

Daniel M.






Avatar
Jean-mi
-----Message d'origine-----
Salut


Sub main()

Dim Chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i = 1 To 3
Chanteur(1) = "Polnaref"
Chanteur(2) = "Halliday"
Chanteur(3) = "Roussos"
Worksheets(1).Cells(1, i).Value = Chanteur(i)
Next i


nom = InputBox("Entrez le nom d'un chanteur ")

i = 1
Do Until i > 3

'Chanteur(i) = nom
If Chanteur(i) = nom Then
MsgBox ("Bravo, ce chanteur est présent dans ce
tableau !")
i = 4
Exit Do
End If
i = i + 1
Loop

If i = 4 Then
MsgBox ("Désolé, ce chanteur ne figure pas dans le
tableau ")
End If

End Sub


ça te va ?

-----Message d'origine-----
Voici mon problème :
Je cherche comment trouver un chanteur dans le tableau
de

3 chanteurs que j'ai défini ci-dessous:

Dim chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i = 1 To 3
chanteur(1) = "Polnaref"
chanteur(2) = "Halliday"
chanteur(3) = "Roussos"
Worksheets(1).Cells(1, i).Value = chanteur(i)
Next i

Je souhaiterais ensuite balayer le tableau de 3
chanteurs

jusqu'à ce que je trouve le chanteur donné
dans l'instruction InputBox message ("Bravo, ..."). Je
désirerais avoir autrement le message:("Désolé,...").
Quelqu'un peut-il me dire ce qui ne va pas. D'avance
merci. Jean-michel

i = 1
Do
nom = InputBox("Entrez le nom d'un chanteur ")
chanteur(i) = nom
If chanteur(i) = nom Then
MsgBox ("Bravo, ce chanteur est présent dans ce
tableau !")
ElseIf chanteur(i) <> nom Then
MsgBox ("Désolé, ce chanteur ne figure pas dans le
tableau ")
End If
i = i + 1
Loop Until chanteur(i) = nom Or i = 3
End Sub




Merci beaucoup, cela marche (avec une toute petite
rectification : il faut mettre le Loop entre End If et


End Sub)
.Peut-être à une prochaine fois sur Internet.
Jean-michel



.





Avatar
Emcy
C'est vrai, je suis allé un peu trop vite.
plutot que de déplacer le "loop", je te conseille de
supprimer la ligne "i = 4", tu gagneras du temps si ton
tableau fais beaucoup de ligne.

-----Message d'origine-----

-----Message d'origine-----
Salut


Sub main()

Dim Chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i = 1 To 3
Chanteur(1) = "Polnaref"
Chanteur(2) = "Halliday"
Chanteur(3) = "Roussos"
Worksheets(1).Cells(1, i).Value = Chanteur(i)
Next i


nom = InputBox("Entrez le nom d'un chanteur ")

i = 1
Do Until i > 3

'Chanteur(i) = nom
If Chanteur(i) = nom Then
MsgBox ("Bravo, ce chanteur est présent dans ce
tableau !")
i = 4
Exit Do
End If
i = i + 1
Loop

If i = 4 Then
MsgBox ("Désolé, ce chanteur ne figure pas dans le
tableau ")
End If

End Sub


ça te va ?

-----Message d'origine-----
Voici mon problème :
Je cherche comment trouver un chanteur dans le tableau
de

3 chanteurs que j'ai défini ci-dessous:

Dim chanteur(1 To 3) As String, i As Integer
Dim nom As String
For i = 1 To 3
chanteur(1) = "Polnaref"
chanteur(2) = "Halliday"
chanteur(3) = "Roussos"
Worksheets(1).Cells(1, i).Value = chanteur(i)
Next i

Je souhaiterais ensuite balayer le tableau de 3
chanteurs

jusqu'à ce que je trouve le chanteur donné
dans l'instruction InputBox message ("Bravo, ..."). Je
désirerais avoir autrement le message:("Désolé,...").
Quelqu'un peut-il me dire ce qui ne va pas. D'avance
merci. Jean-michel

i = 1
Do
nom = InputBox("Entrez le nom d'un chanteur ")
chanteur(i) = nom
If chanteur(i) = nom Then
MsgBox ("Bravo, ce chanteur est présent dans ce
tableau !")
ElseIf chanteur(i) <> nom Then
MsgBox ("Désolé, ce chanteur ne figure pas dans
le



tableau ")
End If
i = i + 1
Loop Until chanteur(i) = nom Or i = 3
End Sub




Merci beaucoup, cela marche (avec une toute petite
rectification : il faut mettre le Loop entre End If et


End Sub)
.Peut-être à une prochaine fois sur Internet.
Jean-michel



.


.