IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème format de cellule après modification via userform [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 1
    Points
    1
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    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

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Voici le bout de code gérant la modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 14
        Controls("TextBox" & i) = Sheets("Liste").Cells(.List(.ListIndex, 1), i)
    Next i
    Jérôme

  5. #5
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Points : 3 974
    Points
    3 974
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 1
    Points
    1
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4
    Points : 1
    Points
    1
    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.

Discussions similaires

  1. [XL-2013] Problème de Format de cellules après un QueryTables URL
    Par MhoJiTo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/03/2015, 21h56
  2. [XL-2007] Modification via userform, vide ou imposer format nombre
    Par cathodique dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 03/02/2014, 16h56
  3. Problème format de cellule après import
    Par jorisfavre dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2013, 15h16
  4. Comment effacer des cellule après modification d'une cellule
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2009, 08h51
  5. Formater les cellules numériques d'un USERFORM
    Par Stargate SG1 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2007, 18h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo