Convertir une cellule de format texte en format nombre VBA Excel Combobox [Résolu]

Signaler
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020
-
IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020
-
Bonjour,

Je suis en train de créer un formulaire afin de remplir des notes, le problème c'est que je suis en combobox pour mes notes et le coefficient et ça me le met en format texte et ça ne fait pas mes moyennes, je dois à chaque insertion, convertir manuellement les formats de cellule. Je pensais faire une TextBox, mais j'ai le même problème.

Il s'agit des combobox 3 et 4. Pouvez-vous m'aider et me dire ou rajouter les différents codes? Je suis un peu perdue.

Mon code:

' Les lignes qui débutent par une apostrophe identifient un commentaire c'est-à-dire du texte exploitable par le lecteur et non par le programme VBA
' Objectif : documenter le code VBA pour le rendre plus compréhensible.



'Attention les deux lignes suivantes doivent être impérativement placées en tout début de programme
Option Explicit  'Activation de la déclaration explicite des variables
Dim Ws As Worksheet  'Variable pour un Objet Worksheet en PUBLIC pour tous les Controls de cet UserForm


Private Sub CheckBox1_Click()

End Sub


'Correspond au programme du bouton QUITTER
Private Sub CommandButton2_Click()
Unload Me
MsgBox ("En cas de problème, contactez Prénom Nom : ***@***") 'Vous informant que le présent contact est inséré dans votre tableau Excel.
'Unload => Permet de fermer l'Userform et de l'effacer de la mémoire, les valeurs de ses contrôles sont à alors perdues.
' Me => Référence à l'objet en cours
 End Sub

'Correspond au programme du FORULAIRE6
'Cet évènement est important car il permet de définir les propriétés des objets et les valeurs par défaut des variables, lors du lancement du Userform.
' Déclaration des variables grâce à Dim
'    1° Choisir un nom
'    2° Choisir un TYPE (= définir la nature du contenu)
' --------------------------------------------------------

Private Sub CommandButton1_Click()
Dim L As Integer

If MsgBox("Etes-vous certain de vouloir insérer cette nouvelle note ?", vbYesNo, "Demande de confirmation") = vbYes Then 'condition : si oui au message
L = Sheets("Notes").Range("a65536").End(xlUp).Row + 1 'Permet de se positionner sur la dernière ligne de tableau NON VIDE

Range("A" & L).Value = ComboBox1 'Insère la donnée de la liste déroulante dans la colonne A
Range("B" & L).Value = TextBox1 'Insère la donnée de la textbox1 dans la colonne B
'et à suivre....
Range("C" & L).Value = ComboBox2
Range("D" & L).Value = ComboBox3
Range("E" & L).Value = ComboBox4


End If

' Affiche une boîte de message
MsgBox ("Note insérée avec succès :)") 'Vous informant que le présent contact est inséré dans votre tableau Excel.

Unload Me ' Vide et ferme l'Userform ( formulaire)
UserForm1.Show 'Affiche le  formulaire
End Sub



Private Sub UserForm_Click()

End Sub


Merci beaucoup :)

6 réponses

Messages postés
11784
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 février 2020
1 672
Tu peux à l'initialisation de ton userform définir les couleurs
Ex
Private Sub UserForm_Initialize()
    With Me
       .ComboBox2 .BackColor = RGB(224, 120, 243)
       .ComboBox3 .BackColor = RGB(224, 145, 201)
    End with
End sub

IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

Merci c'est super cool ????
IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

J'ai protégé les feuilles et j'ai mis sur le haut du tableau un bouton pour activer le formulaire. Mais comme tout est protégé ça ne veut pas rentrer les notes. Comment dire que je veux commencer à la ligne 15 comme à partir de la 15, les lignes ne sont plus protégées ?
Messages postés
11784
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 février 2020
1 672
Bonjour

Pour convertir en nombre :
Range("D" & L).Value =Val(ComboBox3)

Cdlmnt
Via
Merci, je dois le mettre où exactement ?
Messages postés
11784
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 février 2020
1 672
Il suffit de modifier tes lignes dans ta Private Sub CommandButton1_Click() en rajoutant le Val
Merci mille fois ça a fonctionné ????????
IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

Je voulais savoir pour les couleurs est-ce que j'ai la possibilité d'en mettre d'autres que celles dans la liste déroulante ?
Messages postés
11784
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 février 2020
1 672
De quelles couleurs parles-tu ?
De celles du fond de ta combox ?
Les couleurs de fonds comme d'écriture peuvent être modifiées à partir de la fenêtre Propriétés de la Comboxbox
IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

Oui je parle de celle-ci mais y en a un nombre limité. Ce que je voulais savoir c'est au on pouvait en mettre d'autres.
Messages postés
11784
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 février 2020
1 672
Comme dans ta macro tu as la recherche de la1ere ligne vide avec
L = Sheets("Notes").Range("a65536").End(xlUp).Row + 1
il suffit qu'en A14 tu mettes quelque chose pour démarrer en ligne 15

Mais si tes cellules en dessous sont déprotégées rien n'empêche une fois la note rentrée à partir de ton userform de la modifier par la suite
personnellement je protégerai toutes la feuille et je la ferai déprotéger en début de macro avec l'instruction
Activesheet.Unprotect
pour autoriser la macro à écrire dans la feuille
et je reprotégerai en fin de macro avec l'instruction
Activesheet.Protect

Tu peux aussi mettre un mot de passe pour éviter qu'on ne déprotège la feuille à partir du ruban
dans ce cas les instructions seront par exemple avec le mdp toto
Activesheet.Unprotect "toto"
Activesheet.Protect "toto"
IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

J'ai réussi et j'ai mis le mot de passe ça je savais faire depuis le ruban. Merci beaucoup en tous cas !
IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

Hello dis je t'embête à nouveau, j'ai voulu l envoyer à tout le monde, mais le problème c'est que dans le formulaire quand je mets par exemple la note 4.1, il l'écrit 4,1 et du coup ça met dans mon tableur 4 ... Quel est le problème ? J'ai mis pour les combobox une plage de données dans laquelle mes notes sont entrées avec un point. Je sais pas comment faire pour que ça fonctionne....
Messages postés
11784
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
22 février 2020
1 672
Hello

Pour des nombres décimaux remplace le Val dans la macro par CDbl mais il faut que dans ta liste qui alimente la comboxbox les notes soient écrites avec une virgule sinon c'est du texte et tu auras une incompatibilité de type

IvyJu
Messages postés
13
Date d'inscription
lundi 20 janvier 2020
Statut
Membre
Dernière intervention
3 février 2020

Merci,
J'ai réussi a faire avant que tu me répondes en mettant manuellement les données dans le code. Mais au moins je saurai pour la prochaine