Problème de calcul

Christ69

XLDnaute Nouveau
Bonjour à tous et à toutes,
Je vous joins en pièce jointe un exemple de mon souci. En effet je voudrais que lorsque je change la valeur d'un textbox le textbox résultat se modifie instantanément.

Dans mon exemple minimaliste, si je rentre la valeur1 dans le textbox année 1-ligne 1 ,le textbox résultat doit me donner 1.
Si je rentre la valeur1 dans année1-ligne 1et la valeur 3 dans année 2ligne 1 le textbox résultat doit me donner 3

J'ai une centaine de textbox

Merci de votre aide
 

Pièces jointes

  • Classeur1.xlsm
    17.3 KB · Affichages: 42
  • Classeur1.xlsm
    17.3 KB · Affichages: 40
  • Classeur1.xlsm
    17.3 KB · Affichages: 43

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

Bonsoir Christ69,

Ci-joint ton fichier avec les macros complétées.

J'ai créé une fonction Total dans le module Feuil1 qui calcule la somme des cases lignes par ligne. Afin de repérer les lignes, j'ai ajouté dans la propriété Tag des cases Résultats le n° de ligne correspondant. Ex : dans TextBox1,TextBox4,TextBox6, Tag = 1, dans TextBox3TextBox5,TextBox7, Tag = 2, et ainsi de suite pour les autres contrôles. Chaque case des colonnes Années appelle la fonction ainsi créée qui met à jour le total dans la case Résultat correspondante.

Si tu as de nombreux contrôles, comme tu le précises, il serait préférable d'utiliser un module de classe mais cela demande un niveau de connaissance élevé en VBA, ce que tu ne précises pas.

A +

Cordialement.
 

Pièces jointes

  • Classeur1 Christ69.xls
    39.5 KB · Affichages: 52

Christ69

XLDnaute Nouveau
Re : Problème de calcul

Je te remercie pour ta réponse , elle me convient.
Mais si tu m'éclairé sur les modules de classe je suis preneur.Mon niveau de vba correspond à quelqu'un qui farfouille partout pour mettre en œuvre les projets qui me sont donner a faire informaticien autodidacte
 

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

RE :

Voici donc la version 2 de ton fichier avec les modules de classe.

Tu peux constater que le code est réduit à son strict minimum concernant les contrôles TextBox dans le module UserForm1. Je n'entrerai pas, pour le moment, dans des explications détaillées des modules de classe car je vais quitter mon poste, mais je te propose de faire le test suivant :

Tu peux ajouter autant de TextBox que tu le désires, tu n'auras aucune intervention à faire au niveau du code. Tu dois juste te rappeler qu'il faut impérativement indiquer le n° de ligne adéquat dans la propriété Tag.

Encore une chose importante : il serait préférable que tu numérotes les TextBox dans l'ordre croissant par colonne puis par ligne, sinon tu seras forcé de les déplacer pour que la case résultat soit dans la bonne colonne.

Par ailleurs, tu peux en attendant consulter sur internet les sites qui traitent des modules de classe, tu y trouveras des rubriques assez détaillées. Et si besoin, venir poser des questions complémentaires ici, on essaiera d'y répondre.

Bon courage.

Cordialement.
 

Pièces jointes

  • Copie de Classeur2 Christ69.xls
    42 KB · Affichages: 51

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

Bonjour Christ69,

Ci-joint une version 3 améliorée :

Les TextBox sont contenus dans des cadres (Frame1, Frame2 et Frame3) afin de simplifier leur détection par le programme. Les cases correspondant aux années ont leur propriété Tag vide, seule la case Résultat de chaque cadre a le Tag égal à "R". Pour mieux visualiser les cadres, j'ai fixé la propriété SpecialEffect de Frame1 à 3 - fmSpecialEffectEtched, il te suffit de la remettre à 0 - fmSpecialEffectFlat pour rendre l'encadrement invisible. Comme précédemment, tu peux ajouter ou supprimer des cases sans avoir à modifier le code de quelque manière que ce soit. Tu devras simplement t'assurer que le Tag de la case Résultat contienne "R" (ou toute autre valeur de ton choix l'essentiel est qu'elle ne soit pas vide).

Enfin, dernier avantage, plus besoin de s'occuper des noms de contrôles, c'est la macro qui les gère.

Bon WE de Pâques.

Cordialement.
 

Pièces jointes

  • Copie de Classeur3 Christ69.xls
    47.5 KB · Affichages: 57

mécano41

XLDnaute Accro
Re : Problème de calcul

Bonjour à tous,

Je mets ce fichier pour la partie "Création des contrôles" qui peut te servir car tu en as beaucoup.

La boîte de dialogue est vide ; il suffit de lancer CreationControles() pour la remplir, y compris les titres. Tout est modifiable dans le code. Attention! avant de relancer ce code, il faut effacer ces contrôles... S'il y en a d'autres (puces, boutons...), ils peuvent rester.

J'ai mis un module de classe mais je n'arrive pas à dire dedans comment faire la somme. Il fonctionne puisque je lui fait sortir le nom de la TextBox qui a subi un changement mais comme je n'arrive pas à désigner ces contrôles à partir du nom composé je suis bloqué... si Papou-Net voit une solution avec mes noms...Je vais chercher encore un peu...

Cordialement
 

Pièces jointes

  • EssaiChrist69-1.xls
    60.5 KB · Affichages: 51
  • EssaiChrist69-1.xls
    60.5 KB · Affichages: 52
  • EssaiChrist69-1.xls
    60.5 KB · Affichages: 53

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

Bonsoir Christ69, Mécano41,

@ Christ : as-tu testé mon fichier avant de retranscrire le code sur le tien car, je t'assure, ça fonctionne.

