UserForm

Résolu
ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention   -  
ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'utilise un code qui m'a été donné sur ce forum il y a quelques années. Il s'agit d'un Userform qui me permet de remplir des données dans une feuille excel "MASTER". Je rencontre un blocage lorsque je veux venir modifier des données saisies. Je double clique sur la cellule de la colonne A de la ligne à modifier et normalmeent le Userform doit réapparaitre avec les données déjà saisie pour que je vienne faire mes modifs, mais un message d'erreur apparait "objet requis".

Je vous met mon fichier en copie.

D'avance merci pour votre aide

http://www.cjoint.com/c/GGyoX0XoABQ

3 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Mouton, bonjour le forum,

Le jour, la semaine et le mois sont calculés en fonction de la date. Le fait de vouloir les calculer à l'ouverture de l'UserForm fait planter le code. Supprime (ou commente) ces trois lignes :

semaine(CDate(TextBox1)) = .Range("C" & Ligne_Modif)
Format(CDate(TextBox1), "mmmm") = .Range("D" & Ligne_Modif)
Format(CDate(TextBox1), "dddd") = .Range("B" & Ligne_Modif)


Si tu modifies la date ces données seront recalculées et renvoyées via le bouton Valider dans la ligne, dans leur colonne respective...
0
ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour ThauTheme,

Merci pour ta réponse ça fonctionne parfaitement ! Saurais tu également m'aider pour écrire une ligne de code qui permettrait de trier les données de la feuille excel en fonction de la date ?

Merci :)
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Re,

Oui avec un exemple avec une dizaine de lignes de données !...
0
ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention  
 
ThauTheme,

Voici mon fichier mis à jour avec plusieurs ligne de données, l'idée est de trier les données par date (colonne A) et par heure ((colonne E).
http://www.cjoint.com/c/GGzhnm75gYQ

Merci :)
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160 > ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour le fil, bonjour le forum,

Le code de tri :

Sub Macro2()
Dim O As Worksheet
Dim DL As Integer

Set O = Worksheets("MASTER")
DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row
O.Sort.SortFields.Clear
O.Sort.SortFields.Add Key:=Range("A3:A" & DL) _
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortTextAsNumbers
O.Sort.SortFields.Add Key:=Range("E3:E" & DL) _
    , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With O.Sort
    .SetRange Range("A3:AA" & DL)
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
End Sub
0
ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention   > ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention  
 
Merci le trie fonctionne !
Par contre je m'aperçois que j'ai un soucis au niveau des fonctions Semaine et Mois. Par exemple lorsque je rentre la date 01/03/2017 il renvoi le mois Janvier et la Semaine 1, comme si la date ete au format anglo-saxon alors que j'ai bien une ligne de code qui défini le format date en "dd/mm/yyyy". Une idée ?
Merci
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160 > ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

Oui ! Quand on renvoie une date d'un contrôle vers une cellule on s'expose à ce genre de problème. Pour éviter ça je transforme la date en un entier long avec DateSerial et je n'ai plus de problème.

Ton code modifié :

'valide Nouveau/valide Modif
Private Sub CommandButton1_Click()
Dim DerLig As Integer
Dim D As Long 'déclare la variable D (Date)

D = DateSerial(Year(Me.TextBox1.Value), Month(Me.TextBox1.Value), Day(Me.TextBox1.Value)) 'définit la date D en entier long
With Worksheets("MASTER")
    If Ligne_Modif = 0 Then
        DerLig = .Range("A" & Rows.Count).End(xlUp).Row + 1
    Else
        DerLig = Ligne_Modif
    End If
        .Range("A" & DerLig).Value = D 'renvoie la date D
        .Range("A" & DerLig).NumberFormat = "dd/mm/yyyy" 'formate la date D
        .Range("C" & DerLig) = semaine(D) 'semaide de D
        .Range("D" & DerLig) = Format(D, "mmmm") 'mois de D
        .Range("B" & DerLig) = Format(D, "dddd") 'jour de D
        .Range("E" & DerLig).Value = TextBox2.Value
        .Range("F" & DerLig).Value = ComboBox1.Value
        .Range("G" & DerLig).Value = ComboBox2.Value
        .Range("H" & DerLig).Value = ComboBox3.Value
        .Range("I" & DerLig).Value = ComboBox4.Value
        .Range("J" & DerLig).Value = ComboBox11.Value
        .Range("K" & DerLig).Value = TextBox3.Value
        .Range("L" & DerLig).Value = TextBox4.Value
        .Range("M" & DerLig).Value = TextBox5.Value
        .Range("N" & DerLig).Value = ComboBox5.Value
        .Range("O" & DerLig).Value = TextBox6.Value
        .Range("P" & DerLig).Value = TextBox7.Value
        .Range("Q" & DerLig).Value = ComboBox6.Value
        .Range("R" & DerLig).Value = TextBox8.Value
        .Range("S" & DerLig).Value = TextBox9.Value
        .Range("S" & DerLig).NumberFormat = "# ##0,00"
        .Range("T" & DerLig).Value = TextBox10.Value
        .Range("T" & DerLig).NumberFormat = "# ##0,00"
        .Range("U" & DerLig).Value = TextBox11.Value
        .Range("U" & DerLig).NumberFormat = "# ##0,00"
        .Range("V" & DerLig).Value = TextBox12.Value
        .Range("V" & DerLig).NumberFormat = "# ##0,00"
        .Range("W" & DerLig).Value = ComboBox7.Value
        .Range("X" & DerLig).Value = ComboBox8.Value
        .Range("Y" & DerLig).Value = ComboBox9.Value
        .Range("Z" & DerLig).Value = ComboBox10.Value
        .Range("AA" & DerLig).Value = TextBox13.Value
End With
Unload Me
End Sub
0
ti_mouton Messages postés 143 Date d'inscription   Statut Membre Dernière intervention   > ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention  
 
Impec ! Merci beaucoup
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Dans l'initialisation du formulaire, c'est cette partie du code qui est en cause:
semaine(CDate(TextBox1)) = .Range("C" & Ligne_Modif)
Format(CDate(TextBox1), "mmmm") = .Range("D" & Ligne_Modif)
Format(CDate(TextBox1), "dddd") = .Range("B" & Ligne_Modif)


Elle n'a jamais pu fonctionner écrite ainsi !!!
Et je ne vois pas ce que tu voudrais faire.

Cordialement
Patrice
0