Problèmes transfert données depuis UserForm vers tableur

Hypokhampe

XLDnaute Nouveau
Salut le forum,

J'ai créé un formulaire dans un fichier de gestion de stock.
Il permet de créer des entrées en stock de nouveaux composants.

Lorsque je clique sur mon bouton Enregistrer, les données se transfèrent sans problème vers le tableur.

Malheureusement, je ne sais comment me sortir de plusieurs problèmes récurrents :
- la référence du composant (une série de chiffres formant un nombre) est en format texte dans le tableur après l'enregistrement (or j'aurais besoin d'un format nombre).
- idem pour la quantité entrante
- l'emplacement en stock (2 lettres et un chiffre) s'enregistre avec une majuscule puis une minuscule puis un chiffre (or je souhaiterais des majuscules uniquement)

Merci d'avance pour votre aide.

Et vive Excel Downloads ! Ce forum est génial !

A vous lire.

HK
 

Fred0o

XLDnaute Barbatruc
Re : Problèmes transfert données depuis UserForm vers tableur

Bonsoir Hypokhampe,

Pours questions 1 et 2 :
VB:
Range("xx").value = CInt(TextBox.value)
ou bien :
VB:
Range("xx").value = CInt(ComboBox.value)

Pour la question 3 :
VB:
Range("xx").value = UCase(TextBox.value)

A+
 

Hypokhampe

XLDnaute Nouveau
Re : Problèmes transfert données depuis UserForm vers tableur

Bizarre...

