Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Données dans feuille de calcul non conformes à la saisie du formulaire adéquat......???

9 réponses
Avatar
gtoukc
Bonjour à tous
Pourquoi mais pourquoi cela ????
Je suis désespéré ( en fait pas tant )

http://www.cjoint.com/15ma/ECuktmVmIPR.htm

Lorsque je saisie 12/3 dans le formulaire, 12/3 s'affiche au lieu
de 12/03/2015, il en va de même pour les colonnes en €uro...
Le plus marrant c'est que le fait de cliquer sur la cellule concernée et
de la valider, tout rentre dans l'ordre ce qui n' a plus aucun intérêt.
Merci pour votre sagacité
cordialement
Fr@ncis

9 réponses

Avatar
Jacquouille
Bonjour
Je viens de regarder.
La colonne A de ta feuille est formatée en dd/mm/yyyy
Mais, je crois que si tu entres une valeur via ton formulaire, c'est lui qui
force le formatage de ta cellule de destination.
Pour info, si je clique et reclique sur A ou A2, il reste en format 20/3 et
non 20/03/2015.

Juste une question :
Pourquoi passer par un formulaire, alors que le tableau est sous les yeux?
Encoder une valeur dans le formulaire ou dans la base, pour moi, c'est
kif-kif.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"gtoukc" a écrit dans le message de groupe de discussion :
550be57c$0$3371$

Bonjour à tous
Pourquoi mais pourquoi cela ????
Je suis désespéré ( en fait pas tant )

http://www.cjoint.com/15ma/ECuktmVmIPR.htm

Lorsque je saisie 12/3 dans le formulaire, 12/3 s'affiche au lieu
de 12/03/2015, il en va de même pour les colonnes en €uro...
Le plus marrant c'est que le fait de cliquer sur la cellule concernée et
de la valider, tout rentre dans l'ordre ce qui n' a plus aucun intérêt.
Merci pour votre sagacité
cordialement



---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
Avatar
DanielCo
Bonjour,
Les valeurs des textboxes sont de type string. Il faut donc les
transposer en numérique ou date; par exemple :
If r = 1 Then Feuil1.Cells(derligne, r) = DateSerial(Year(Date),
Split(Ctrl.Value, "/")(1), Split(Ctrl.Value, "/")(0))
en prenant l'année en cours puisqu'elle n'est pas précisée.
Cordialement.
Daniel


Bonjour
Je viens de regarder.
La colonne A de ta feuille est formatée en dd/mm/yyyy
Mais, je crois que si tu entres une valeur via ton formulaire, c'est lui qui
force le formatage de ta cellule de destination.
Pour info, si je clique et reclique sur A ou A2, il reste en format 20/3 et
non 20/03/2015.

Juste une question :
Pourquoi passer par un formulaire, alors que le tableau est sous les yeux?
Encoder une valeur dans le formulaire ou dans la base, pour moi, c'est
kif-kif.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"gtoukc" a écrit dans le message de groupe de discussion :
550be57c$0$3371$

Bonjour à tous
Pourquoi mais pourquoi cela ????
Je suis désespéré ( en fait pas tant )

http://www.cjoint.com/15ma/ECuktmVmIPR.htm

Lorsque je saisie 12/3 dans le formulaire, 12/3 s'affiche au lieu
de 12/03/2015, il en va de même pour les colonnes en ¤uro...
Le plus marrant c'est que le fait de cliquer sur la cellule concernée et
de la valider, tout rentre dans l'ordre ce qui n' a plus aucun intérêt.
Merci pour votre sagacité
cordialement



---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
MichD
Bonjour,

Pour ceux qui débutent avec les formulaires, il y a ces explications pour
débutant à cette adresse :

'Si tu veux télécharger des fichiers exemples, tu dois t'inscrire. Ce site
en vaut la peine...tu as
beaucoup d'informations sur Excel ainsi que des fichiers exemples...

http://www.excelabo.net/search/node/formulaire

Si tu as besoin d'explications supplémentaires, reviens ici...
Avatar
MichD
Ta procédure dans ton formulaire pourrait ressembler à ceci :

Tu devrais voir le tutoriel suggéré, car même cette présentation
a ces lacunes...


'--------------------------------------------------
Private Sub CommandButton1_Click()

Dim Ctrl As Control
Dim r As Integer
Dim t As Integer
Dim derligne As Integer

On Error Resume Next
With Worksheets("Feuil1")
derligne = .Range("A65536").End(xlUp).Row + 1
For Each Ctrl In UserForm1.Controls
If Ctrl <> "" Then
r = Val(Ctrl.Tag)
Select Case Ctrl.Name
Case Is = "TextBox1"
Feuil1.Cells(derligne, r) = CDate(Ctrl)
Case Is = "TextBox2"
Feuil1.Cells(derligne, r) = Ctrl.Value

