Problème de date inverser VBA USF

dgeo27

XLDnaute Junior
Bonjour,
Je rencontre encore un problème :'(

J'ai un programme de facturation, dans une textbox il m'affiche la date du jours.
Lorsque j'appuie sur le bouton enregistrer il recopie cette date dans une feuille.
Mais si la date est compris entre le 1er et le 12éme jours du mois il inverse ..
Dans la Textbox : 11-12-18 devient : 12-11-18
MAIS le 16-12-18 restera le 16-12-18 ...

Le code pour la date :

Me.TextBox91.Value = Date
Me.TextBox91.Value = Format(Now, "dd-mm-yy")

Voici le code qui enregistre ma facture/devis (il fonctionne avec des TAG)

Merci à vous.


Code:
'Enregistrer le devis ou la facture
Private Sub CommandButton6_click()

If ComboBox13 = "" Then
MsgBox "Aucun mode sélectionné"
Exit Sub
Else


Dim O As Worksheet 'déclare la variable O (Onglet)
Dim PLV As Integer 'déclare la variable PLV (Première Ligne Vide)
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
Dim PM As Integer 'Partie Mobile
Dim NN As String 'Nouveau Numéro
Dim PF As String 'Partie Fixe

If ComboBox13.Value = "Devis" Then
If TextBox96.Value = "" Then
TextBox96.Value = "0"
End If
End If


If MsgBox("Êtes-vous sûr ?", 36, "Confirmation") = vbYes Then 'condition : si "Oui"au message

Select Case UCase(Me.ComboBox13.Value) 'agit en fonction de la valeur de la ComboBox13 (convertie en majuscules)

Case "DEVIS" 'cas "DEVIS"
Set O = Worksheets("Devis") 'définit l'onglet O
Case "FACTURE" 'cas "FACTURE"
Set O = Worksheets("Facturier") 'définit l'onglet O' c'est été plus malin de mettre le même
Case "ACOMPTE" 'cas "ACOMPTE"
Set O = Worksheets("Facturier") 'définit l'onglet O' c'est été plus malin de mettre le même
End Select 'fin de l'action en fonction de la valeur de la Combobox13
PLV = O.Cells(Application.Rows.Count, "A").End(xlUp).Row + 1 'définie la première ligne vide de la colonne A de l'onglet O
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'userForm
'si la propriété [Tag] du contrôle n'est pas vide, renvoie la valeur du contrôle dans la cellule
'ligne = PLV / colonne = valeur de la propriété [Tag] du contrôle
If CTRL.Tag <> "" Then O.Cells(PLV, CTRL.Tag).Value = CTRL.Value
Next CTRL 'prochaine contrôle de la boucle
End If 'fin de la condition
PF = Left(O.Cells(PLV - 1, 1).Value, 5)
PM = Mid(O.Cells(PLV - 1, 1).Value, 6) + 1
NN = PF & Format(PM, "00000")
O.Cells(PLV, 1).Value = NN
Worksheets("Facturier").Range("BV:BX").ClearContents 'supprime les données qu'il copie en trop dans Facturier
Worksheets("Devis").Range("BZ:BZ").ClearContents 'supprime les données qu'il copie en trop dans Devis

MsgBox "Les données sont enregistrées"

'Methode simple pour revenir à l'userform "Vide"
Unload Me 'Quitte l'userform
UserForm2.Show 'Revient dans l'userform

End If
End Sub
 

dgeo27

XLDnaute Junior
Code modifier en : Me.TextBox91.Value = Format(Date, "dd/mm/yy")

Fonctionne pas ...
11/12/18 devient 12/11/18
 

cp4

XLDnaute Impliqué
J'ai testé chez moi: Me.TextBox1=Date
on est le 11/12/2018, c'est ce que j'ai eu dans la textbox, c-à-d pas d'inversion.

edit: Bonjour Job75:). J'avais compris qu'il voulait afficher la date du jour dans une textbox.
 

job75

XLDnaute Barbatruc
Bonjour dgeo27, cp4,

Testez avec ce nouveau code :
Code:
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'userForm
    If CTRL.Tag <> "" Then
        With O.Cells(PLV, CTRL.Tag)
            If IsDate(CTRL.Value) Then .Value = CDate(CTRL.Value) Else .Value = CTRL.Value
        End With
    End If
Next
C'est classique : avant de transférer le texte d'une date dans une cellule il faut le convertir en date.

A+
 

youky(BJ)

XLDnaute Barbatruc
Bonjour tous du forum,
Pour ne pas mettre des If dans le For
Je vois ceci en fin de macro

