Conversion en nombre des valeurs textbox

bonoboas

XLDnaute Occasionnel
Bonjour

Je me permets de venir vous pour un problème de saisie, j'ai un formulaire avec des textbox qui viennent fournir une base de données (en texte et en nombre) dans la colonne B de la feuille n°1.
J'utilise ensuite la colonne B pour faire des calculs pour cela je dois convertir ces valeurs en "nombre". J'ai trouvé cette commande qui fonctionne, mais je dois avoir la feuille activé pour que cela fonctionne.

Columns(2).TextToColumns Destination:=Range("B1")



J'ai utilisé cela pour sélectionner la feuille n°1 :
Worksheets(1).Columns(2).TextToColumns Destination:=Range("B1")

Mais une fenêtre s'ouvre "Voulez vous remplacer les cellules de destination " deux choix : "Valider" ou "Annulé"
Si je fais annulé VBA s'excite : Erreur d'exécution 1004
"La méthode texttocolumns de la classe Range a échoué"

Pouvez-vous m'aider à transformer la colonne B de la feuille numéro 1 nommé "Programme"
Je souhaiterais sélectionner le numéro de la feuille et non par le nom si possible.

Merci à vous tous.
 

Dranreb

XLDnaute Barbatruc
Re : Conversion en nombre des valeurs textbox

Ah non, j'ai oublié de changer T(L, 2) en T(L, 1) puisque je ne récupère qu'une colonne dans cette Sub.
Mais vu que tout changement dans une TextBox est immédiatement écrit dans la cellule par la Sub Classe1_Tbx_Change, sert il encore à quelque chose ce bouton ? Heu… non c'est une question idiote: il refait l'opération inverse. Mais alors il fait double emploi avec la UserForm_Initialize, non ?
Est-ce qu'en fait vous ne voudriez pas un bouton pour actualiser la feuille d'après les contrôles ? Ce bouton là, on ne sait pas bien ce qu'il actualise. Sont-ce les contrôles ou les cellules ?
 
Dernière édition:

bonoboas

XLDnaute Occasionnel
Re : Conversion en nombre des valeurs textbox

En fait, le bouton actualisé me sert uniquement à me faire un contrôle, lorsque je change les valeurs directement sur les cellules.
Mais oui, en effet avec Userform_initialize, il devient obsolète. Je le supprimerais, je pense lorsque j'aurais fini.
Dranreb, je ne sais comment vous remercier.
 

bonoboas

XLDnaute Occasionnel
Re : Conversion en nombre des valeurs textbox

J'aime beaucoup votre façon de faire pour le private sub garnirRésultat() si la cellule est vide il continue sa recherche
J'aimerais du coup l'adapté sur les variables comme ça je pourrais aérer un peu en sautant des lignes
j'ai essayé d'adapté sur le pivate sub initialize que voici :

Code:
Private Sub UserForm_Initialize()
Dim T(), L As Long
T = Worksheets(1).[B1:C1].Resize(Worksheets(1).[B65536].End(xlUp).Row).Value
ReDim TxtB(2 To UBound(T))
For L = 2 To UBound(TxtB)
If Not IsEmpty(T(L, 1)) Then
   On Error Resume Next
   Set TxtB(L).TBx = Me(T(L, 1))
   If Err Then MsgBox "Il n'existe pas de Texbox nommée """ & T(L, 1) & """ dans " & Me.Name, _
      vbCritical, Me.Caption & " — UserForm_Initialize": End
   On Error GoTo 0
   TxtB(L).Numéro = L
   TxtB(L).Valeur = T(L, 2)
  End If: Next L
GarnirRésultat
End Sub

et pour le bouton actualiser :

Code:
Private Sub CommandButton8_Click()
Dim T(), L As Long
T = Worksheets(1).[C1].Resize(UBound(TxtB)).Value
For L = 2 To UBound(TxtB)
If Not IsEmpty(T(L, 1)) Then
   TxtB(L).Valeur = T(L, 1)
   End If: Next L
GarnirRésultat
End Sub

Est-ce que ça vous semble bon ?
Je pense que qu'il faudrait un Call sur le bouton actualisé pour refaire un contrôle qu'est que vous en pensez ?

Cordialement
 

Dranreb

XLDnaute Barbatruc
Re : Conversion en nombre des valeurs textbox

À priori ça me semble bon pour la UserForm_Initialize.
Pour la CommandButton8_Click il vaudrait peut être mieux tester If TxtB(L).Numéro = L.
À vérifier.
 
Dernière édition:

Discussions similaires