Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Format date d'une textbox vers une cellule

netparty

XLDnaute Occasionnel
Bonjour à tous
Je rencontre un petit problème lorsque je copie les données d'une textbox vers une cellule.
Dans mon tableau les colonnes contenant des dates ont le format dd-mm-yyyy mais après écriture depuis le formulaire le format devient dd/mm/yyyy
Comment est-il possible de modifier cela ?
Voici mon code, les colonnes contenant des dates sont la : 20, 23, 24, 25
VB:
Private Sub b_valid_Click() 'bouton modif
    If Me.Enreg <> "" And Me.textbox6 <> "" Then
       noEnreg = Me.Enreg
      For k = 1 To Ncol    'k = decalage de colone
       If k <> 2 And k <> 11 And k <> 12 And k <> 14 And k <> 15 Then 'evite de copier les colonne 2 (B) 11(K) 12(L) 14(N) 15(O)
       X = Replace(Me("textBox" & k), " ", "")
           If Me("textbox" & k) <> "" Then
               f.Cells(noEnreg, k) = Me("textBox" & k)
           Else
               f.Cells(noEnreg, k) = Empty
           End If
       End If
      
      Next k
      UserForm_initialize
    End If
End Sub

Merci d'avance
 
Solution
bonjour c'st ta cellule qu'il faut formater pas la donnée date
encore faut il savoir le quel textbox (quelle colonne contient la dte

VB:
Private Sub b_valid_Click()    'bouton modif
    If Me.Enreg <> "" And Me.textbox6 <> "" Then
        noEnreg = Me.Enreg
        For k = 1 To Ncol    'k = decalage de colone
            If k <> 2 And k <> 11 And k <> 12 And k <> 14 And k <> 15 Then    'evite de copier les colonne 2 (B) 11(K) 12(L) 14(N) 15(O)
                X = Replace(Me("textBox" & k), " ", "")
                If Me("textbox" & k) <> "" Then
                    Select Case k
                    Case 20, 23, 24, 25: f.Cells(noEnreg, k) = CDate(Me.Controls("textBox" & k)): f.Cells(noEnreg, k).NumberFormat = "dd-mm-yyyy"...

patricktoulon

XLDnaute Barbatruc
bonjour c'st ta cellule qu'il faut formater pas la donnée date
encore faut il savoir le quel textbox (quelle colonne contient la dte

VB:
Private Sub b_valid_Click()    'bouton modif
    If Me.Enreg <> "" And Me.textbox6 <> "" Then
        noEnreg = Me.Enreg
        For k = 1 To Ncol    'k = decalage de colone
            If k <> 2 And k <> 11 And k <> 12 And k <> 14 And k <> 15 Then    'evite de copier les colonne 2 (B) 11(K) 12(L) 14(N) 15(O)
                X = Replace(Me("textBox" & k), " ", "")
                If Me("textbox" & k) <> "" Then
                    Select Case k
                    Case 20, 23, 24, 25: f.Cells(noEnreg, k) = CDate(Me.Controls("textBox" & k)): f.Cells(noEnreg, k).NumberFormat = "dd-mm-yyyy"
                    Case Else: f.Cells(noEnreg, k) = Me.Controls("textBox" & k)
                    End Select
                Else
                    f.Cells(noEnreg, k) = Empty
                End If
            End If

        Next k
        UserForm_initialize
    End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Pour une exécution plus rapide évitez de renseignez les cellules une par une: chargez la valeur de toute la plage d'une ligne dans un tableau dynamique, modifiez les éléments à modifier puis déchargez le dans la même plage.
Pour la colonne vous auriez meilleur temps de faire 2 boucles: For K = 1, 3 To 10, 13, 16 To 19 pour les textes (êtes vous sûr de n'avoir pas aussi des quantités ?) et For K = 20, 23 To 25 pour les dates.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Je pense, oui. Mais c'est vrai que je n'ai pas essayé … Chaque boucle doit avoir son propre Next K, bien sûr. Pourquoi ne serait-ce pas utilisable en l'état ? Aurais-je confondu avec une syntaxe seulement autorisée dans un autre contexte ?
Ah oui, c'est cela, en fait ce n'est pas utilisable dans une boucle For. Désolé.
Alors faire une seule boucle For K = 1 To 25 et dedans un Select Case K utilisant cette syntaxe avec Case 1, 3 To 10, 13, 16 To 19 et un Case 20, 23 To 25.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…