Comment codé les txtbox pour faire un format numérique

Bonjour à tous je rencontre un petit soucis dans mes codes VBA

J'ai crée des formulaires de saisies ou il y à des TXTBOX

Le problème est que lorsque je rentre une valeurs dans celle ci. Que j'appuie sur mon "bouton ajout"

Les valeurs viennent effacer les formules placé manuellement dans le tableaux. Plus précisément sur la ligne qui vient d’être ajouté. Alors que normalement les formules sont automatiquement répété .

Du coup mes calculs ne se font pas.

J'ai réussi à trouver une partie du problème.

Les txtbox rentre les valeurs sous format Texte et non sous format numérique.

Ma question est la suivante : Comment codé en vba , pour éviter ce soucis et que les valeurs s'incruste dans la cellule prévu ? Sans enlever les formules

J'ai parcouru le forum à la recherche de se soucis. J'ai trouvé des sujet qui ressemblé au mien mais après avoir essayé . Cela ne résolve pas mon soucis.

Merci d'avance à ceux qui liront ce message et qui m'aideront =)

Cordialement

Ma question est la suivante : Comment coder en vba , pour éviter ce souci et que les valeurs s'incrustent dans la cellule prévue ? Sans enlever les formules

désolé mais, tu devras choisir : pour la cellule, soit une formule soit une valeur mise à jour via ta textbox. Combiner les 2 dans la même cellule n'est pas possible.

ce serait bien de mettre un fichier exemple qui illustre ton problème.

Bonsoir,

Tu fais état de deux choses totalement différentes :

D'une part que les valeurs figurant dans des TextBox sont du texte ! C'est effectivement toujours du texte, quelle qu'en soit l'apparence. Cela peut éventuellement poser problème pour certains formats, tels dates ou formats monétaires... Mais dans le cas général, si un nombre dans une TextBox est une valeur texte, lors de son affectation à une cellule Excel opère automatiquement la conversion et tu auras un nombre dans la cellule.

Si tu rencontres un problème à ce niveau, il convient de préciser lequel et dans quel contexte.

D'autre part, tu indiques que si tu affectes une valeur à une cellule qui contenait jusque là une formule, la formule disparaît ! Quoi de plus normal ! Tu remplaces un contenu par un autre, le nouveau remplace l'ancien.

Si tu veux conserver les formules, tu ne mets rien d'autre dans les cellules concernées.

S'il y a problème, il n'est pas là, il est dans ta méthode d'affectation qui est inadéquate à l'objectf que tu vises... Il convient de fournir les détails si tu veux quelque réponse utile.

Cordialement.

Tout d'abord, merci pour l’intérêt porté à mon message

J'ai travaillé de mon coté pour essaye de voir comment je pouvais contourner le problème.

J'aimerais que tout se calcule automatiquement une fois les valeurs rentré dans le Formulaire.

La finalité est que ce tableau "Banque de donnée" sera utilisé pour faire des tableau croisés dynamique.

Du coup j'ai cherché de mon coté et j'ai essayé d’être le plus clair possible de ce que je souhaite avoir. Et comprendre par la même occasion si vous y arriver.

J'ai noté plein d'annotation sur le bouton enregistré de mon formulaire ajout

D 'Après vos message si j'ai bien compris il faut d'abord que les valeur misent dans les txtbox soir formatés dans le format voulu.

(Monétaire et pourcentage)

Dans un deuxième temps, programmé les formules de calculs entre (txtbox) ou (cellule)

Pour que tous soit automatisé

Voila j'espere avoir été plus clair, merci pour votre considération les amis

Cordialement

15classeur1.xlsm (48.16 Ko)

J'ai encore réduit et simplifié la tache de travail

Je cherche =)

J'ai réussi à changer le format d'une txtbox en format monétaire mais maintenant j'aimerais créer une boucle qui permette de répété le processus à chaque nouveaux ajouts

J'ai crée une boucle mais je rencontre un soucis

Voici le code ci dessous

Merci d'avance

'*****************************************************

'Procédure permettant d'ajouter un nouvel enregistrement

'dans la base de donnée

'*****************************************************

Private Sub BtnEnregistrer_Click()

Sheets("Banque de Donnée").Activate

Range("B2").Select

Selection.End(xlDown).Select 'On se positionne sur la derniére ligne non vide

Selection.Offset(1, 0).Select 'On se décale d'une ligne vers le bas

ActiveCell = txtDate.Value

ActiveCell.Offset(0, 1).Value = txtNomDuChantier

ActiveCell.Offset(0, 2).Value = txtNomDuClient

ActiveCell.Offset(0, 3).Value = TxtNomDuSousTraitant