UCase fonctionne très bien (c'est la première donnée à entrer dans le tableur depuis le UserForm).
CInt semble bloquer...

Voici mon code pour un click sur le bouton Enregistrer, peut-être ai-je fait une erreur.
L'erreur renvoyée est une erreur '6' (dépassement de capacité).

'--- Positionnement dans la base
ligne = Sheets("STOCKS").[E65000].End(xlUp).Row + 1
'--- Transfert Formulaire dans STOCKS
Sheets("STOCKS").Cells(ligne, 2).Value = UCase(Me.emplacement.Value)
Sheets("STOCKS").Cells(ligne, 4).Value = CInt(Me.brutpso.Value)
Sheets("STOCKS").Cells(ligne, 5).Value = CInt(Me.reffinie.Value)
Sheets("STOCKS").Cells(ligne, 6).Value = CInt(Me.indice.Value)
Sheets("STOCKS").Cells(ligne, 8) = Me.designation
Sheets("STOCKS").Cells(ligne, 9) = Me.observations
Sheets("STOCKS").Cells(ligne, 10) = Me.projet
Sheets("STOCKS").Cells(ligne, 11) = Me.hpdl
Sheets("STOCKS").Cells(ligne, 12) = Me.ok
Sheets("STOCKS").Cells(ligne, 13) = Me.lot
Sheets("STOCKS").Cells(ligne, 14) = Me.jour & "/" & Me.mois & "/" & Me.annee
If Me.ok = "NC" Then
Sheets("STOCKS").Cells(ligne, 17).Value = CInt(Me.quantite.Value)
Else
Sheets("STOCKS").Cells(ligne, 16).Value = CInt(Me.quantite.Value)
End If
Me.emplacement = ""
Me.quantite = ""
Me.brutpso = ""
Me.reffinie = ""
Me.indice = ""
Me.designation = ""
Me.observations = ""
Me.projet = ""
Me.hpdl = ""
Me.ok = ""
Me.lot = ""
Me.jour = ""
Me.mois = ""
Me.annee = ""
 

Hypokhampe

XLDnaute Nouveau
Re : Problèmes transfert données depuis UserForm vers tableur

Bizarre...

UCase fonctionne très bien (c'est la première donnée à entrer dans le tableur depuis le UserForm).
CInt semble bloquer...

Voici mon code pour un click sur le bouton Enregistrer, peut-être ai-je fait une erreur.
L'erreur renvoyée est une erreur '6' (dépassement de capacité).

Code:
'--- Positionnement dans la base
ligne = Sheets("STOCKS").[E65000].End(xlUp).Row + 1
'--- Transfert Formulaire dans STOCKS
Sheets("STOCKS").Cells(ligne, 2).Value = UCase(Me.emplacement.Value)
Sheets("STOCKS").Cells(ligne, 4).Value = CInt(Me.brutpso.Value)
Sheets("STOCKS").Cells(ligne, 5).Value = CInt(Me.reffinie.Value)
Sheets("STOCKS").Cells(ligne, 6).Value = CInt(Me.indice.Value)
Sheets("STOCKS").Cells(ligne, 8) = Me.designation
Sheets("STOCKS").Cells(ligne, 9) = Me.observations
Sheets("STOCKS").Cells(ligne, 10) = Me.projet
Sheets("STOCKS").Cells(ligne, 11) = Me.hpdl
Sheets("STOCKS").Cells(ligne, 12) = Me.ok
Sheets("STOCKS").Cells(ligne, 13) = Me.lot
Sheets("STOCKS").Cells(ligne, 14) = Me.jour & "/" & Me.mois & "/" & Me.annee
 If Me.ok = "NC" Then
 Sheets("STOCKS").Cells(ligne, 17).Value = CInt(Me.quantite.Value)
   Else
   Sheets("STOCKS").Cells(ligne, 16).Value = CInt(Me.quantite.Value)
 End If
Me.emplacement = ""
Me.quantite = ""
Me.brutpso = ""
Me.reffinie = ""
Me.indice = ""
Me.designation = ""
Me.observations = ""
Me.projet = ""
Me.hpdl = ""
Me.ok = ""
Me.lot = ""
Me.jour = ""
Me.mois = ""
Me.annee = ""
 

Fred0o

XLDnaute Barbatruc
Re : Problèmes transfert données depuis UserForm vers tableur

Re-bonsoir,

Avec juste un bout de code incomplet, difficile de te répondre. Ensuite, j'ai répondu pour une quantité (que je supposais entière). Je vois que tu as repris le CInt pour plusieurs valeurs qui sont peut-être des nombres réels.

A toi d'adapter le fonction de conversion à ton besoin, voir l'aide EXCEL :

Les fonctions ci-dessous convertissent une expression en un type de données spécifique.
Syntaxe

CBool(
expression)
CByte(
expression)
CCur(
expression)
CDate(
expression)
CDbl(
expression)
CDec(
expression)
CInt(
expression)
CLng(
expression)
CLngLng(
expression) (Valide uniquement sur les plateformes 64 bits.)
CLngPtr(
expression)
CSng(
expression)
CStr(
expression)
CVar(
expression)
L’argument expression peut être n’importe quelle expression de chaîne ou expression numérique.
Types renvoyés

Le nom de la fonction détermine le type renvoyé, comme le montre le tableau suivant :
Fonction Type renvoyé Plage de valeurs de l'argument expression CBool Boolean Toute chaîne ou expression numérique valide. CByte Byte 0 à 255. CCur Currency -922 337 203 685 477,5808 à 922 337 203 685 477,5807. CDate Date Toute expression de date valide. CDbl Double -1.79769313486231E308 à
-4,94065645841247E-324 pour les valeurs négatives ; 4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives. CDec Decimal +/-79 228 162 514 264 337 593 543 950 335 pour les nombres sans décimales. La plage de valeurs des nombres à 28 décimales est
+/-7,9228162514264337593543950335. Le plus petit nombre différent de zéro est 0,0000000000000000000000000001. CInt Integer -32 768 à 32 767 ; les fractions sont arrondies. CLng Long -2 147 483 648 à 2 147 483 647 ; les fractions sont arrondies. CLngLng LongLong -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 ; les fractions ne sont pas arrondies. (Valide uniquement sur les plateformes 64 bits.) CLngPtr LongPtr -2 147 483 648 à 2 147 483 647 sur les systèmes 32 bits, -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807 sur les systèmes 64 bits ; les fractions sont arrondies pour les systèmes 32 bits et 64 bits. CSng Single -3,402823E38 à -1,401298E-45 pour les valeurs négatives ; 1,401298E-45 à 3,402823E38 pour les valeurs positives. CStr String Les valeurs renvoyées par la fonction Cstr dépendent de l'argument expression. CVar Variant Même plage de valeurs que le type Double pour les nombres et que le type String pour les chaînes non numériques.
Remarques

Si l'argument expression passé à la fonction excède la plage de valeurs du type de données cible, une erreur se produit.
A+
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof