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.
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 IA+
Merci Ric, cela fonctionne comme je le désirais.