XL 2016 Uniformiser la date des cellules

Phylo

XLDnaute Occasionnel
Bonjour

J 'ai crée un fichier excel qvec un code vba qui incorpore la date automatiquement
Mais vu que le fichier est utilisé par plusieurs personne. La date entrée est variable selon la date d' ordi de chaque personne

je veux insérer l'instruction dans ce code

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Columns("J")) Is Nothing And Target.Value <> "" Then
Target.Offset(0, 1).Value = Date & " " & Time
End If

'Dans les colonnes I et K la format de la date est : dd-mm-yyyy
exemple :
Columns()Numberformat="dd-mm-yyyy"


Merci d'avance
 

Pièces jointes

  • FOR-AQ release inbox 07-09-2020.xlsm
    765.1 KB · Affichages: 107
Solution
Mode:=1 est à préciser après une virgule à la fin d'une instruction CA.Add dans la Sub UserForm_Initialize.
Oui, elle ne gène pas, elle est là au cas où vous auriez besoin un jour de pouvoir en supprimer une. Ne serait-ce qu'à la suite d'un ajout avec une information erronée tapée dans une ComboBox.

Je joint mon classeur où j'ai déplacé un ou deux CA.Add pour qu'ils soient dans un ordre plus proche de celui des colonnes du tableau.

Phylo

XLDnaute Occasionnel
voici le bon code
j'ai mis value2

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.CountLarge > 1 Then Exit Sub
If Intersect(Me.ListObjects(1).DataBodyRange, Target) Is Nothing Then Exit Sub
If Not Intersect([J:J,L:L,N:N,S:S,U:U,W:W], Target) Is Nothing Then
Application.EnableEvents = False
With Target.Offset(0, 1)
.NumberFormat = "m/d/yyyy": .Value2 = Date: End With
If Not Intersect([J:J,S:S], Target) Is Nothing Then
With Target.Offset(0, -1)
.NumberFormat = "m/d/yyyy": .Value2 = Date + 2: End With
End If
Application.EnableEvents = True
ElseIf Target.Column = 2 Then
Dim Cel As Range
Set Cel = Sheets("Mes listes").Columns(1).Cells.Find(what:=Target.Value, LookAt:=xlWhole)
If Not Cel Is Nothing Then
Application.EnableEvents = False
Target.Offset(0, 1).Value = Cel.Offset(0, 1).Value
Application.EnableEvents = True
End If
End If
End Sub

le format de la date est bonne mais il met le 14-09-2020 pour tous meme avant
comme si je mettais uen fonction now

1600130017206.png



Cordialement
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je n'avais pas regardé l'UserForm.
Les Value de contrôles TextBox et ComboBox sont toujours des Variant/String.
Il est conseillé à leur écriture dans des cellules de convertir en nombres ceux qui doivent en devenir, sinon Excel risque de faire lui même la conversion selon une règle d'interprétation internationale. Mettez les Text des contrôles en argument des fonctions CCur pour les montants, CDbl pour les autres nombres et surtout CDate pour les dates.
Il y a cette fourniture qui fait tout ça automatiquement via un tableau des valeurs de la ligne à spécifier en argument des méthodes ValeursVers et ValeursDepuis des objets ComboBoxLiées et ControlsAssociés :
 
Dernière édition:

Phylo

XLDnaute Occasionnel
Salut
Je m’excuse si j’abuse
Mais Malheureusement je ne pourrai pas écrire ce code tout seul.

Peut-tu stp quand tu auras le temps de m’intégrer ce code dans le fichier que j’ai envoyé au début ou de le rectifier Sur le fichier que tu m’a envoyé Avant

Ce n’est pas urgent


Merci infiniment
 

Dranreb

XLDnaute Barbatruc
Non. Je n'interviens pas sur des UserForm qui n'utilisent pas mon complément. Pourquoi réinventer la poudre ?
Ce n'est quand même pas pas difficile, si vous tenez à toujours accéder individuellement aux cellules, ce qui est lent, d'écrire par exemple Cells(x, y).Value = CDate(TextBox1.Value) au lieu de Cells(x, y).Value = TextBox1.Value. Mais vous serez obligé de vérifier si la TextBox1 est renseignée d'une date sinon ça plante. Mon objet ControlsAssociés s'occupe de tout ça.
 

Phylo

XLDnaute Occasionnel
en regardant le code, je n'ai trouvé que cette procédure qui affecte les valeurs de ceulles
quand j'apporte un enregistrement des modifications

est ce que tu pense que c'est ça qui affecte la fonction date

Sub enregdonnée(lig)
Range("A" & lig).Value = Me.txbposition.Value
Range("B" & lig).Value = Me.txbcode.Value
Range("C" & lig).Value = Me.txbnom.Value
Range("D" & lig).Value = Me.txbvrac.Value
Range("E" & lig).Value = Me.txbfg.Value
Range("G" & lig).Value = Me.txbnumerotw.Value
Range("H" & lig).Value = Me.cmbstatut.Value
Range("J" & lig).Value = Me.Cmbreceptionbulk.Value
Range("L" & lig).Value = Me.cmbrevisionbulk.Value
Range("N" & lig).Value = Me.cmbrelachebulk.Value
Range("P" & lig).Value = Me.cmbcombulk.Value
Range("Q" & lig).Value = Me.cmbcombulk2.Value
Range("S" & lig).Value = Me.cmbreceptionfg.Value
Range("U" & lig).Value = Me.cmbrevisionfg.Value
Range("W" & lig).Value = Me.cmbrelachefg.Value
Range("Y" & lig).Value = Me.cmbcomfg.Value
Range("Z" & lig).Value = Me.cmbcomfg2.Value
Unload Me

End Sub

parce que je n'ai le codage de genre
Cells(x, y).Value = TextBox1.Value.
 

Dranreb

XLDnaute Barbatruc
Je n'en sais rien.
Votre réponse me donne à penser que ce n'est pas vous qui avez écrit cela.
Dans ce cas, si vous n'y voyez pas d'inconvénient, installez mon complément CBxLCtlA.xlam et cochez la référence de son projet VBA CLsCAs dans le VBAProjet de votre classeur. Faite la Sub UserForm_Initialize et je m'occuperai des autres procédures nécessaires.
Ce qu'il me faut surtout de votre part dans la Sub UserForm_Initialize ce sont toutes les instructions CA.Add Me.Trucmachin, "titre de la colonne". Parce qu'après, tout se base là-dessus dans de toutes petites procédures.
 

Phylo

XLDnaute Occasionnel
il n y aura aucun probleme mais moi je ne sais pas comment je puisse te doner la réference

vu que c'est un fichier qui a évolué dans le temps a chaque fois je demande un truc.
la derniére version est le fichier ci-joint.

merci de m'expliquerce que t'a besoin et je le ferrai
 

Pièces jointes

  • FOR-AQ release inbox 09-sept-2020 essai.xlsm
    800 KB · Affichages: 1

Dranreb

XLDnaute Barbatruc
Aussitôt après installation du CBxLCtlA.xlam, la référence CLsCAs est disponible, il suffit de la cocher dans le VBAProject du classeur utilisateur, menu Outils, Références.
S'il a été installé lors d'une session Excel précédente, pour le ré-ouvrir, cochez "CBx liées et Ctl associés" dans les compléments Excel, si toutefois il avait bien été installé dans le dossier de ces compléments.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Le projet VBA du classeur que vous avez joint n'a pas la référence à CLsCAs. La cocherez vous ?
Ensuite il y aura ça au début du module de l'UserForm :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées ' Prise en charge les ComboBox de recherche et identfication
Private WithEvents CA As ControlsAssociés ' Prise en charge des autres contrôles
Private LCou As Long, TVL() 'Numéro de la ligne courante et tableau des valeurs de cette ligne
Private Sub UserForm_Initialize()
   Set CL = CLsCAs.Création.ComboBoxLiées '  Initialisation des variables objets globales.
   Set CA = CLsCAs.Création.ControlsAssociés
   CL.Plage Feuil6 ' Le ComboBoxLiées doit se baser sur le 1er tableau trouvé en Feuil6 (Source)
   Set CA.Colonnes = CL.Colonnes ' Le ControlsAssociés doit aussi reconnaître les titres des colonnes
' La seule partie à votre charge sera ici :


   CL.CouleurSympa
   CL.Actualiser
   End Sub
Remarque: les 4 TextBox du début seront toutes à remplacer par des ComboBox. Mais vous n'aurez pas à vous occuper de leurs listes, le CL s'en chargera. Je préfèrerais qu'il y ait quelques majuscules dans les noms des contrôles et TBx au lieu de txb, CBx au lieu de cmb et CBn au lieu de btn.
Par exemple TBxDateRévisionVrac au lieu de txbdaterevisionvrac
Et la frmsaisie renommée UFmSaisie.
Même Feuil6 je le renommerais WshSource.
 
Dernière édition:

Phylo

XLDnaute Occasionnel
Bonjour Dranreb

voici le fichier formaté selon tes consignes :
1- Je préfèrerais qu'il y ait quelques majuscules dans les noms des contrôles et TBx au lieu de txb, CBx au lieu de cmb et CBn au lieu de btn.
Par exemple TBxDateRévisionVrac au lieu de txbdaterevisionvrac
Et la frmsaisie renommée UFmSaisie.
Même Feuil6 je le renommerais WshSource.

c'est fait

pour les 4 TextBox du début seront toutes à remplacer par des ComboBox. Mais vous n'aurez pas à vous occuper de leurs listes, le CL s'en chargera.

les

ComboBoxLiées
ComboBoxLiées et les ControlsAssociés ne figurent pas dans mes références pour les cocher.
Je ne sais pas pourquoi ? Est ce que c'est le fait que je travaille dans une compagnie et que l'administrateur a interdit d'installer ces compléments

voici le fichier
j'ai remarqué que le fichier devenu lourd depuis .....
merci bcp pour ton aide
 

Pièces jointes

  • FOR-AQ Release inbox 16-09-2020.xlsm
    765.1 KB · Affichages: 2

Dranreb

XLDnaute Barbatruc
Le code que j'ai indiqué doit se mettre au début de l'UserForm.
Vous disiez au #41 avoir coché les complément je pensais que vous parliez de ceci :
1600273277633.png

Si ce complément est installé dans le dossier de compléments il est forcément disponible et s'il est coché coté Excel vous avez forcément le projet CLsCAs proposé dans les référence coté VBA. Mais auriez vous demandé, à son ouverture, au CBxLCtlA.xlsm de s'installer en tant que .xlam ailleurs que dans le dossier des compléments ? Si oui il suffit de l'ouvrir un coup de là où vous l'avez mis et vous aurez aussi le projet CLsCAs proposé dans les références coté VBA.
Remarque: je voulais aussi montrer la liste des références dans l'image mais j'ai eu la stupeur de tomber sur une protection par mot de passe de votre projet VBA en faisant Alt+OR
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Et, je viens de voir que du coté Excel vous avez renommé "WshSource" la feuille "Source", ce que je ne vous proposais pas du tout de faire, mais que vous n'avez pas renommé WshSource l'objet Feuil6 qui en assume la représentation dans VBA, comme je vous le proposais, ça, par contre.
 
Dernière édition:

Discussions similaires