O.Cells(PLV, 1).Value = NN
ajouter une ligne en dessous en remplacant les ??? par le N°de colonne
O.Cells(PLV, ???) = Now 'ou Date

Bruno
 

dgeo27

XLDnaute Junior
CP4 = Oui dans les textbox de l'userform pas d'inversion c'est quand on enregistre et qu'il copie la textbox dans une cellule, la date dans la cellule elle est inverser si le jours et en dessous de 12
 

dgeo27

XLDnaute Junior
Job75 = cette méthode fonctionne mais ralentit un peut

Touky = cette méthode fonctionne également je vais l'essayer dans mon programme entiers voir si aucun bug :)
Par contre il y à pas qu'une textbox avec des dates ...

si je fait cela est ce bon ?

O.Cells(PLV, 1).Value = NN
'ajouter une ligne en dessous en remplacant les ??? par le N°de colonne
O.Cells(PLV, 90) = Date (date facture si facture)
O.Cells(PLV, 93) = Date (date facture d'acompte si acompte)
O.Cells(PLV, 81) = Date (date du document)
O.Cells(PLV, 78) = Date (date du devis si devis)

et cette partie à quoi sert elle ?

O.Cells(PLV, 1).Value = NN
donc déclare l'onglet, puis 1er ligne vide = NN (qui es nouveau numéro)
je comprend pas :s
 

cp4

XLDnaute Impliqué
Bonsoir:),

@dgeo27 : En utilisant l'outil "Remplacer" d'Excel, tu aurais pu rapidement rendre anonyme tes données sensibles et joindre ton fichier.

Deux "grosses pointures" du forum t'ont déjà répondu. Et tu n'as eu entière satisfaction.
Le mieux serait de joindre un fichier sans données confidentielles.
Tu verras ton problème sera vite résolu.

Job75;), Youky(Bj);)
 

dgeo27

XLDnaute Junior
non ici sa ne fonctionne pas car en laissant le code comme ceci :

O.Cells(PLV, 1).Value = NN
'ajouter une ligne en dessous en remplacant les ??? par le N°de colonne
O.Cells(PLV, 90) = Date (date facture si facture)
O.Cells(PLV, 93) = Date (date facture d'acompte si acompte)
O.Cells(PLV, 81) = Date (date du document)
O.Cells(PLV, 78) = Date (date du devis si devis)

que je soit en mode "Facture" ou en mode "Acompte" ou même "Devis"
il ne vérifie pas et me copie la date dans les 4 colonnes (90 - 93 - 81 - 78)
ce que sa doit faire :
Si je suis en mode facture tu copie uniquement en colonne : 90 et 81
Si en mode acompte : 93 et 81

si devis : colonne 78 mais pas sur la même feuille (mais sa je suppose qu'il le copie en regardant via Dim O quel feuille c'est) nn ?
 

cp4

XLDnaute Impliqué
Je n'arrive pas à comprendre comment tu parviens à afficher ton userform sur ton écran.
Je n'ai qu'un 15 pouces, donc ton userform va trop loin à gauche.

edit: après avoir neutralisé ta macro open. Dis-nous sur quel userform ça se passe.
 

dgeo27

XLDnaute Junior
sur la page facture il y à le gros bouton pour ouvrir l'usf sinon il le lance quand on ouvre le fichier mais oui peut petre que la résolution n'est pas pareil moi c'est un 24" en 16/9
 

dgeo27

XLDnaute Junior
Je vient de revoir le code de Job75 et en effet sa ralentit pas désolé :(
et avec ton code il me copie pas les dates que je n'ai pas besoin comme indiquer au dessus
donc sa à l'air ok pour moi
je test encore pour être sûre :)
 

ChTi160

XLDnaute Barbatruc
Bonsoir dgeo27
Bonsoir le Fil ,le Forum
tu dis :
Voici une copie j'ai tout retirer
sauf dans le Userform Imprimer je pense .
je pense que tu peux (maintenant) supprimer ton Fichier !
il en plus inexploitable pour beaucoup....
jean marie
 

dgeo27

XLDnaute Junior
Pfff ...

Maintenant quand je suis dans l'USF
et que je regarde mes anciennes Factures (donc déjà enregistrer dans la base de données)
je clic sur la facture dans la listbox et il me la replace dans les textbox en fait :)

Mais il m'affiche des dates encore mélanger ... dans la feuille c'est une facture avec comme date : 31-11-18
et il me l'affiche dans la textbox en 18-11-31 :s :s :s
à devenir fou !
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas