Formatage via UserForm

Un Varennois Québecois vous salue,

J'ai adapté pour mes besoins un formulaire concocté par Erwann1348. GGautier a solutionné ces problèmes.

Le UserForm(Mimosa) répond adéquatement lorsque j'alimente une nouvelle destination dans ma feuille Réservation d'excel,

les colonnes D-E-F formater en monétaire canadien français ("###0.00 $") affichent correctement les données des TextBox 4-5-6.

Cependant lorsque je modifie les données dans ce même UserForm, mes données des TextBox 4 à 6 sont converties en format texte et une erreur apparait dans ma feuille excel. Mon problème se situe au sein des instructions du CommandButton2_Click().

Les lignes 17 et 18 de ma feuille Réservation illustrent mon problème.

Quelqu'un pourrait m'indiquer comment corriger le tout.

'Correspond au programme du bouton MODIFIER

Private Sub CommandButton2_Click()

Dim Ligne As Long

Dim I As Integer

If MsgBox("Etes-vous certain de vouloir modifier cette réservation ?", vbYesNo, "Demande de confirmation") = vbYes Then

If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection

Ligne = Me.ComboBox1.ListIndex + 4

With Ws.Range("D4:F30") ' convertir en nombre

.NumberFormat = "###0.00 $"

.Value = .Value

End With

For I = 1 To 11

If Me.Controls("TextBox" & I).Visible = True Then

Ws.Cells(Ligne, I) = Me.Controls("TextBox" & I)

End If

Next I

End If 'fin de la condition

'Ws.Cells(Ligne, 12) = Me.ComboBox2

'Ws.Cells(Ligne, 13) = Me.ComboBox3

'Ws.Cells(Ligne, 14) = Me.ComboBox4

'Ws.Cells(Ligne, 15) = Me.TextBox11

'Ws.Cells(Ligne, 16) = Me.ComboBox5

'Ws.Cells(Ligne, 1) = Me.ComboBox6

Unload Me ' Vide et ferme l'Userform ( formulaire)

Mimosa.Show 'Affiche le formulaire

End Sub

J'attache mon fichier Camping_sam.xlsm

Merci de m'aider

Robert.

15camping-sam.xlsm (44.21 Ko)

Bonjour,

Des textbox ne contiennent que du texte, il faut donc convertir...

Un essai ...

   ...
   ...
   For I = 1 To 3
      If Me.Controls("TextBox" & I).Visible = True Then
         Ws.Cells(Ligne, I) = Me.Controls("TextBox" & I)
      End If
   Next I

   For I = 4 To 6
      If Me.Controls("TextBox" & I).Visible = True Then
         Ws.Cells(Ligne, I) = CDbl(Me.Controls("TextBox" & I))
      End If
   Next I

   For I = 7 To 11
      If Me.Controls("TextBox" & I).Visible = True Then
         Ws.Cells(Ligne, I) = Me.Controls("TextBox" & I)
      End If
   Next I
   ...
   ...

ric

Bonjour, à tous,

le problème c'est que le contenu de la textbox (4 à 6) est formaté "###0.00 $" dons contient du texte (" $")

il faudrait donc tronquer ce texte avant conversion.

par exemple

   For I = 4 To 6
      If Me.Controls("TextBox" & I).Visible = True Then
            L = Len(Me.Controls("TextBox" & I).Value)
            If L > 0 Then Ws.Cells(Ligne, I) = CSng(Left(Me.Controls("TextBox" & I), L - 2)) 
      End If
   Next I

A+

Merci Ric, cela fonctionne comme je le désirais.

Rechercher des sujets similaires à "formatage via userform"