Si tu peux joindre ton fichier, en remplaçant les données confidentielles s'il y a lieu, je te l'adapterai.

Cordialement.
 

Christ69

XLDnaute Nouveau
Re : Problème de calcul

Papou net, je te remercie pour les efforts que tu fais.
En pièce jointe tu trouveras sous le nom Christophe une partie tronquée du programme. Je souhaiterai avoir le résultat dans la colonne total et ainsi que dans le total opérateur.
Peux tu m'indiquer les erreurs ou omissions faites.


Une seul ligne de programmation me suffira pour comprendre

et encore un grand merci pour ton aide

Joyeuses pâques
Cordialement Christophe
 

Pièces jointes

  • CHRISTOPHE.xls
    54.5 KB · Affichages: 33
  • CHRISTOPHE.xls
    54.5 KB · Affichages: 36
  • CHRISTOPHE.xls
    54.5 KB · Affichages: 32

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

RE :

Voici une partie du problème réglé, tu avais oublié deux choses :

- La déclaration du tableau des TextBox dans Module2 (Public CasesTB() As New Classe1)

- De grouper les cases de saisie dans des cadres Frame

La copie corrigée ci-jointe fonctionne donc, comme tu pourras le vérifier.

Toutefois, je n'ai pas bien compris où doivent se faire les totaux, je me suis contenté pour le moment de les mettre sur la ligne Total opérateur. Un exemple de ce que tu veux obtenir sur ton fichier serait souhaitable.

Cordialement.
 

Pièces jointes

  • Copie de CHRISTOPHE.xls
    65.5 KB · Affichages: 26
  • Capture Frame.jpg
    Capture Frame.jpg
    94.4 KB · Affichages: 57
  • Copie de CHRISTOPHE.xls
    65.5 KB · Affichages: 28
  • Copie de CHRISTOPHE.xls
    65.5 KB · Affichages: 29

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

RE :

Cette copie annule et remplace la précédente. En effet, j'ai relevé une erreur qui m'était passée inaperçue : certaines cases avaient leur propriété Locked=True et de ce fait elles n'étaient pas additionnées. Voilà qui est corrigé.

A +

Cordialement.

Edit : remise fichier id après correction d'un petit oubli.
 

Pièces jointes

  • Copie de CHRISTOPHE.xls
    63.5 KB · Affichages: 37
  • Copie de CHRISTOPHE.xls
    63.5 KB · Affichages: 34
  • Copie de CHRISTOPHE.xls
    63.5 KB · Affichages: 39
Dernière édition:

mécano41

XLDnaute Accro
Re : Problème de calcul

Bonjour à tous,

Apparemment toute la disposition a changé par rapport à la demande initiale alors, juste pour mettre mon fichier à jour dans ce fil, voici ma version complétée. Je n'aime pas balayer toute une collection pour trouver quelques éléments mais je n'ai pas trouvé mieux ici... L'utilisation du Tag (merci Papou-net :) ) simplifie en évitant l'analyse du nom. Il n'y a pas les sécurités nécessaires (vérification si numérique, interdiction d'écrire manuellement dans les Textbox Résultat...).

Cordialement
 

Pièces jointes

  • EssaiChrist69-2.xls
    43 KB · Affichages: 37
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

Bonjour à tous,

Je n'aime pas balayer toute une collection pour trouver quelques éléments mais je n'ai pas trouvé mieux ici...
C'est aussi mon avis, raison pour laquelle j'ai regroupé les TextBox dans des Frames ce qui limite l'étendue de la plage à balayer. Je pense que l'on pourrait tout aussi bien utiliser les noms de groupe mais je trouve que c'est plus compliqué à coder. Autre avantage des Frames, un copier-coller suffit si on désire ajouter des cases dans le formulaire, sans avoir à toucher au code.

Il n'y a pas les sécurités nécessaires (vérification si numérique, interdiction d'écrire manuellement dans les Textbox Résultat...)
Dans ma proposition, ce n'est pas indispensable car la saisie alphanumérique ne génère pas d'erreur, elle est tout simplement ignorée dans le calcul du total. Cerise sur le gâteau : aucune saisie n'est prise en compte dans les cases Total opérateur.

@ Mécano41 : ton formulaire ne comporte aucun contrôle ?

Bon dimanche à tous (et à oeufs en particulier).

Cordialement.
 
Dernière édition:

mécano41

XLDnaute Accro
Re : Problème de calcul

Salut Papou-net

@ Mécano41 : ton formulaire ne comporte aucun contrôle ?


Comme je l'avais dit au message #7 : La boîte de dialogue est vide ; il suffit de lancer CreationControles() par F5 pour la remplir, y compris les titres. Tout est modifiable dans le code. Attention! avant de relancer une autre fois ce code, il faut effacer ces contrôles... S'il y en a d'autres (puces, boutons...), ils peuvent rester.

Nota : c'était basé sur le premier fichier-exemple du demandeur.

Cordialement
 

Papou-net

XLDnaute Barbatruc
Re : Problème de calcul

Salut Papou-net




Comme je l'avais dit au message #7 : La boîte de dialogue est vide ; il suffit de lancer CreationControles() par F5 pour la remplir, y compris les titres. Tout est modifiable dans le code. Attention! avant de relancer une autre fois ce code, il faut effacer ces contrôles... S'il y en a d'autres (puces, boutons...), ils peuvent rester.

Nota : c'était basé sur le premier fichier-exemple du demandeur.

Cordialement

Arfff, au temps pour moi, je n'étais pas remonté dans les messages précédents.

Cordialement.
 

Statistiques des forums

Discussions
312 844
Messages
2 092 760
Membres
105 529
dernier inscrit
StarExcel