inputBox

filouplatchaud

XLDnaute Occasionnel
Bonjour le Forum

Voila j'ai un calendrier et je voudrais avec un InputBox sélectionner une cellule (date) en entant la date rechercher dans mon InputBox . genre 21/01
posible ou pas voir le calendrier.

Merci
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Sur une proposition de job75 ;), essayez ce code un peu modifié:
VB:
Sub rechdate()
'sur une proposition de job75 (XLD)
Dim x$, i As Double, lig&, j As Variant, s

Encore:
  x = InputBox("Date recherchée :", "Recherche", x)
  If x = "" Then Exit Sub
  s = Split(x, "/")
  If UBound(s) = 1 Then x = x & "/" & [a5]
  If Not IsDate(x) Then GoTo Encore
  If Val(s(1)) < 1 Or Val(s(1)) > 12 Then GoTo Encore
  i = CDbl(CDate(x))
  With ActiveSheet.UsedRange
    For lig = 1 To .Rows.Count
      j = Application.Match(i, .Rows(lig), 0)
      If IsNumeric(j) Then
        .Cells(lig, j).Select
        Exit For
      End If
    Next lig
    If IsError(j) Then GoTo Encore
  End With
End Sub
 

Pièces jointes

  • filouplatchaud- recherche date- v1.xlsm
    23.5 KB · Affichages: 31

job75

XLDnaute Barbatruc
Bonsoir filouplatchaud, salut mapomme,
Mais quand je change l'année en A5 cela ne fonctionne plus
Allons allons filouplatchaud, bien sûr que cela fonctionne.

Il faut savoir qu'excel interprète 21/01 comme le 21 janvier de l'année en cours (2017).

Si vous mettez 2015 en A5 il faut préciser l'année en entrant 21/01/2015 dans l'InputBox, c'est basique !!!

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour filouplatchaud, le forum,

Maintenant si l'on veut que ce soit l'année en A5 qui soit systématiquement prise en compte :
Code:
Sub RechercheDateLigne()
Dim lig&, x$, i As Variant
lig = 9 'ligne de la recherche, à adapter
If Not IsDate("1/1/" & CStr([A5])) Then [A5] = Year(Date) 'sécurité
1 x = InputBox("Date recherchée :", "Recherche", x)
If x = "" Then Exit Sub
If Not IsDate(x) Then GoTo 1
i = CDbl(DateSerial([A5], Month(x), Day(x)))
i = Application.Match(i, Rows(lig), 0)
If IsError(i) Then GoTo 1
Cells(lig, i).Select
End Sub

Sub RechercheDateFeuille()
Dim x$, i As Double, lig&, j As Variant
If Not IsDate("1/1/" & CStr([A5])) Then [A5] = Year(Date) 'sécurité
1 x = InputBox("Date recherchée :", "Recherche", x)
If x = "" Then Exit Sub
If Not IsDate(x) Then GoTo 1
i = CDbl(DateSerial([A5], Month(x), Day(x)))
With ActiveSheet.Rangeuse
  For lig = 1 To .Rows.Count
    j = Application.Match(i, .Rows(lig), 0)
    If IsNumeric(j) Then .Cells(lig, j).Select: Exit For
  Next
  If IsError(j) Then GoTo 1
End With
End Sub
Les macros fonctionnent quelle que soit la valeur en A5 (vide, texte, valeur d'erreur).

Fichier (2), testez en entrant 21/1/9999 dans l'InputBox...

Edit : noter que si l'on met 1890 en A5 aucune date ne peut être trouvée.

Car alors en ligne 9 l'année prise en compte est 3790 (1900+1890) !!!

Aide MS sur la fonction DATE :
Si l’année est comprise entre 0 (zéro) et 1899 (incluse), Excel ajoute cette valeur à 1900 pour calculer l’année. Par exemple, DATE(108,1,2) renvoie 2 janvier 2008 (1900+108).
Alors pour que l'utilisateur sache bien à quoi s'en tenir utiliser plutôt cette formule en B9 :
Code:
=DATEVAL("1/"&A5)
Bonne journée.
 

Pièces jointes

  • Recherche date(2).xlsm
    29.4 KB · Affichages: 33
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour filouplatchaud, chère ânesse,

La question n'a de sens que si l'année en A5 est l'année en cours (2017) :
Code:
If [A5] = Year(Date) Then x = Format(Date, "dd/mm")
1 x = InputBox("Date recherchée :", "Recherche", x)
Fichier (3).

A+
 

Pièces jointes

  • Recherche date(3).xlsm
    29.6 KB · Affichages: 37

filouplatchaud

XLDnaute Occasionnel
en fait j'ai fais un tableau pour la gestion de mes chambres j'ai un petit Hotel de 8 chambres et avec
mon tableau je prend mes réservations donc sur ma feuille Réservation en A1 j'ai les années et j'utilise toujours l'année en cour mais en 2018 je ne vais pas refaire tous j'ai juste a changer l'année et cela change le calendrier. Les clients réservent leurs chambres parfois plusieurs mois a l'avance et quand ils me demande avez vous une chambre pour le 20 juin j'utilise le InputBox pour trouver rapidement et leur donner une
réponse et pour revenir a la date du jour j'ai juste a recharger l'InputBox maintenant avec la date du jour et la je vois la semaine en cour

donc merci a tous j'utilise actuellement le InputBox de job75.
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi