Double clic sur date

Bonjour

Je viens vers vous aujourd'hui car je rencontre une difficulté.

je récupère des données dans un tableau avec des dates.

Les dates sont bien rapatrier par contre quand je valide les dates sont remises au bon format mais je suis obligé de double cliquer sur la date pour qu'elle soit bien .

avez-vous une idée pour éviter le doubleclic.

merci de votre aide

Salut,

Peut-être la copie de la valeur 1 dans une cellule

Collage spécial par multiplication sur les cellules contenant les dates

A+

Bonjour

Je me suis mal exprimé.

je récupère dans un userform les informations de la feuille donnée.

et lorsque je valide l'userform les textbox date son renvoyé sur la bonne ligne mais pas au bon format.

je suis obligé de faire un double clic sur la date et entrer pour avoir le bon format.

merci

Re,

Effectivement, donnez nous votre code ou mettez votre fichier si vous voulez de l'aide

A+

Bonsoir,

si votre TextBox1 contient bien une date alors la cellule de la feuille récupère la donnée date du TextBox1 : if IsDate(TextBox1) Then Range("A1") = CDate(TextBox1).

En fait la TextBox porte bien son nom : Texte, du coup dans les cellules du classeur cela peut copier une valeur alphanumérique d'une date, mais ce n'est pas compris comme une date, sauf à faire votre manipulation où là la feuille Excel reconnait la saisie et l'interprète comme une date et la transforme incognito en chiffre entier mais avec un format date...

@ bientôt

LouReeD

Bonjour et merci de vos réponse

Voici mon fichier je vous laisse regarder

Le problème ce situ sur la feuille données l'lorsque j'utilise MODIFIER

Ce qui fait que la macro la feuille ALERTE plante

Merci encore

Bonjour,

Plusieurs choses

1) Mettez "Option Explicit" au début de tous vos modules, cela vous obligera à définir vos variables correctement

Manque "p" par exemple

2) Modifier cette ligne en ajoutant DateValue()

 p = D - DateValue(w1.Range("H" & i))

3) En date vous n'avez qu'un seul TextBox : TextBox12

Il faut donc remplacer "= Textbox12" par "= CDate(TextBox12)"

A+

Bonjour et merci BrunoM45

Alors

Manque "p" par exemple

ok mais je ne sait pas quoi en faire perso je tâtonne sur VBA .

p = D - DateValue(w1.Range("H" & i))

j'ai essayer mais cela bloque a cause de cette date dans la feuille données (textbox8 et 9)

3) En date vous n'avez qu'un seul TextBox : TextBox12

non j'en est 3 textbox 8, textbox 9 et textbox 12 et la macro AlerteNVfeuille() ce fait sur la 8 et 9.

merci encore de ton aide

Re,

Comme tu as pu t'en rendre compte, les dates inscrites ne sont pas des dates au sens Excel mais du texte
puisqu'elle viennent de TEXTbox

Pour les inscrire leur valeur il faut donc mettre CDate(NomTextBox)

A+

Bonjour

En effet BrunoM45, et mon message ne devait pas être assez clair pour reinruof77...

@ bientôt

LouReeD

Salut LouReeD,

Désolé suis passé à travers aussi mais effectivement

Bonjour

au risque de passer pour un idiot voici l'erreur que je rencontre

capture

Punaise reinruof77

Ce n'est pas ce qu'on vous a dit

Private Sub Cmd_Valider_Click()
  Dim derlinge As Integer, ln
  With Sheets("données")
    For ln = 2 To .Range("B" & Rows.Count).End(xlUp).Row
      If .Range("B" & ln) = TextBox1 And .Range("B" & ln) = TextBox2 Then
        MsgBox "La fiche de " & TextBox2 & " " & TextBox1 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
        Exit Sub
      End If        
    Next ln

    If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
      derligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
      For i = 1 To 13
        ' Si textbox date
        If i = 8 Or i = 9 Or i = 12 Then
          .Cells(derligne, i) = CDate(Controls("TextBox" & i))
        Else  ' sinon
          .Cells(derligne, i) = Controls("TextBox" & i).Value
        End If
      Next i
    End If
  End With
End Sub

bonjour,

une methode pour ce boucle et en même temps la macro n'ecrit que une fois vers la feuille, parce que les variables sont memorisés dans un array

Private Sub Cmd_Valider_Click()
     Dim derlinge As Integer, ln, Arr

     With Sheets("données")
          For ln = 2 To .Range("B" & Rows.Count).End(xlUp).Row
               If .Range("B" & ln) = TextBox1 And .Range("B" & ln) = TextBox2 Then
                    MsgBox "La fiche de " & TextBox2 & " " & TextBox1 & " existe déjà." & Chr(13) & "Vous ne pouvez que la modifier.", 16
                    Exit Sub
               End If

          Next ln

          If MsgBox("confirmez-vous l'ajout des données?", vbYesNo, "confirmation") = vbYes Then
               derligne = .Range("A" & Rows.Count).End(xlUp).Row + 1
               ReDim Arr(1 To 13)     'creer un array de 13 éléments
               For i = 1 To 13
                    Select Case i
                         Case 3, 8, 9, 12: Arr(i) = CDate(Controls("TextBox" & i).Value)     'des dates
                         Case Else: Arr(i) = Controls("TextBox" & i).Value
                    End Select
               Next i
               .Cells(derligne, 1).Resize(, UBound(Arr)).Value = Arr     'ecrire en une fois >>> feuille
          End If
     End With
End Sub

j'ai été agréablement surpris que cela fonctionnait avec cdate ...

vous êtes sur la cmd validé

Moi c'est la cmd modifié qui pose problème

Re,

Le code pour alimenter la cellule est le même

re.

désolé mais je ne vois pas .

pas grave je vais continuer mes recherches.

merci tout de même pour le temps pris pour vouloir m'aider.

re,

  ....
  If CheckBox4 Then
          Sheets("Feuil1").Range("D26") = ComboBox1
          Sheets("Feuil1").Range("E26") = CDate(TextBox3.Value)
          Sheets("Feuil1").Range("E17") = TextBox7
          Sheets("Feuil1").Range("E19") = CDate(TextBox8.Value)
          Sheets("Feuil1").Range("E20") = CDate(TextBox9.Value)
          Sheets("Feuil1").Range("E21") = CDate(TextBox12.Value)
          Sheets("Feuil1").Range("E22") = TextBox13
          Sheets("Feuil1").Select
          Unload Me
     End If

     flag = 1
     With Sheets("données")
          ln = .Range("B2:B152" & .Range("B" & Rows.Count).End(xlUp).Row).Find(ComboBox1, lookat:=xlWhole).Row

          Dim Arr(1 To 13)     'creer un array de 13 éléments
          For i = 1 To 13
               Select Case i
                    Case 3, 8, 9, 12: Arr(i) = CDate(Controls("TextBox" & i).Value)     'des dates
                    Case Else: Arr(i) = Controls("TextBox" & i).Value
               End Select
          Next i
          .Cells(ln, 1).Resize(, UBound(Arr)).Value = Arr     'ecrire en une fois >>> feuille

          ComboBox1.ListIndex = -1
     End With

     Unload Me

End Sub

Re,

Exemple

Private Sub Cmd_Modifier_Click()
  Dim Ligne As Long
  Dim Cel As Range
  If CheckBox1 Then
    Sheets("Feuil1").Range("A13") = ComboBox1
    Sheets("Feuil1").Range("B13") = TextBox3
    Sheets("Feuil1").Range("B4") = TextBox7
    Sheets("Feuil1").Range("B6") = CDate(TextBox8)
    Sheets("Feuil1").Range("B7") = CDate(TextBox9)
    Sheets("Feuil1").Range("B8") = CDate(TextBox12)
    Sheets("Feuil1").Range("B9") = TextBox13
    Sheets("Feuil1").Select
  End If
.....

@BsAlv, vous avez toujours le même problème donner de la variable tableau à un débutant, non mais sérieux

A+

schermafbeelding 2022 06 05 022844

il faut rester objectif

Rechercher des sujets similaires à "double clic date"