XL 2016 Uniformiser la date des cellules

  • Initiateur de la discussion Initiateur de la discussion Phylo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
Bonsoir.
Évidemment, mais c'est peut être de ma faute, à cause d'une faute d'orthographe qui était plus une étourderie. Je pensais avoir mis SonNom et non son SonNon, et il fallait bien sûr à chaque fois le remplacer par le nom du contrôle qui doit servir à afficher et modifier l'information de cette colonne. Mais je l'avais mis en italiques, ça aurait dû vous alerter.

Et toujours pas de référence à CLsCAS. Qu'est ce que vous attendez pour la cocher ?
1600540921566.png

Je suis surpris que vous ayez remplacé les TextBox des dates par des ComboBox
L'objet ControlsAssociés accepte 7 sortes de contrôles, le ComboBoxLiées n'accepte que les ComboBox.
 
Dernière édition:
Bonjour

Quand vous Auriez-vous un peu de temps pour jeter un coup d'oeil stp.
C'est urgent parcequ'on travaille systématiquement avec le fichier pour une tracabilité de nos activités.

juste pour te dire que j'ai ajouté une barre de recherche dans l'userforme comme la barre déja crée dans le fichier excel
Cordialement
 

Pièces jointes

Dernière édition:
Bonjour.
J'ai eu des problèmes d'accès à internet tout ce week-end, c'est pourquoi je n'ai pas pu répondre plus tôt.
Vous n'avez toujours pas remplacé les 'SonNom' par les noms des contrôles concernés (ComboBox et TextBox) .
Il n'y aura pas de barre de recherche. Ni d'ailleurs de recherche par Find. Ce sera inutile parce que l'objet ComboBoxLiées fait toujours ce qu'il faut pour retrouver la ligne chaque fois qu'on tape ou choisit quelque chose dans une ou plusieurs des ComboBox dont on lui a confié la charge.
 
Dernière édition:
Désolé
je viens de changer les sonnom avec le nom des controles
J'ai enlevé la barre de recherche dans l'userforme

par contre j'ai gardé la barre de recheche dans excel.
J'aurai besoin de cette barre de recherche parce qu'elle m'afiche les données dans l'userforme ou cas ou j'aurai besoin d'aporter des modifs et enregistrer par la suite

Elle me donne un apercu de toute la ligne a travers l'userforme

Merci
 

Pièces jointes

On fera ça autrement. Probablement une méthode dans l'UserForm pour lui demander d'afficher une certaine ligne ou bien qui fait rechercher au ComboBoxLiées le numéro PF Batch, et s'il n'existe pas, ce même numéro en tant que Vrac Batch. Ça irait, ou bien l'inverse, d'abord en tant que Vrac Batch ?
Il y a encore des erreurs de compilation. Faites Alt+DL pour les voir. Les mouvements au coup par coup entre cellules et contrôles seront appelés à disparaître complètement.
Pour vous donner un aperçu, la Private Sub CBnEffacer_Click() comportera en tout et pour tout une seule instruction: CL.Nettoyer. La plupart des autres procédures que la UserForm_Initialize auront en moyenne 6 ou 7 lignes pas plus. Ça m'intéresserait que vous mettiez ', Mode:=1" à la fin des Add des contrôles qui doivent changer la date des contrôles qui les suivent. Ça me permettrait de le faire dans une Sub CA.Change …
 
Dernière édition:
Bonjour
Une possibilité pour votre recherche :
Dans Feuil6 :
VB:
Private Sub CBnRecherche_Click()
   Dim Cel As Range
   Set Cel = [Tsource[[ Vrac Batch]:[PF Batch]]].Find(What:=Me.TextBox1.Value, LookAt:=xlWhole)
   If Cel Is Nothing Then MsgBox "Numéro introuvable", vbInformation, "Recherche": Exit Sub
   UFmSaisie.AfficherCel Cel
   End Sub
Dans UFmSaisie :
VB:
Public Sub AfficherCel(ByVal Cel As Range)
   LCou = Cel.Row - CL.Lignes(1).Range.Row + 1
   TVL = CL.Lignes(LCou).Range.Value
   CL.ValeursDepuis TVL
   CA.ValeursDepuis TVL
   CBnAjout.Enabled = False
   CBnModif.Enabled = True
   Me.Show
   End Sub
 