Case Is = "TextBox3", "TextBox4"
Feuil1.Cells(derligne, r) = Val(Application.Substitute(Ctrl,
",", "."))
End Select
End If
Next
End With
TextBox1 = ""
End
End Sub
'--------------------------------------------------




"MichD" a écrit dans le message de groupe de discussion :
megr17$u36$

Bonjour,

Pour ceux qui débutent avec les formulaires, il y a ces explications pour
débutant à cette adresse :

'Si tu veux télécharger des fichiers exemples, tu dois t'inscrire. Ce site
en vaut la peine...tu as
beaucoup d'informations sur Excel ainsi que des fichiers exemples...

http://www.excelabo.net/search/node/formulaire

Si tu as besoin d'explications supplémentaires, reviens ici...
Avatar
gtoukc
DanielCo a écrit :
Bonjour,
Les valeurs des textboxes sont de type string. Il faut donc les
transposer en numérique ou date; par exemple :
If r = 1 Then Feuil1.Cells(derligne, r) = DateSerial(Year(Date),
Split(Ctrl.Value, "/")(1), Split(Ctrl.Value, "/")(0))
en prenant l'année en cours puisqu'elle n'est pas précisée.
Cordialement.
Daniel


Bonjour
Je viens de regarder.
La colonne A de ta feuille est formatée en dd/mm/yyyy
Mais, je crois que si tu entres une valeur via ton formulaire, c'est
lui qui force le formatage de ta cellule de destination.
Pour info, si je clique et reclique sur A ou A2, il reste en format
20/3 et non 20/03/2015.





Si tu as patience, essaies de double-cliquer sur une des cellules puis
valides par entrée, et tout rentre dans l'ordre

Juste une question :
Pourquoi passer par un formulaire, alors que le tableau est sous les
yeux?
Encoder une valeur dans le formulaire ou dans la base, pour moi, c'est
kif-kif.


Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"gtoukc" a écrit dans le message de groupe de discussion :
550be57c$0$3371$

Bonjour à tous
Pourquoi mais pourquoi cela ????
Je suis désespéré ( en fait pas tant )

http://www.cjoint.com/15ma/ECuktmVmIPR.htm

Lorsque je saisie 12/3 dans le formulaire, 12/3 s'affiche au lieu
de 12/03/2015, il en va de même pour les colonnes en ¤uro...
Le plus marrant c'est que le fait de cliquer sur la cellule concernée et
de la valider, tout rentre dans l'ordre ce qui n' a plus aucun intérêt.
Merci pour votre sagacité
cordialement



---
L'absence de virus dans ce courrier électronique a été vérifiée par le
logiciel antivirus Avast.
http://www.avast.com
Avatar
gtoukc
Merci Michel
J'ai transposé cette formule dans ma procédure et j'obtiens le résultat
recherché..
Bon Week-End à tous




MichD a écrit :


Ta procédure dans ton formulaire pourrait ressembler à ceci :

Tu devrais voir le tutoriel suggéré, car même cette présentation
a ces lacunes...


'--------------------------------------------------
Private Sub CommandButton1_Click()

Dim Ctrl As Control
Dim r As Integer
Dim t As Integer
Dim derligne As Integer

On Error Resume Next
With Worksheets("Feuil1")
derligne = .Range("A65536").End(xlUp).Row + 1
For Each Ctrl In UserForm1.Controls
If Ctrl <> "" Then
r = Val(Ctrl.Tag)
Select Case Ctrl.Name
Case Is = "TextBox1"
Feuil1.Cells(derligne, r) = CDate(Ctrl)
Case Is = "TextBox2"
Feuil1.Cells(derligne, r) = Ctrl.Value

Case Is = "TextBox3", "TextBox4"
Feuil1.Cells(derligne, r) =
Val(Application.Substitute(Ctrl, ",", "."))
End Select
End If
Next
End With
TextBox1 = ""
End
End Sub
'--------------------------------------------------




"MichD" a écrit dans le message de groupe de discussion :
megr17$u36$

Bonjour,

Pour ceux qui débutent avec les formulaires, il y a ces explications pour
débutant à cette adresse :

'Si tu veux télécharger des fichiers exemples, tu dois t'inscrire. Ce site
en vaut la peine...tu as
beaucoup d'informations sur Excel ainsi que des fichiers exemples...

http://www.excelabo.net/search/node/formulaire

Si tu as besoin d'explications supplémentaires, reviens ici...
Avatar
MichD
Je me permets :

'-------------------------
Si tu as patience, essaies de double-cliquer sur une des cellules puis
valides par entrée, et tout rentre dans l'ordre
'-------------------------

Tu dois réaliser lorsque tu entres des données dans un formulaire, peu
importe leur contenu (numérique, date, texte), tout ceci est perçu par Excel
comme du TEXTE. Un TEXTBOX retourne toujours du TEXTE.

En supposant que tu as écrit une date dans un textbox, pour passer cette
date à une cellule, tu dois utiliser la fonction de conversion CDATE() et si
tu veux appliquer un format de date particulier à cette cellule, tu utilises
"Numberformat"

Exemple :
With Worksheets("Feuil1")
With .Range("A1")
.Numberformat = "DD/MM/YY"
.Value = Cdate(TextBox1")
End With
End With

La difficulté est de t'assurer que l'usager emploie le format que tu as
retenu pour les dates. Si la date saisie n'a pas le format désiré, la
procédure va se planter!

Quand tu utilises le séparateur décimal pour saisir des valeurs numériques,
souvent le séparateur décimal pose problème. Que se passe-t-il si l'usager
utilise la virgule et toi le point lors de la saisie dans le textbox?

La fonction "Val()" fonctionne correctement seulement si le point est
utilisé.

La fonction de conversion CDBL() utilise le séparateur décimal défini dans
le panneau de configuration de Windows.

Pour gérer ces éléments, différentes approches sont possibles, c'est ce que
tu dois apprendre à gérer...
Avatar
MichD
Bonjour,


'---------------------------------------------
Juste une question :
Pourquoi passer par un formulaire, alors que le tableau est sous les yeux?
Encoder une valeur dans le formulaire ou dans la base, pour moi, c'est
kif-kif.
'---------------------------------------------

Tant est aussi longtemps que tu es le seul utilisateur du fichier, tu peux
toujours les données directement dans la feuille. Si tu fais des erreurs de
saisie ou efface des données, cela demeure ton problème!

Lorsque tu as plusieurs usagers qui interviennent dans le même classeur pour
y saisir des données pour une entreprise, la programmation de bons
formulaires régule la saisie et minimise les erreurs. De plus, le fait que
l'usager n'a pas accès directement aux données de la feuille de calcul
protège les données de manipulations inopportunes.

En général, le formulaire facilite la saisie de données... Il n'y a pas de
formules dans le formulaire dans l'interface.
Avatar
Jacquouille
OK, merci Denis (et aussi Daniel) pour ces bonnes explications.
Comme tu as pu le constater dans ma réponse, je pressentais que le
formulaire "imposait" sa loi sur le format de la feuille, mais JAMAIS, au
grand JAMAIS, je n'aurais su dire pourquoi.
Je m'en vais de ce pas dire bonjour à notre copine Misange sur
Excelabo.net. -))
Encore merci et bon WE.

Jacquouille

" Le vin est au repas ce que le parfum est à la femme."
"MichD" a écrit dans le message de groupe de discussion :
megtko$75o$

Je me permets :

'-------------------------
Si tu as patience, essaies de double-cliquer sur une des cellules puis
valides par entrée, et tout rentre dans l'ordre
'-------------------------

Tu dois réaliser lorsque tu entres des données dans un formulaire, peu
importe leur contenu (numérique, date, texte), tout ceci est perçu par Excel
comme du TEXTE. Un TEXTBOX retourne toujours du TEXTE.

En supposant que tu as écrit une date dans un textbox, pour passer cette
date à une cellule, tu dois utiliser la fonction de conversion CDATE() et si
tu veux appliquer un format de date particulier à cette cellule, tu utilises
"Numberformat"

Exemple :
With Worksheets("Feuil1")
With .Range("A1")
.Numberformat = "DD/MM/YY"
.Value = Cdate(TextBox1")
End With
End With

La difficulté est de t'assurer que l'usager emploie le format que tu as
retenu pour les dates. Si la date saisie n'a pas le format désiré, la
procédure va se planter!

Quand tu utilises le séparateur décimal pour saisir des valeurs numériques,
souvent le séparateur décimal pose problème. Que se passe-t-il si l'usager
utilise la virgule et toi le point lors de la saisie dans le textbox?

La fonction "Val()" fonctionne correctement seulement si le point est
utilisé.

La fonction de conversion CDBL() utilise le séparateur décimal défini dans
le panneau de configuration de Windows.

Pour gérer ces éléments, différentes approches sont possibles, c'est ce que
tu dois apprendre à gérer...


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com