Fonction recherche en VBA selon la date et cellule vide

ly.jchristophe

XLDnaute Nouveau
Bonsoir,

Je suis débutant même plus que débutant en VBA mais par le biais de ce Forum d'entraide, j'ai pu créer mon petit tableau. Malheureusement, je suis confronté à un petit souci...
Je m'explique :
Donc ma feuille est un tableau qui me permet d'enregistrer quotidiennement les Badges en entrée et en sortie avec le nom et le prénom des emprunteurs. c'est à dire que dès que je rentre un nom et un prénom ainsi que le numéro de Badge emprunté, la date et l'heure d'entrée s'affiche automatiquement dans des cellules dédiées. Pour enregistrer la sortie d'un badge, j'ai créé une boite de dialogue qui me permet d'effectuer une recherche par numéro de Badge et que la variable recherchée m'est donnée par la sélection automatique de la cellule de la variable, ici le numéro de badge. ainsi dès que j'ai le numéro désiré je double-clic sur une autre cellule de la même ligne pour afficher l'heure de sortie.
Mais voilà, j'ai oublié que les Badges pouvait être empruntés plusieurs fois dans la journée. Donc Ma Question était de savoir comment faire pour que dès que je tape un numéro de Badge, seule la cellule où aucune heure de sortie est indiquée puisse être sélectionnée? En gros le dernier emprunt de ce badge...
j'espère avoir été assez explicite :rolleyes:

Merci d'avance pour vos réponses
 

Modeste

XLDnaute Barbatruc
Re : Fonction recherche en VBA selon la date et cellule vide

Bonjour ly.jchristophe et bienvenue à toi :)

Un "débutant" en VBA qui est parvenu déjà à créer ce que tu décris ... peut-il vraiment être considéré comme débutant?

Ceci dit, si tu repasses par ici, on peut difficilement te donner des pistes autres que des trucs très vagues, puisqu'on ne sait absolument pas ce que tu as fait jusque là!? Il serait sans doute utile qu'une proposition puisse s'articuler avec l'existant ...

Pour retrouver le badge, tu as utilisé une boucle sur chaque cellule de la colonne n° de badge, un Range.Find, Application.Match, ...??
Un badge emprunté le jour X est obligatoirement restitué le jour même?
Le fichier ne concerne que les opérations d'une journée, une semaine, un mois, ...?

Bref, un extrait de ton fichier, sans données confidentielles mais avec 2-3 précisions supplémentaires aiderait certainement ceux qui sont prêts à te donner un coup de main!

[Edit:] salut titiborregan5, désolé pour la collision!
 

ly.jchristophe

XLDnaute Nouveau
Re : Fonction recherche en VBA selon la date et cellule vide

Bon je ne sais pas si le fichier est joint mais si c'est le cas voici un exemple...

Donc par rapport aux badges empruntés, ils peuvent être utilisés plusieurs le même jour donc forcément plusieurs fois dans la semaine et dans le mois...
Lorsque je fais ma recherche la fonction sélectionne d'abord la cellule au premier emprunt du badge et ça peut remonter très loin dans le temps si je continue à enregistrer jour après jour.
Dans l'idéal, j'aimerai également qu'excel ouvre une nouvelle feuille en cas de changement de mois... Mais pour l'instant j'attends vos conseils et des suggestions pour améliorer mon tableau et ses fonctions

Voilà j'attends avec impatience vos réponses en vous remerciant d'avance
 

Pièces jointes

  • REGISTREVTEST.xlsm
    90.2 KB · Affichages: 53
  • REGISTREVTEST.xlsm
    90.2 KB · Affichages: 58
  • REGISTREVTEST.xlsm
    90.2 KB · Affichages: 70
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Fonction recherche en VBA selon la date et cellule vide

Re-bonsoir,

Plutôt qu'une recherche par nom ou par n° de badge (sur 3 colonnes), il me semble préférable de faire la recherche sur le seul n° de badge (si tu as vraiment besoin de la recherche par nom, on conservera le même principe mais en faisant un choix dès le départ ... tu nous diras)

J'ai mis sur fond rouge 2 heures de sortie non-renseignées pour un même badge ... ce qui semble difficile (pas vérifié s'il y en avait d'autres)

Ci-dessous, le code (modifié) de ton UserForm de recherche: celui-ci remplace les deux procédures. Teste et dis-nous si ça te convient:
VB:
Private Sub cmdRecherche_Click()
Dim cellulestrouvees As Range
Dim trouvé As Boolean
With Sheets("Registre")
Set cellulestrouvees = .Range("F:F").Find(What:=Me.txtRecherche.Text, LookIn:=xlValues, lookat:=xlWhole, MatchCase:=False)
If Not cellulestrouvees Is Nothing Then
    If cellulestrouvees.Offset(0, 2) = vbNullString Then
        Unload Me: trouvé = True: cellulestrouvees.Select: Exit Sub
    Else
        premAdr = cellulestrouvees.Address
        Do
            Set cellulestrouvees = .Range("F:F").FindNext(cellulestrouvees)
            If cellulestrouvees.Offset(0, 2) = vbNullString Then Unload Me: trouvé = True: cellulestrouvees.Select: Exit Sub
        Loop While Not cellulestrouvees Is Nothing And cellulestrouvees.Address <> premAdr
    End If
Else
    Unload Me: MsgBox "Badge inconnu", vbInformation, "Message d'information"
End If
If Not cellulestrouvees Is Nothing And Not trouvé Then Unload Me: MsgBox "Ce badge a été rentré"
End With
End Sub
 

ly.jchristophe

XLDnaute Nouveau
Re : Fonction recherche en VBA selon la date et cellule vide

Bonsoir,

Je viens de trouver la toute petite modification à faire pour que la recherche me donne la dernière utilisation du Badge :)
Bon je ne sais pas vraiment ce que ça veut dire mais le principal, c'est que c'est exactement ce que je voulais

voilà la modification :

Function rechercher(recherche As String, Zonerecherche As Variant) As Range
Dim cellulestrouvees As Range
Set cellulestrouvees = Zonerecherche.Find(What:=recherche, After:=ActiveCell, LookIn:=xlFormulas, SearchDirection:=xlPrevious, MatchCase:=False)

If cellulestrouvees Is Nothing Then
Set rechercher = Nothing
Else
Set rechercher = cellulestrouvees

End If
End Function

-----------------------------------------

Par contre, j'aimerai bien que la couleur de la cellule active change, histoire de bien la mettre en valeur... et que bien sûr revienne à sa couleur d'origine quand une autre cellule est selectionnée... Si tu avais la solution

En tout cas merci à toi Modeste pour ton aide :)
 

pierrejean

XLDnaute Barbatruc
Re : Fonction recherche en VBA selon la date et cellule vide

Bonjour ly.jchristophe

En l'absence de l'ami MODESTE

Vois si cela te convient
 

Pièces jointes

  • REGISTREVTEST.xlsm
    89.8 KB · Affichages: 56
  • REGISTREVTEST.xlsm
    89.8 KB · Affichages: 55
  • REGISTREVTEST.xlsm
    89.8 KB · Affichages: 63

ly.jchristophe

XLDnaute Nouveau
Re : Fonction recherche en VBA selon la date et cellule vide

Bonjour,

Merci infiniment c'est juste parfait !!!! :D
Vous êtes vraiment super tous !
si un jour je décidai de me créer un nouveau tableau, je reviendrai sûr ici pour demander un petit coup de main :D

à très bientôt !
 

Discussions similaires