[RESOLU] Problème en recherchant 14:00:00 dans une colonne

seb_sams

XLDnaute Nouveau
Bonjour à tous,

Je débute en vba et comme beaucoup de débutant, il arrive à un moment où ça coince et où on ne parvient pas à trouver la solution tout seul. Même en cherchant sur le forum comme je l'ai déjà fait pour d'autres précédents problèmes.

Alors voilà, avec mes collègues, nous sommes parfois amenés à réserver un véhicule pour un jour suivant (1 à 3 jours plus tard en général). Jusqu'à maintenant, nous nous contentons d'envoyer un email au chauffeur pour réserver un créneau mais nous n'avons pas de planning ni d'historique.
Mon idée est donc de faire la réservation via un fichier excel dans lequel, j'ai :
  • 1 feuille de Planning (le premier jour est toujours le jour actuel)
  • 1 feuille de suivi pour l'historique
  • 1 feuille contenant les données (plage horaire réservable, nom de la personne, l'objet de la réservation, les dates pour mettre à jour la feuille planning,...)

Quand l'utilisateur arrive dans le classeur, il peut voir le planning et faire une réservation.
  1. Ouverture de l'userform pour faire la réservation
  2. Validation par OK (Mise à jour de Suivi, m à j de Planning à partir de Suivi, envoi d'email au chauffeur [étape future])
Pour remplir la feuille Planning, je repars de Suivi pour pouvoir mettre à jour le planning quand j'ouvre le classeur le lendemain ou un autre jour.

J'arrive à faire la réservation, à remplir la feuille de suivi.
Pour remplir le planning, et savoir quelles cellules remplir, je fais une recherche du jour pour la colonne et une recherche de l'heure pour la ligne.
Ca ne fonctionne pas trop mal mais...
Le PROBLEME est que je trouve 14h à midi. (Ne cherchez pas midi à 14h, ici c'est l'inverse. ;) )
J'ai un problème pour rechercher 14h et 14h30, la méthode .find me donne toujours la ligne de 12h.

Pourriez vous svp jeter un oeil à mon code et mon fichier joint et me dire comment faire pour corriger cela.
Dans le fichier joint, ne faites pas attention au bouton "Add in shuttle" qui ne sera fait que quand la partie OK fonctionnera correctement.
Si vous ouvrez le fichier un samedi ou dimanche, vous aurez une erreur car mon tableau de jours ne va que du lundi au vendredi (pas de travail le weekend).

Merci d'avance pour votre aide, j'espère que quelqu'un parviendra à me débloquer (je ne me fais pas trop de souci, j'ai déjà pu voir que certains si connaissent vraiment bien).

Seb
 

Pièces jointes

  • userform_V1.8_forum.xlsm
    35.7 KB · Affichages: 69
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Problème en recherchant 14:00:00 dans une colonne

bien le bonjour à tous,

'à la place de ceci --------------------------
'Dim temp As Object
'Set temp = Sheets("Planning").Columns("B").Find(temp_heure_debut)
'ligne_debut = temp.Row
'----------------------------------------------

VOIR ci-joint ton fichier modifié !
 

Pièces jointes

  • userform_V1.8_forum(1).xlsm
    38.6 KB · Affichages: 44
Dernière édition:

seb_sams

XLDnaute Nouveau
Re : Problème en recherchant 14:00:00 dans une colonne

Bonjour Roland_M,

Merci beaucoup pour ton aide, tout semble fonctionner parfaitement. Je vais pouvoir continuer à avancer.

Si possible, je voudrais juste savoir ce qui se passe ici :
Code:
ligne_debut = Temp.Row: temp_date = Sheets("Planning").Cells(ligne_debut, "B")
     Do Until Trim(temp_date) = Trim(temp_heure_debut)
       Set Temp = .FindNext(Temp)
       If Not Temp Is Nothing Then
          ligne_debut = Temp.Row: temp_date = Sheets("Planning").Cells(ligne_debut, "B")
       End If
     Loop

Merci encore pour ton aide.

Bonne fin de weekend, bonne semaine,
 

Roland_M

XLDnaute Barbatruc
Re : Problème en recherchant 14:00:00 dans une colonne

re:

Code:
With Sheets("Planning").Columns("B")
 Set Temp = .Find(temp_heure_debut) '<<< ici première recherche
  If Not Temp Is Nothing Then       '<<< si recherche ok, suite et init les var ...
     ligne_debut = Temp.Row: temp_date = Sheets("Planning").Cells(ligne_debut, "B")
     'je saisie avec une var date la date de la cellule à cette ligne >>> Sheets("Planning").Cells(ligne_debut, "B")
     'et comme on en n'est pas certain du résultat vu les erreurs avec 14h ...
     'je boucle avec .FindNext qui continue la recherche si pas ok !?
     'si la recherche est ok on sort de la boucle avec Trim(temp_date)=Trim(temp_heure_debut)
     'et là je peux comparer les dates qui sont testées en var string
     'j'ai trouvé ça après plusieurs essais, c'est l'expérience ...
     'il suffit de faire un essai sans trim() temp_date)=temp_heure_debut et c'est le plantage !
     Do Until Trim(temp_date) = Trim(temp_heure_debut)
       Set Temp = .FindNext(Temp)
       If Not Temp Is Nothing Then
          ligne_debut = Temp.Row: temp_date = Sheets("Planning").Cells(ligne_debut, "B")
       End If
     Loop
  End If
End With
'personnellement je n'utilise jamais Find car par expérience je sais que ce n'est pas fiable
'je préfère boucler avec par exemple For Each . . .
 

Statistiques des forums

Discussions
312 103
Messages
2 085 312
Membres
102 860
dernier inscrit
fredo67