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 !
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
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
Bonjour,
Quelles sont les erreurs ?
- Messages
- 2'417
- Excel
- 2019
- Inscrit
- 13/07/2017
- Emploi
- Formateur, animateur,tech.informatique
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 Subbonjour
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 ?