Pb de validation dans formulaire

Bonjour,

Dans un frm de validation/consultation, je rencontre une erreur quand je veux afficher un enregistrement qui n'a pas de surface renseignée

Mon code :

Private Sub B_validation_Click()

Cells(ligne, 11) = Me.Nom_du_VT

Cells(ligne, 12) = Format(Me.Date_de_la_VT, "m/d/yyyy")

Cells(ligne, 13) = Me.Commentaires

Cells(ligne, 15) = CDbl(Me.Surface)

Si je n'impose pas le format CDbl, cela fonctionne mais je n'obtiens pas la bonne mise en forme.

Et si j'utilise :

Cells(ligne, 15) = Format(Me.Surface, "#,##0"" m²""")

je récupère une valeur "texte" qui ne permet pas les calculs avec la surface saisie.

Merci pour votre aide.

BH

Bonsoir,

sans fichier...

Avez vous essayez de faire un "mix" des deux :

Cells(ligne, 15) = Format(Me.Surface, "#,##0")

voir avec un point : Cells(ligne, 15) = Format(Me.Surface, "#.##0")

@ bientôt

LouReeD

Merci pour votre réponse, cela m'a permis d'avancer.

Je précise ma question :

Pourquoi lorsque dans le code on utilise CDbl (Me.XXXX) ou CDate (Me.YYYY),

Excel met le message d'erreur "Erreur d'exécution '13' / Incompatibilité de type "

si on veut valider le FRM sans saisir de valeur pour XXXX ou YYYY ?

Quelle alternative ?

BH

Bonjour,

si XXXX = vide ou YYYY = vide, alors que Cdbl et Cdate attendent une valeur, il y a erreur de type.

Donc il faut faire un test :

if Date_de_la_VT <>"" then Cells(ligne, 12) =CDate(Date_de_la_VT)

même test pour le CDbl

@ bientôt

LouReeD

Merci, voila qui est clair et précis.

BH

Bonjour,

peut-être est-ce clair mais cela répond à votre demande ?

@ bientôt

LouReeD

Grace à votre proposition, je résous mon problème en mettant des conditions.

N'étant pas expert mais toujours curieux de progresser, je ne comprends pas pourquoi l'utilisation de Cdate ou CDbl rend la saisie obligatoire.

Quand au code suivant (Cells(ligne, 15) = Format(Me.Surface, "#,##0") qui fonctionne, je ne comprends pas pourquoi celui ci Cells(ligne, 15) = Format(Me.Surface, "#,##0"" m²""") me donne une valeur "texte" et pas numérique.

Mais mes connaissances sont limitées et ne demandent qu'à s'améliorer.

BH

Bonsoir,

à savoir FORMAT donne "toujours" du texte !

C'est qu'Excel est plutôt souple pour les calculs avec du texte qui contient que des chiffres !

Toujours est-il que si vous ajouter m2 derrière un chiffre sur une cellule, alors cela sera forcément du texte !

Enfin je pense,

@ bientôt

LouReeD

Je me permets de ne pas être d'accord, quand on fait un format personnalisé, il y a bien m² ou km qui s'affiche.

Idem pour un n° de téléphone

Merci pour l'info FORMAT.

BH

je me permet à mon tour de ne pas être d'accord :

le format personnalisé sous excel est un format cellule faite à une valeur, exemple téléphone qui "transforme" visuellement

102030405 en 01 02 03 04 05 mais la valeur reste 102030405 (et oui c'est numérique donc pas de 0 au début)

mais avec Format VBA vous écrivez une valeur dans une cellule avec un format, donc la valeur de la cellule vaut :

01 espace 02 espace 03 espace 04 espace 05 et non pas 102030405.

Il faut donc mettre en place un format cellule par VBA mais alors ce n'est pas FORMAT qu'il faut utiliser :

Selection.NumberFormat = "0#"" ""##"" ""##"" ""##"" ""##" pour un téléphonne

@ bientôt

LouReeD

Bonsoir

A voir

pour le Cdbl if faut saisir une virgule

Cells(ligne, 15) = CDbl(Surface.Value)

et Val pour le point

Cells(ligne, 15) = Val(Surface.Value)

pour la Date

Cells(ligne, 12) = CDate(Date_de_la_VT.Value)

et le format de cellule

Cells(ligne, 15).NumberFormat = "#.##0"" m²"""

A+

Maurice

Bonsoir,

voilà ! Bien décoché ! Clair et concis ! Ca c'est la qualité d'un archer !

Merci pour ces explications simples, concises et claires.

@ bientôt

LouReeD

Rechercher des sujets similaires à "validation formulaire"