Ecriture date du jour dans Excel après recherche sur TEXTBOX successivement

Bonjour,

Mon formulaire doit permettre d'enregistrer la date présente dans un textbox intitulé TextBox5 selon la référence saisie dans le textbox nommé "commandebox". La date doit être renseignée sur la ligne correspondante à la valeur commandebox en colonne J (sachant qu'en colonne A de l'onglet "Compilation" se trouve la référence commandebox)

J'ai bien l'écriture de la date qui se réalise mais de façon aléatoire, parfois sur une autre colonne parfois sur une ligne différente de celle prévue. Est-il possible de saisir une référence dans commandebox, de valider et de saisir à la suite d'autres références pour saisir une même date ?

Pouvez-vous me donner les corrections à apporter ?

D'avance merci

Private Sub CommandButton1_Click()
Dim L As Integer
Dim sel As Range

Set sel = Sheets("Compilation").Cells.Find(Me.commandebox.Value, , xlValues, xlWhole)
    If sel Is Nothing Then
        MsgBox "Merci de vérifier le numéro de commande saisie"
    Else
        Sheets("Compilation").Activate
        ActiveCell.Offset(0, 8).Value = TextBox5
        sel.Activate
    End If

    Unload Me
UserForm1.Show

End Sub

Bonjour,

Ce que je peux te dire sans fichier ... Dans le code ci-dessous, l'écriture est relative à ActiveCell donc elle dépend de la cellule qui est effectivement sélectionnée au moment de l'exécution du code. Pour pouvoir t'apporter une réponse précise et une solution, il faudrait le fichier (anonymisé s'il contient des données personnelles).

Sinon, si tu veux faire une boucle (référence / textbox5), ce ne serait pas plus simple que la référence soit directement sélectionnée dans le formulaire ?

Attention : quand tu affectes une valeur TextBox.Value contenant une date à une cellule, tu affectes une chaîne de caractère qui ressemble à une date mais qui n'en est pas vraiment une (*), il faut affecter CDate(TextBox.Value).

(*) : tu peux vérifier en changeant le format de la cellule en nombre, la "date" reste affichée sous forme "J/M/A" (ou autre format de date). Par contre si tu édites la cellule (F2) et que tu fais juste entrée tu vas obtenir un nombre de jours ( 45015 pour le 30/03/2023).

Voici un fichier synthétique du tableau qui comporte plusieurs milliers de ligne.

Merci

Bonjour patsw, Cylfo

Effectivement, utiliser ActiveCell n'est pas correcte, voici le code corrigé

Private Sub CommandButton1_Click()
  Dim Sel As Range
  With Sheets("Compilation")
    Set Sel = .Cells.Find(Me.commandebox.Value, , xlValues, xlWhole)
    If sel Is Nothing Then
        MsgBox "Merci de vérifier le numéro de commande saisie"
    Else
      .Range("J" & Sel.Row).Value = CDate(Me.TextBox5)
      .Range("J" & Sel.Row).Select
    End If
  End With
    Unload Me
    UserForm1.Show
End Sub

A+

Bonjour,

Voir fichier joint. Pour éviter le risque d'erreur de saisie d'une mauvaise référence de commande, j'ai transformé le TextBox en ComboBox. Si tu préfères le TextBox, il suffit que tu remplaces le ComboBox par un TextBox en gardant le nom commandebox, le code fonctionnera.

Je t'ai mis du code sur les événements "AfterUpdate" et "Exit" de TextBox5. Il ne se déclenchera pas car TextBox5 est interdit à la saisie, c'est à titre d'exemple si tu veux contrôler des dates saisies dans un textBox.

Autre modification possible et non faite, transformer la plage de cellules des infos commandes en un tableau structuré ...

Merci beaucoup, c'est parfait. J'ai conservé le principe du combobox !

Rechercher des sujets similaires à "ecriture date jour recherche textbox successivement"