Formule somme non actualisé via enregistrement UserForm

Bonjour a tous,

J'ai un petit problème d'actualisation de formule sous Excel.

Je vais essayer de m'expliquer en restant compréhensible

J'ai mis en place un tableau d'une trentaine de colonnes.

Mes utilisateur vont insérer de nouvelles lignes et/ou modifier celle déjà existantes via une Userform comprenant des ComboBox et TextBox

Jusque la tout se passe correctement.

Mes utilisateurs arrivent a créer des nouvelles lignes et à modifier les lignes déjà existantes dans mon tableau

J'ai ajouter sur mes colonnes comprenant mes montants des calculs dans ma fiche Excel, via les formules SOMME et SOMME.SI

Le problème est que mes formule ne s'actualisent pas.. J'ai mes données dans ma feuille Excel mais les formules ignorent complément les champs modifiés et/ou créés

Je dois rentrer dans mes cellules et en sortir pour que la formule s'actualise et prenne en compte mon montant...

Mes cellules sont au format "Nombre" et je les alimente via des TextBox avec le code suivant

MONT_REC_COMP.Text = Range("W" & Num).Value

Num étant ma variable de numéro de ligne

Auriez-vous des idées pour résoudre ma problématique ?

Est-ce une erreur de format ?

merci a vous

Bonjour,

Ne serais-tu pas en calcul manuel ?

Bonjour,

Effectivement MFerrant bonne remarque.

Je viens de vérifier ... mode de calcul en Automatique

Bonjour a vous,

J'ai bien avancé dans la compréhension de mon problème.

Je pense avoir a faire, au final, un une problématique de conversion

J'ai le petit icone blanc avec la flèche verte dans mes cellule de montant m'indiquant un problème de format

Donc lorsque j'enregistre mon formulaire, je copie la donnée présente dans ma TextBox (qui est au format Texte) dans ma cellule (qui elle est au formate entier/numérique) d'où la non prise en compte dans mes formules de SOMME

Je dois donc convertir le contenu de mes Textbox en numérique avant de les enregistre dans ma cellule, chose que je maitrise pas...

Après divers recherche, j'ai trouvé la méthode de conversion CDbl

Je test de convertir directement lorsque je copie le contenu de ma TextBox.. mais j'ai une erreur sur la méthode global Range

J'utilise le code suivant :

Range("W" & Num).Value = CDbl(MONT_REC_COMP)

pouvez-vous m'aider et m'indique ce que je fais pas correctement??

merci a vous

Ce que tu dis reste abstrait tant qu'on ne voit pas ton fichier...

MFerrand a écrit :

Ce que tu dis reste abstrait tant qu'on ne voit pas ton fichier...

J'image, Fernand, que la réponse va être: "oui mais les données sont confidentielles"

P.

Salut Patrick !

Dans ce cas la solution ne peut être qu'aussi confidentielle !

On peut résumer : si le recalcul est automatique, cela ne vient pas ou plus de là.

Cellule en format Texte : cela peut être vérifié...

Si un nombre est du texte dans une TextBox, la conversion est automatique par Excel dans la plupart des cas : pour les nombres entiers évidemment, pour les décimaux à virgule aussi, on se retrouve dans les conditions de saisie où Excel reconnaît spontanément des nombres.

Si le nombre est doté d'un format spécifique dans la TextBox cela peut poser problème...

Mais de toute évidence on voit immédiatement si la valeur affectée est un nombre ou du texte (ne serait-ce que selon son cadrage à droite ou à gauche dans la cellule).

Bonne journée.

Patrick a raison, je ne peux pas donner certaines données. non pas les montant mais plutôt les clients

J'ai trouvé et solutionné ma problématique.

Cela venait bien d'un problème de format de ma TextBox vers un format numérique de ma cellule

Je vous donne la solution trouvée, cela peut intéressé surement des gens.

n'étant pas dev de formation, j'espère que le code n'est pas trop . . . "sale", en tout cas la solution est viable

'Ma variable pour mon montant, oublié d'utiliser un Double je peux aller sur des montant de +10M€

Dim MontRecComp As Double

'Je vais convertir le contenu de ma TextBox avec le fonction val() et l'affecte à ma variable

MontRecComp = Val(MONT_REC_COMP)

'Il me reste plus qu'a "copier" la valeur de ma variable dans la cellule qui va bien

' Ayant une recherche de ma dernière ligne vide, la variable Num est le numéro de la dernière ligne vide

Range("W" & Num).Value = MontRecComp

En tout cas, merci à vous deux, vos remarques mon orientées vers la solution !!!!

Bonjour,

Ta solution ne peut servir à personne si tu ne précises pas quel était le format du "nombre" dans la TextBox !

CDble présuppose que tu attends un nombre décimal (sinon inutile).

Utiliser Val présuppose que le séparateur décimal utilisé n'est pas la virgule (Val élimine les espaces et ne reconnaît que le point comme séparateur décimal, il serait donc bloqué par une virgule.

Pour un code "propre"... en tout cas réduisant les risques au minimum, 3 conseils dans tes deux lignes de code :

1) Toujours qualifier un objet Range [ne jamais laisser Range, Cells, Rows, etc. sans référence à la feuille à laquelle appartient la plage, et si répétition de référence à la feuille, la mettre systématiquement sous instruction With... End With].

Cela fiabilise le code et accélère son exécution.

2) Tu peux te dispenser de préciser la propriété .Value pour une plage lorsqu'elle ne comporte qu'une seule cellule ; c'est la propriété par défaut, et si .Value demeure nécessaire dans certaines expressions, dans ce cas précis il n'y a pas lieu de craindre une quelconque surprise.

3) A l'inverse, je conseillerais de préciser toujours la propriété .Value relativement à un contrôle, car là il y a parfois de petites surprises et les raisons n'en sont pas clairement définissables.

Cordialement.

Rechercher des sujets similaires à "formule somme actualise via enregistrement userform"