UserForm valeur cellule en texte au lieu de numérique
Schmilblick007
Messages postés6Date d'inscriptionjeudi 8 septembre 2005StatutMembreDernière intervention13 janvier 2010
-
23 août 2009 à 10:33
Schmilblick007
Messages postés6Date d'inscriptionjeudi 8 septembre 2005StatutMembreDernière intervention13 janvier 2010
-
24 août 2009 à 19:40
Bien le bonjour à tous,
Pour ne pas dépareiller de certains, je suis plus qu'un débutant en la matière et je tâtonne comme je peux dans les codes VBA d'Excel et Word.
Il s'agit ici d'un petit programme permettant la gestion de locataires.
Pour ce faire, lors de la création d'un nouveau locataire, je fais afficher un userform dans un "Sub".
Mon code commence par vérifier la présence d'onglets parasites avant de lancer le USF.
Mes soucis :
Conversion des nombres encodés dans le USF qui apparaissent en texte dans la feuille Excel
Voici les codes utilisés, et qui ne fonctionne pas
Private Sub TextLoyer_Change()
Range("B12").Select
ActiveCell.Value = TextLoyer
End Sub
Private Sub TextLoyer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextLoyer.Value = Format(TextLoyer.Value, "# ##0.00")
' TextLoyer.Value = FormatCurrency(TextLoyer.Value, "0,00 €")
End Sub
Et enfin, tant qu'on y est, pour une raison que j'ignore, à la sortie de mon USF, j'ai à chaque fois un message d'erreur.
Voici le code de mon "Sub" :
Sub AjoutFeuille_Click()
'
' AjoutFeuille Macro
' Ajout d'un feuille en fin de classeur
'
' Touche de raccourci du clavier: Ctrl+Maj+F
'
'
'
'
Dim i As Integer
For i = 1 To Workbooks("Locataires.xls").Sheets.Count
If Workbooks("Locataires.xls").Sheets(i).Name = "NL" Then
If ModeSilence = False Then
If MsgBox("L'onglet " & "NL" & " vas être supprimé." & Chr(10) & "Voulez-vous vraiment supprimer cet onglet ?", vbYesNo, "Supprimer ?") = vbNo Then
MsgBox "Action annulée.", vbInformation, "Annulé"
Exit For
Else
Application.DisplayAlerts = False
Workbooks("Locataires.xls").Sheets("NL").Delete
Application.DisplayAlerts = True
Exit For
End If
Else
Application.DisplayAlerts = False
Workbooks("Locataires.xls").Sheets("NL").Delete
Application.DisplayAlerts = True
Exit For
End If
End If
Next
SupprimerOnglet = True
'
'
' Ceci est un essais de correction format cellules texte en monétaire.. sans succès !
' Range("C12:D12,C17:D17,E12:F12,E18").Select
' Selection.NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
End Sub
Voici le code de sortie dans mon USF :
Private Sub Creer_Click()
Dim vNom1
UsfLoc.Hide
' Modif nom onglet feuille en cours
Range("A1").Select
vNom1 = ActiveCell.Value
ActiveSheet.Name = vNom1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
' retour à la feuille principale et mise à jour des données
Sheets("Liste locataires").Select
Application.Run "Locataires.XLS!EnleverProtecFeuille"
Range("a2").Select
Do
If ActiveCell.Value <> Null = True Then
End If
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "" Then Exit Do
Loop
ActiveCell.Value = vNom1
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=vNom1 + "!a1"
Application.CutCopyMode = False
With Selection.Font
.Name = "Courier New"
.Size = 11
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleSingle
.ColorIndex = 5
End With
Selection.Interior.ColorIndex = xlNone
ActiveCell.EntireRow.Select
Selection.EntireColumn.Hidden = False
ActiveCell.Offset(-1, 1).Range("a1").Select
Do
If ActiveCell.Value <> Empty = True Then
Selection.Copy
ActiveCell.Offset(1, 0).Range("a1").Select
ActiveSheet.Paste
ElseIf ActiveCell.Value = ("0") Then
Selection.Copy
ActiveCell.Offset(1, 0).Range("a1").Select
ActiveSheet.Paste
End If
ActiveCell.Offset(-1, 1).Range("a1").Select
If ActiveCell.Value = "" Then Exit Do
Loop
Dim vNom3
ActiveCell.Offset(0, -22).Range("a1").Select
vNom3 = ActiveCell.Value
ActiveCell.Offset(1, 1).Range("a1").Select
Do
If ActiveCell.Value <> Empty = True Then
Selection.Replace What:=vNom3, Replacement:=vNom1, LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
ElseIf ActiveCell.Value = ("0") Then
Selection.Replace What:=vNom3, Replacement:=vNom1, LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
ActiveCell.Offset(0, 1).Range("a1").Select
If ActiveCell.Value = "" Then Exit Do
' On masque les colonnes non usitées
Loop
Columns("c:d").Select
Selection.EntireColumn.Hidden = True
Columns("g:o").Select
Selection.EntireColumn.Hidden = True
' Tri locataires par nom
Columns("A:V").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlNoRestrictions
Range("A1").Select
' On stoppe le USF
Unload Me
End Sub
Le bonheur des uns ne fait pas toujours le bonheur des autres
A voir également:
UserForm valeur cellule en texte au lieu de numérique
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 24 août 2009 à 09:54
Salut
Pour ne pas dépareiller de certains, ça manque de précision
"Conversion des nombres encodés dans le USF" : Tu as encodé des nombres ?
Le code que tu nous proposes ne nous dit pas de quel type son les objets :
Est-ce que TextLoyer est une TextBox ?
Dans ce cas, l'utilisation officielle est TextLoyer.Text pour lire son contenu.
Qu'y a t-il dans cette TextBox ? quel genre de chiffre ?
Parce que convertir en Currency ... je n'aimerai pas payer tes loyers, si tu as besoin de ce format ...
Puisque tu colles un chiffre dans une cellule d'une feuille, pourquoi ne pas demander au format de la cellule ? --> Enregistre un e macro pendant que tu mets en forme à la main ta cellule et repique le code pour le mettre dans ta macro.
"j'ai à chaque fois un message d'erreur."
Lequel ?
Sur quelle ligne ?
PS : La prochaine fois que tu colles du code, utilise le formatage proposé dans les outils de la zone de saisie --> Cela rendra le code lisible (je n'ai pas eu le courage de le lire à cause de la perte de l'indentation)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Schmilblick007
Messages postés6Date d'inscriptionjeudi 8 septembre 2005StatutMembreDernière intervention13 janvier 2010 24 août 2009 à 18:50
Bonjour Jack,
Désolé, c'est la première fois que je poste ici donc,je ne connais pas encore les astuces
Il s'agit effectivement d'un textbox dans lequel j'introduis des chiffres.
J'ai mis en forme mes cellules, mais cette mise en forme est perdue à la réception des données du USF dès que je valide le USF (clic sur le bouton de validation).
La conversion en currency était un essai avorté (code non reconnu) pour corriger le résultat dans ma feuille excelt.. et je n'avais pas effacé la ligne .
Je vais corriger TextBox.Value par TextBox.Text comme tu le conseilles et je reviens pour donner le résultat..
Au fait, tu parles de formatage de la zone de saisie ..... je vais ré-essayer de mettre mon code correctement .... mais je ne l'ai pas sur cet ordi donc au prochain message
Merci de ton aide
Bragon
Le bonheur des uns ne fait pas toujours le bonheur des autres
Schmilblick007
Messages postés6Date d'inscriptionjeudi 8 septembre 2005StatutMembreDernière intervention13 janvier 2010 24 août 2009 à 19:23
Private Sub TextLoyer_Change()
Range("B12").Select
ActiveCell.Value = TextLoyer
End Sub
Private Sub TextLoyer_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextLoyer.Text = Format(TextLoyer.Text, "0.00")
End Sub
Voilà je crois plus lisible.
Pour rappel WINXP Pro / OFFICE 2003
Il s'agit d'un textbox dans lequel j'encode un chiffre (formatage avec deux décimales).
L'affichage me montre du "texte" dans ma feuille excel en lieu et place du formatage prévu dans la feuille (formatage existant - currency - écrasé).
J'ai essayé plusieurs solutions mais aucun résultat positif.
Merci de votre aide
Le bonheur des uns ne fait pas toujours le bonheur des autres
Schmilblick007
Messages postés6Date d'inscriptionjeudi 8 septembre 2005StatutMembreDernière intervention13 janvier 2010 24 août 2009 à 19:37
Pour ne pas mélanger, j'ai séparé ma deuxième question qui est un problème de sortie de mon "Sub"
Je remet ci-dessous le code complet:
Sub AjoutFeuille_Click()
'
' AjoutFeuille Macro
'
' Vérification de l'existence d'une feuille nommée NL dans le worbooks afin de l'éliminer
Dim i As Integer
For i = 1 To Workbooks("Locataires.xls").Sheets.Count
If Workbooks("Locataires.xls").Sheets(i).Name = "NL" Then
If ModeSilence = False Then
If MsgBox("L'onglet " & "NL" & " vas être supprimé." & Chr(10) & "Voulez-vous vraiment supprimer cet onglet ?", vbYesNo, "Supprimer ?") = vbNo Then
MsgBox "Action annulée.", vbInformation, "Annulé"
Exit For
Else
Application.DisplayAlerts = False
Workbooks("Locataires.xls").Sheets("NL").Delete
Application.DisplayAlerts = True
Exit For
End If
Else
Application.DisplayAlerts = False
Workbooks("Locataires.xls").Sheets("NL").Delete
Application.DisplayAlerts = True
Exit For
End If
End If
Next
SupprimerOnglet = True
' Ajout d'un feuille nommée NL et copie du formatage modèle dans la feuille en fin de classeur
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "NL"
ActiveSheet.Move After:=Sheets(Sheets.Count)
Sheets("Modele").Visible = True
Sheets("Modele").Select
ActiveSheet.Cells.Select
Selection.Copy
Sheets("Modele").Select
ActiveWindow.SelectedSheets.Visible = False
Sheets("NL").Select
ActiveSheet.Paste
ActiveWindow.Zoom = 75
ActiveWorkbook.Sheets("NL").Tab.ColorIndex = 40
' lancement de mon userform
Load UsfLoc
End Sub
Lorsque j'arrive en fin de macro, celle-ci bloque sur
"Load UsfLoc"
... mais toute ma macro c'est bien déroulée puisque rien ne suit cette commande...
Merci de votre aide
Bragon
Le bonheur des uns ne fait pas toujours le bonheur des autres
Vous n’avez pas trouvé la réponse que vous recherchez ?