Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Range

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

je n'arrive pas coder une boucle qui ferait qu'une boîte de dialogue reste à l'écran tant que l'utilisateur n'a pas fourni une réponse appartenant à une plage déterminée.

En gros, j'aimerais que tant que la réponse fournie par l'utilisateur ne figure pas dans la base, le message "Indiquez l'année SVP" reste à l'écran.
Je m'embrouille avec un do until que je ne sais pas où positionner …
Quelqu'un a-t-il une idée comment faire ?

Merci d'avance pour vos lumières

Sebast

Code:
Sub Selection_Annee()

Dim AnneeReponse As Long
Dim PlagedeRecherche As Range
Dim RechercheAnnee As Range

Dim dernlig As Long
dernlig = Sheets("Source").Range("F" & Rows.Count).End(xlUp).Row
Set PlagedeRecherche = Sheets("Source").Range("F2:F" & dernlig)

AnneeReponse = Application.InputBox("Indiquez l'année, SVP ", Type:=1)

Set RechercheAnnee = PlagedeRecherche.Find(What:=AnneeReponse, LookAt:=xlWhole)
    
    
' début boucle (mais laquelle ... ?)
        
        If RechercheAnnee Is Nothing Then
            MsgBox "L'année recherchée ne figure pas dans la Source"
            Exit Sub
        Else
            ' ... code pour traitement des données
        End If

' fin boucle ...

End Sub
 

Pièces jointes

  • Question_15102014.xlsm
    162.3 KB · Affichages: 37
  • Question_15102014.xlsm
    162.3 KB · Affichages: 23
  • Question_15102014.xlsm
    162.3 KB · Affichages: 25

john

XLDnaute Impliqué
Re : Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Ran

Bonjour,

Voir fichier joint :)

Bonne fin de journée.

John
 

Pièces jointes

  • question_15102014.xlsm
    163.4 KB · Affichages: 24
  • question_15102014.xlsm
    163.4 KB · Affichages: 27
  • question_15102014.xlsm
    163.4 KB · Affichages: 28

Paf

XLDnaute Barbatruc
Re : Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Ran

Bonjour à tous

une autre solution sur le même principe que John

Code:
Sub Selection_Annee()

Dim AnneeReponse As Long
Dim PlagedeRecherche As Range
Dim RechercheAnnee As Range

Dim dernlig As Long
dernlig = Sheets("Source").Range("F" & Rows.Count).End(xlUp).Row
Set PlagedeRecherche = Sheets("Source").Range("F2:F" & dernlig)

' début boucle 
Do
   AnneeReponse = Application.InputBox("Indiquez l'année, SVP ", Type:=1)
   Set RechercheAnnee = PlagedeRecherche.Find(What:=AnneeReponse, LookAt:=xlWhole)
        If RechercheAnnee Is Nothing Then
            MsgBox "L'année recherchée ne figure pas dans la Source"
        End If

   ' fin boucle ...
   Loop Until Not RechercheAnnee Is Nothing

   'suite du code
   MsgBox "L'année est connue, on continue"

End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Ran

Bonjour Sebast, john, Paf,

Il vaut mieux ne pas utiliser Find qui a des inconvénients :

Code:
Sub Selection_Annee()
Dim Reponse As String, lig As Variant
Do
  Reponse = InputBox("Indiquez l'année, SVP :", , Reponse)
  If Reponse = "" Then Exit Sub
  lig = Application.Match(Val(Reponse), Sheets("Source").[F:F], 0)
  If IsError(lig) Then MsgBox "L'année recherchée ne figure pas dans la Source"
Loop While IsError(lig)
End Sub
A+
 

Sebast

XLDnaute Impliqué
Re : Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Ran

Bonjour à tous,

merci pour vos propositions qui fonctionnent bien (John : je m'étais emmêlé les crayons, ta pièce jointe était OK).

Job75 : pourquoi find est si problématique ?

Encore merci !

Sebast
 

job75

XLDnaute Barbatruc
Re : Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Ran

Job75 : pourquoi find est si problématique ?

Il n'est pas problématique, mais sur Excel 2003, quand on recherche une valeur numérique dans votre tableau, Excel ne la trouve pas.

Je pense que c'est dû à l'utilisation de tableau Excel.

Il faut aussi savoir que Find est beaucoup moins rapide qu'Application.Match, ce qui n'est pas grave si l'on recherche une seule valeur.

A+
 

Sebast

XLDnaute Impliqué
Re : Comment ne pas sortir de la boucle tant que la réponse n'appartient pas à un Ran

Bonjour à tous,

job75 : merci pour cette précision. J'utilise parfois Excel 2010, plus souvent 2007 et dans le cas présent, je ne recherche effectivement qu'une seule valeur.

John : comme je l'écrivais dans mon post de 16 h 19, ce n'est qu'après coup que je me suis rendu compte que ton code était bien modifié.

Encore merci
 

Discussions similaires

Réponses
1
Affichages
626
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 198
Messages
2 086 146
Membres
103 130
dernier inscrit
FRCRUNGR