ActiveCell.Offset(0, 4).Value = TxtNombreDeDevisEffectué

ActiveCell.Offset(0, 5).Value = txtNdevisRetenu

ActiveCell.Offset(0, 6).Value = TxtMontantDevis

ActiveCell.Offset(0, 7).Value = TxtDateDePaiementPrévisionnel

ActiveCell.Offset(0, 8 ).Value = TxtDateDePaiementPrévisionnelDepense

ActiveCell.Offset(0, 9).Value = TxtDateDePaiementPrévisionnelRecette

ActiveCell.Offset(0, 10).Value = TxtDemarrageDuChantierDepense

ActiveCell.Offset(0, 11).Value = TxtDemarrageDuChantierRecette

ActiveCell.Offset(0, 12).Value = TxtDateDeFacturationAcompte

ActiveCell.Offset(0, 13).Value = CboPourcentageAcompte

ActiveCell.Offset(0, 17).Value = TxtDepenseFournitureFonctionnement

ActiveCell.Offset(0, 18).Value = TxtDateFactureChantier

ActiveCell.Offset(0, 19).Value = CboTypeDeFactureChantier

ActiveCell.Offset(0, 21).Value = CboTypeDeFactureSousTraitant

ActiveCell.Offset(0, 26).Value = TxtDateDePaiementSousTraitant

'*********************************************************************************

' TxtBox convertie en Valeur Numérique + Boucle

'*********************************************************************************

Dim MaxBoucle As Integer

Dim MontantDevis As Currency

'*********************************************************************************

'Initialisation de la boucle pour les TXTBox Convertit en Valeur Numérique

'*********************************************************************************

MaxBoucle = Range("H3") ' En H3 : Une Limite de la Boucle est définie

For i = 1 To 999999999 'Boucle Prévues : 999999999

If i > MaxBoucle Then ' Si H3 est vide ou contient un nombre < 999999999, diminution du nb de boucles

Exit For 'Si condition vraie, on quitte la boucle For

End If

Next

' Montant Devis Conversion de texte à Numérique '

MontantDevis = Val(CStr(TxtMontantDevis.Value))

Cells(i, 8 ) = TxtMontantDevis.Value

'Format standart monétaire euro, Formatage automatique c'est mieux

Cells(i, 8 ).NumberFormat = "_-* #,##0.00 [$€-40C]_-;-* #,##0.00 [$€-40C]_-;_-* ""-""?? [$€-40C]_-;_-@_-"

'***********************************************************

'Enregistrement du Matricule'

'on test si l'enregistrement est le premier de la table

'***********************************************************

If ActiveCell.Offset(-1, 1).Value = "Matricule" Then

ActiveCell.Offset(0, -1).Value = 1 'On affecte le matricule n°1

Else

'on incrémente le numéro de matricule

ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(-1, -1) + 1

'Permet de masquer le formulaire'

Unload Me

End If

MsgBox " Votre Nouveau Chantier a bien été ajouté à la base de donnée ", vbOKOnly + vbInformation, "CONFIRMATION"

End Sub

21classeur1.xlsm (59.04 Ko)

Bonjour,

Quelles sont les erreurs ?

Bonjour

Tu peux voir ou tester pour si le message box est vide pour suppression, alors ne rien faire (exit sub)

aussi non çà bug

j'ai testé c'est ok comme çà j'ai ajouté if Supprimeligne est vide etc..:

Dim SupprimeLigne As String

'Affectation des variables
SupprimeLigne = InputBox("Veuillez Saisir le Numéro de Matricule du Chantier à Supprimer", "SUPRESSION")
If SupprimeLigne = "" Then
Exit Sub
Else
'On se positionne sur la feuille de la source de données
With ThisWorkbook.Sheets("Banque de Donnée")

'Compte le nombre de ligne de la colonne A et tu remontes de 1 ligne à chaque fois
For i = .Range("A" & .Rows.Count).End(xlUp).Row To 3 Step -1

 'Si correspondance entre le n° de matricule et la ligne

 If .Range("A" & i).Value = SupprimeLigne Then

 'On supprime la ligne Entiére'

 Rows(i).Delete

End If

Next i

End With
End If
End Sub

bonjour

voila pour les date et valeur

ActiveCell.Offset(0, 17).Value = CDbl(TxtDepenseFournitureFonctionnement)

ActiveCell.Offset(0, 18).Value = CDate(TxtDateFactureChantier)

A+

Maurice

Merci MAurice c'est exactement sa, j'était entre un de me compliqué la vie =)

Merci à toi aussi André pour la correction du module supp sa fct

Petite derniére question , comment faire la meme chose pour ma TxtBox Pourcentage Acompte ?

Rechercher des sujets similaires à "comment code txtbox format numerique"