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

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
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 !
 

dgeo27

XLDnaute Junior
sauf dans le Userform Imprimer je pense .
je pense que tu peux (maintenant) supprimer ton Fichier !
il en plus inexploitable pour beaucoup....
jean marie

Voici ce qu'on ma dit donc je le supprime :/

bon je le remet ...

Je disait :

Problème 1 :
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 !

problème 2 :
Si j'ai envie pour x raison d'entrer une autre date que celle du jours ...
quand j'enregistre la facture il me copie quand même celle du jours ! malgré que j'ai mis une autre date dans la textbox ..

du coup je sais plus du tout quoi faire je tourne en rond
 

Pièces jointes

  • copie aide.xlsm
    400.2 KB · Affichages: 22

youky(BJ)

XLDnaute Barbatruc
Bonsoir à tous,
En utilisant le code de Job75
Dans le code du bouton Enregistrer (pas fait pour Modifier)
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
If IsDate(CTRL.Value) Then O.Cells(PLV, CTRL.Tag).Value = CDate(CTRL.Value) Else O.Cells(PLV, CTRL.Tag).Value = CTRL.Value
end if
Next CTRL 'prochaine contrôle de la boucle

Faut bien sur supprimer les lignes
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)

Tout comme mes collègues grosse galère pour gérer la taille de l'user
Bruno
 

dgeo27

XLDnaute Junior
En même temps un programme de compta pour indépendant on se doute bien que si j'ai pas le temps de rentrée une facture ajd je doit donc la faire demain mais à la date d ajd !!!! Fin tout le monde nas pas la même logique
 

job75

XLDnaute Barbatruc
Bonjour le fil, le forum,

Pour que UserForm2 ait la bonne dimension il suffit de mettre au début de UserForm_Initialize :
Code:
Me.Zoom = 100 * Application.Min(Application.Height / Me.Height, Application.Width / Me.Width)
J'ai aussi modifié le code du bouton Quitter pour être tranquille :
Code:
'Commande le bouton "Quitter"
Private Sub CommandButton2_Click()
If MsgBox("Fermer le fichier ?", 4) = 6 Then
    ThisWorkbook.Save
    If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
End If
Unload Me
End Sub
Fichier joint.

Bonne journée.
 

Pièces jointes

  • copie aide(1).xlsm
    419.2 KB · Affichages: 20
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…