Valider une donnée VBA dans une cellule sans appuyer sur entrer

Bonjour,

Je vais essayer d'être le plus clair possible

J' ai un niveau moyen en VBA

J'ai créé un formulaire de saisie en VBA qui me permet de stocker des données dans un tableau Excel.

Une fois ces données stockées j'ai besoin de les calculer via une formule.

Mon problème, les données ne sont pas validés, elles sont bien présentes dans les cellules mais si je veux que ma formule se calcule, je suis obligé de valider manuellement chaque donnée rentrée par le formulaire en appuyant sur la cellule et sur entrer.

Existe-t-il une solution en VBA afin que les données se valident automatiquement dans chaque cellule ?

Merci de votre aide.

Bonjour,

Sans fichier représentatif difficile de se positionner mais, si manuellement vous sélectionnez votre colonne Données > Convertir > Terminer vous résous la problématique alors la méthode a utiliser se trouve ici : https://docs.microsoft.com/fr-fr/office/vba/api/excel.range.texttocolumns

Ou sinon l'intégration depuis votre formulaire se fait directement en valeur numérique en multipliant la valeur ou en castant la valeur dans le bon type. Mais on revient à la réflexion initiale.

Cdlt,

Bonjour,

Vous devriez poster le code en question...

Etes-vous en calcul manuel ? Pouvez-vous essayer de placer cette ligne après le report de vos données :

application.calculate 'ou worksheets("nomfeuille").calculate

Cdlt,

Edit : Salut Ergotamine !

Bonjour,

Merci pour vos réponses.

Ergotamine : données > Convertir > terminer fonctionne parfaitement pour moi. Peux-tu m'expliquer la méthode Range.TextToColumns s'il te plaît .

3GB : Je suis bien en calcule automatique

Je vous transmets le code en question :

Private Sub btnFermer_Click()
    Application.Calculate
    Unload Me
End Sub

Private Sub btnValider_Click()

    Dim Numligne As Long
    Dim Reponse As Integer

    Reponse = MsgBox("Désirez-vous sauvegarder les modifications ?", _
                vbQuestion + vbYesNo + vbDefaultButton1, "CONFIRMATION MODIFICATION")

    Numligne = Range("Numeroligne")

    If Reponse = vbYes Then

         Cells(Numligne, 14) = Me.txtCommande
         Cells(Numligne, 15) = Me.txtDateC
         Cells(Numligne, 16) = Me.txtReception
         Cells(Numligne, 17) = Me.txtSAP
         Cells(Numligne, 18) = Me.txtMontant

    ElseIf Reponse = vbNo Then
        Exit Sub
        Unload Me
    End If

End Sub

Private Sub UserForm_Initialize()

    Dim Numligne As Long

    Numligne = Range("Numeroligne")

    Me.txtCommande = Cells(Numligne, 14)
    Me.txtDateC = Cells(Numligne, 15)
    Me.txtReception = Cells(Numligne, 16)
    Me.txtSAP = Cells(Numligne, 17)
    Me.txtMontant = Cells(Numligne, 18)

End Sub

L'idée c'est que txtdatec soit calculé en fonction de la date du jour pour connaitre son état.

=SI(txtDatec =Datedujour;"Pas de date de reception";SI(txtDatec>Datedujour;"🔔 En atente de reception";SI(txtDatec=Datedujour;"📦 Reception aujourdhui";SI(Datedujour>txtDatec;"✔️Réceptioner";"Pas de commande"))))

Merci de votre aide et de votre temps

Bonjour,

Pour la méthode TextToColumns un lien d'aide vers le site officiel de microsoft est présent dans mon post initial. Cette méthode permet, entre autre, dans votre cas, de transformer un range interprété comme du texte (ou valeur non validée) en valeur numérique, date, etc ... Afin de pouvoir réaliser les calculs.

En alternative, comme les calculs portent, de ce que j'ai compris, sur votre colonne 15, essayez :

Cells(Numligne, 15) = CDate(Me.txtDateC)

Afin de caster votre date "texte" en date type date.

Cdlt,

Bonjour,

J'ai déjà essayer de caster la date "texte" en date type date.

Cela ne résout malheureusement pas le problème. la donnée ne ce valide pas ... et j'ai le message d'erreur "incompatibilité de type"

J'ai bien regarder votre lien mais je ne comprend pas comment ajouter la méthode TextToColumns dans mon fichier...

Pouvez-vous me donner un exemple ?

Bonjour,

Je n'ai pas de soucis avec le fichier sur lequel j'ai testé la méthode de cast.

Cependant pour la méthode TextToColumns, pour des dates en colonne F :

Columns(15).TextToColumns Destination:=[O1], FieldInfo:=Array(1, 4)

Pour le FieldInfo : https://docs.microsoft.com/fr-fr/office/vba/api/excel.xlcolumndatatype

A adapter à votre fichier comme. nous ne l'avons toujours pas.

Bon courage

Cdlt,

Bonjour,

Merci cela à parfaitement fonctionnait

Bonne journée

Rechercher des sujets similaires à "valider donnee vba appuyer entrer"