Comme vous êtes assez proche de ce qu'il fallait faire (à plein d'erreurs près, encore), voici les procédures les plus essentielles à mettre derrière pour un fonctionnement classique :
VB:
Private Sub CL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   If NbrLgn = 1 Then Exit Sub
   ReDim TVL(1 To 1, 1 To CL.Colonnes.Count)
   CA.ValeursDepuis TVL
   CBnAjout.Enabled = NbrLgn = 0 Eqv Complet
   CBnModif.Enabled = False
   LCou = 0
   End Sub
Private Sub CL_BingoUn(ByVal Ligne As Long)
   LCou = Ligne
   TVL = CL.Lignes(LCou).Range.Value
   CA.ValeursDepuis TVL
   End Sub
Private Sub CBnAjout_Click()
   CL.ValeursVers TVL
   CA.ValeursVers TVL
   CL.Lignes.Add.Range.Value = TVL
   CL.Actualiser
   End Sub
Private Sub CBnModif_Click()
   CA.ValeursVers TVL
   CL.Lignes(LCou).Range.Value = TVL
   End Sub
Private Sub CBnSuppr_Click()
   If MsgBox("Êtes-vous sûr de vouloir supprimer ça ?", vbYesNo + vbDefaultButton2, _
      Me.Caption & " — Supprimer") = vbNo Then Exit Sub
   CL.Lignes(LCou).Delete
   CL.Actualiser
   End Sub
 
Dernière édition:
Merci pour ton retour
J'ai introduit toutes les modifications que tu m'a demandé. Désolé de prendre de ton temps .

Merci pour la fonction AltDL. Il m'a aidé bcp
Pour la recherche dans Userforme, je n'ai pas compris le code comment on va faire la requette ? il s'agit d'un bouton de recherche.

STp Dranreb, j'ai besoin de ton expertise et ton aide pour me rectifier le code directement dans le fichier si ça vous dérange pas.

ci-joit la version améliorée
 

Pièces jointes

On progresse, on progresse. Mais il y a encore plein de titres de colonnes qui n'existent pas
Au bout d'un moment j'ai cessé de les mettre en commentaire en vue d'obtenir quelque chose qui tournait quand même … C'est presque toujours un question d'espaces en trop …
 
Bonjour.
Je suppose que vous faites allusion seulement à la correction de la date par la Worksheet_Change. Je sais depuis longtemps que ce n'est pas possible. Il mettrait la date partout, puisque par l'UserForm on écrit toujours les ComboBox, même si leur valeur est la même qu'auparavant. Il vaut mieux qu'elle ne la change jamais quand c'est fait par l'UserForm. Par contre on pourrait faire en sorte que la date soit corrigée automatiquement dans la TextBox dès qu'on change la ComboBox. Mais en ayant testé une solution que j'envisageais pour cela, je me suis rendu compte d'un oubli dans la programmation des contrôles associés.
C'est corrigé dans cette version, à réinstaller, donc :
 

Pièces jointes

Dernière édition:
La procédure suivante, à mettre de préférence derrière la CL_BingoUn fonctionne avec cette nouvelle version du CLsCAs :
VB:
Private Sub CA_Change(ByVal CAM As CLsCAs.CAsso)
   Dim CAsDate As CAsso
   If CAM.Mode And 1 Then
      Set CAsDate = CA.Item(CAM.Index + 1)
      If CAM.Valeur = TVL(1, CAM.Col) Then
         CAsDate.Valeur = TVL(1, CAsDate.Col)
      ElseIf IsEmpty(CAM.Valeur) Then
         CAsDate.Valeur = Empty
      Else
         CAsDate.Valeur = Date
         End If
      End If
   End Sub
Elle met la date du jour comme valeur du contrôle associé qui, dans les Add, en suit un qui a été spécifié avec une valeur impaire de Mode (Mode:=1 ou Mode:=3 par exemple).
Rappel: Mode est un argument facultatif de la méthode Add, simplement noté, non utilisé de façon spécifique par l'objet ControlsAssocié lui même.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
105
Réponses
5
Affichages
237
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
2
Affichages
511
Retour