Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Invité de passage
    Homme Profil pro Alexandre Maveyraud
    Webdesigner
    Inscrit en
    janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Maveyraud
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : janvier 2012
    Messages : 4
    Points : 0
    Points
    0

    Par défaut Problème format de cellule après modification via userform

    Salut à tous,

    Voici mon problème :

    J'ai créé un userform permettant l'incrémentation des cellules d'un tableau ainsi que la modification de ces mêmes données. Le but de ce userform est de consigner une liste de proposition de devis à des clients avec leurs montants (concrètement il y a Date-Nom-Prenom-Coordonnées du patient-Nombre de devis-Montant devis-Refusé ou accepté-montant du devis accepté...).

    Il y plusieurs formats de données : du texte, des dates, des nombres et du monétaire, j'ai donc modifier le format de cellule de mes colonnes en conséquence.

    En mode "création" il n'y a aucun soucis, tous les formats sont respectés.

    Par contre en mode "modification" les données des colonnes au format "nombre" et "monétaire" passent en mode "texte" (avec excel qui prévient qu'il y a un nombre au format texte dans la cellule.

    Première petite originalité : dès que je double-clic dans la cellule et que j'appuie sur la touche entrée, celle-ci retrouve le bon format.

    Deuxième petite originalité : je n'ai pas le problème avec la colonne au format date, le format de la cellule ne change pas.

    C'est peut être un truc tout bête, mais j'avoue que je sèche. Si quelqu'un a une idée, je suis preneur.

    Merci d'avance

    Je joins le code de mon userform :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    Option Explicit 'oblige à déclarer toutes les variables
     
    Private Sub ComboBox1_Change()
     
    End Sub
     
    Private Sub ComboBox1_Click()
    Dim i As Byte
     
    CommandButton3.Visible = True
    CommandButton4.Visible = True
    Label27.Caption = "mode : Modification"
    With ComboBox1
    For i = 1 To 14
    Controls("TextBox" & i) = Sheets("Liste").Cells(.List(.ListIndex, 1), i)
    Next i
    End With
    End Sub
     
    Private Sub CommandButton1_Click() 'bouton "Ok"
    Dim Dl As Long 'déclare la variable Dl (Dernière ligne)
    Dim x As Byte 'déclare la variable x
     
    With Sheets("Liste")
    .Activate 'active l'onglet "Liste"
    Dl = .Range("A65536").End(xlUp).Row + 1 'définit la variable Dl
     
    'place les donnés dans le tableau
    'On vérifie que les champs obligatoires sont correctement remplis
    If TextBox1.Text = "" Then
    MsgBox "Veuillez entrer la date du devis", vbCritical, "Champs manquant"
    TextBox1.SetFocus
    ElseIf TextBox2.Text = "" Then
    MsgBox "Veuillez remplir le nom du patient", vbCritical, "Champs manquant"
    TextBox2.SetFocus
    ElseIf TextBox7.Text = "" Then
    MsgBox "Veuillez entrer le nombre de devis", vbCritical, "Champs manquant"
    TextBox7.SetFocus
    ElseIf TextBox8.Text = "" Then
    MsgBox "Veuillez entrer le montant du devis", vbCritical, "Champs manquant"
    TextBox8.SetFocus
    Else
    For x = 1 To 14 'boucle sur 14 éléments
    .Cells(Dl, x).Value = Me.Controls("TextBox" & x).Value
    Next x
    Unload Me 'vide et ferme l'UserFOrm
    End If
    'tri selon le nom
    .Range("A2").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
    xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    End With
    End Sub
     
    Private Sub CommandButton2_Click() 'bouton "Annuler"
    Unload Me 'vide et ferme l'UserFOrm
    End Sub
     
    Private Sub CommandButton3_Click()
    Dim i As Byte
     
    With ComboBox1
    For i = 1 To 14
    Sheets("Liste").Cells(.List(.ListIndex, 1), i) = Controls("TextBox" & i)
    Controls("TextBox" & i) = ""
    Next i
    .ListIndex = -1
    End With
     
    CommandButton3.Visible = False
    CommandButton4.Visible = False
    Label27.Caption = "mode : création"
    initialisecombo
    End Sub
     
     
    Private Sub CommandButton4_Click()
    Dim i As Byte
     
    With ComboBox1
    For i = 1 To 14
    Controls("TextBox" & i) = ""
    Next i
    .ListIndex = -1
    End With
    CommandButton3.Visible = False
    CommandButton4.Visible = False
    Label27.Caption = "mode : création"
     
    End Sub
     
    Private Sub CommandButton5_Click() 'bouton "Fermer"
    Unload Me 'vide et ferme l'UserForm
    End Sub
     
    Private Sub UserForm_Initialize()
    Label27.Caption = "mode : création"
    initialisecombo
    End Sub
     
    Public Sub initialisecombo()
    Dim i As Integer
     
    With ComboBox1
    .Clear
    .ColumnCount = 2
    .ColumnWidths = "50;0"
    End With
     
    With Sheets("Liste")
    For i = 2 To .Range("a65536").End(xlUp).Row
    'Afficher Colonnes Nom Prénom et Date dans ComboBox1
    ComboBox1.AddItem
    ComboBox1.List(ComboBox1.ListCount - 1, 0) = .Cells(i, 2) & " " & .Cells(i, 3) & " - " & .Cells(i, 1)
    ComboBox1.List(ComboBox1.ListCount - 1, 1) = i
    Next i
    End With
    End Sub

  2. #2
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Bonjour,

    Dans un premier temps, plutôt que de donner tout le code, donnes nous uniquement le code de modification, car la il faut tout analyser pour comprendre le fonctionnement avec des noms de boutons qui ne sont pas explicites.
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  3. #3
    Invité de passage
    Homme Profil pro Alexandre Maveyraud
    Webdesigner
    Inscrit en
    janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Maveyraud
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : janvier 2012
    Messages : 4
    Points : 0
    Points
    0

    Par défaut

    Voici le bout de code gérant la modification :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Option Explicit 'oblige à déclarer toutes les variables
     
    Private Sub ComboBox1_Change()
     
    End Sub
     
    Private Sub ComboBox1_Click() 'Liste patients
    Dim i As Byte
     
    CommandButton3.Visible = True 'Bouton "Valider"
    CommandButton4.Visible = True 'Bouton "Annuler"
    Label27.Caption = "mode : Modification"
    With ComboBox1
    For i = 1 To 14
        Controls("TextBox" & i) = Sheets("Liste").Cells(.List(.ListIndex, 1), i)
    Next i
    End With
    End Sub

  4. #4
    Expert Confirmé Sénior Avatar de jfontaine
    Homme Profil pro Jérôme FONTAINE
    Contrôleur de Gestion
    Inscrit en
    juin 2006
    Messages
    4 732
    Détails du profil
    Informations personnelles :
    Nom : Homme Jérôme FONTAINE
    Âge : 41
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : juin 2006
    Messages : 4 732
    Points : 9 261
    Points
    9 261

    Par défaut

    Par contre en mode "modification" les données des colonnes au format "nombre" et "monétaire" passent en mode "texte" (avec excel qui prévient qu'il y a un nombre au format texte dans la cellule.

    Première petite originalité : dès que je double-clic dans la cellule et que j'appuie sur la touche entrée, celle-ci retrouve le bon format.
    Dans ton explication, je comprend que ton code met à jour les cellules d'une feuille, mais à la lecture du code, je remarque qu'il alimente des textbox à partie des cellules d'une feuille
    Code :
    1
    2
    3
    For i = 1 To 14
        Controls("TextBox" & i) = Sheets("Liste").Cells(.List(.ListIndex, 1), i)
    Next i
    Jérôme

    "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
    Si la réponse répond à votre besoin, votre vote nous encouragera.
    Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.

  5. #5
    Expert Confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    avril 2011
    Messages
    1 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : avril 2011
    Messages : 1 725
    Points : 3 808
    Points
    3 808

    Par défaut

    Bonjour,

    Si j’ai bien compris ton problème, il s’agit surtout d’opérer une conversion correcte.
    Un contrôle TextBox contient du texte. Pour transférer ce contenu, tu dois le convertir en un type de donnée correspondant au résultat recherché.

    Exemple
    Code :
    1
    2
    Range("A2") = CDate(Me.TextBox1) 'Date
    Range("B2") = CDbl(Me.TextBox2) 'Nombre
    Tu peux ensuite appliquer le format voulu à tes cellules.

    Cordialement.

  6. #6
    Invité de passage
    Homme Profil pro Alexandre Maveyraud
    Webdesigner
    Inscrit en
    janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Maveyraud
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : janvier 2012
    Messages : 4
    Points : 0
    Points
    0

    Par défaut

    Bonjour,

    Tout d'abord merci pour vos réponses.
    En fait les textbox sont alimentées par les cellules de ma base de données pour pouvoir effectué les modifications.
    Je vais essayé de régler le problème de conversion et je reviens vers vous.
    Ce qui me semble bizarre surtout c'est qu'en mode "création", le formatage des cellules en format nombre et monétaire fonctionne bien alors que ce n'est pas le cas en mode "modification".

  7. #7
    Invité de passage
    Homme Profil pro Alexandre Maveyraud
    Webdesigner
    Inscrit en
    janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Nom : Homme Alexandre Maveyraud
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : janvier 2012
    Messages : 4
    Points : 0
    Points
    0

    Par défaut

    Ca semble fonctionner, ça induit juste d'autres petits soucis mais je vais les régler.
    Merci à tous de vous êtes penché sur mon problème.

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •