Je cale sur un code transfert vers un tableau

en réponse à ThauThème, fidèle secouriste de mes soucis d'application, voici le résumé du problème.

"Merci d'avoir pris la peine de me répondre, et la pertinence de la réflexion quand au MP est évidemment bien fondée.

La communauté ne peux y trouver que pour s'améliorer ce que j'essaye de faire au fil de mes lectures sur ce forum.

Le soucis majeur rencontré lors de ma mise en code de cette application était de m'inspirer du code développé par tes soins pour mon "carnet de vol"

Le code gérant l'Userform "saisie_facture" était un bon canevas et donc j'ai tenté le transfert en imputant les nouvelles variables .

J'ai donc initialisé en définissant les propriété tag puis en cherchant une solution pour appliquer une création automatique en fonction du choix de l'élève et non plus de la date.

Donc VBA devrait créer un onglet élève en chargeant un canevas résultats qui serait garni par les champs saisi dans le formulaire de l'Userform Saisie_PC ou Saisie_ADJ.

Ou je cale, c'est dans le code de renvoie des données dans le tableau résultats.

J'ai beau modifier les valeurs, c'est au niveau des conditions que je cale.

J'ai donc tenté le décodage mais sans succès.

Donc "appel à un ami" était devenu incontournable d'où mon MP malvenu

Sorry mais merci encore de tes conseils. Je poste le contenu sur le forum à l'instant"

Papy280255

Bonjour Papy, bonjour le forum,

Argh !!!!! En phase de test sur les quelques modifications faites, Excel a planté et j'ai tout perdu. Je reprendrai plus tard dans la soirée. Il y a des inversions de Tag l'Évève en colonne A (Tag=1) et la Date en colonne B (Tag=2) et quelques ajustements à faire...

Bonsoir tout le monde d'Excell et des contrées du code vba, bonsoir ThauThème,

C'est déjà un bon début et souvent le coeur du problème avec les transpositions de variables.

Je travaille sur ce code depuis deux jours et a force de le relire je n'ai pas fait le rapport entre les différentes positions Tag de celles-ci.

Merci à toi ThauThème de la bonne suite de réflexions.

A vous lire

Papy

Bonsoir Papy, bonsoir le forum,

Cette fois pas de plantage et du coup, une version plus aboutie avec un Module de Classe. Ne t'effraie pas, si tu ne connais pas ce n'est qu'une manière d'éviter de coder pour chaque textbox numérique :

• On crée un Module de Classe (j'ai renommé la casse de ce module ClassTB, la classe des TextBoxes).

• on définit le nom et le type des instances de cette classe (TB / TextBoxes).

• On définit via l'événement Change ce qui va se passer à chaque changement d'une TB.

La classe est alimenté à l'initialisation de l'UserForm où l'on va indiquer quelle sont les textboxes à prendre en compte. Le calcul du total se fait immédiatement et il y a blocage en cas de dépassement de la note maximum. Seule les valeurs numériques sont autorisées. Tu verras tout cela dans le code du module de classe...

Pour le reste est, comme je t'avais signalé, ce ne sont que des ajustements après vérification. Code commenté...

Le fichier :

12papy-v01.xlsm (78.67 Ko)

Coucou à tous et à toi ThauThème

Effectivement cette manière de code en utilisant les Classes est pour moi inconnue et je la découvre avec curiosité.

Le temps de faire un tour du script et du fil conducteur de la classe TTB je vais tenter d'assimiler la chose.

Le code annexe de l'application est comme à l'habitude soigné et détaillé ce qui me(nous) permets de suivre le cheminement du raisonnement et de la logique du VBA selon "ThauThème"

Il ne me reste plus qu'à appliquer le code pour l'autre matière càd "ADJ" et cela devrait le faire. Un cheminement vers les liaisons semble requis car Excel me propose le directory de ton PC ThauThème. (sans le vouloir je découvre ton prénom) .

Bon je vais regarder tout cela et d'ores et déjà je t'en remercie.

très bonne journée

Papy280255

Bonjour le Fil, bonjour ThauThèmes

Je pense comprendre petit à petit cette fonction de module de classe.

J'ai donc tenté en solo la transposition du module de classe TB vers un module de classe TB1 gérant les TextBox de l'userform Saisie_ADJ qui est différent de celui de Saisie_PC.

En premier, j'ai donc modifier le code de l'userform en changeant les TB en TB1 puis en renommant le TextBox concernées pour que le module de classe TB1 reconnaisse les cases.

Jusque là je pense être dans le bon, puis une une fois ces petits ajustements fait j'ai un doute.

La confirmation vient avec la compil qui m'annonce que la varible TTB n'est pas définie.... Là je cale , où la définit-on ?

De plus j'ai des craintes sur ma logique qui voudrait que l'écriture des Textbox se fasse bien dans la feuille "Résultats" créée en fonction du nom de l'élève et à la suite des données déjà récoltées par l'userform Saisie_PC.

Oups cela devient hard.... mais à tout problème....une solution

en annexe code userform où il cale ( Redim Preserve TTB (0 to I)

Private Sub UserForm_Initialize()
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
Dim I As Byte 'déclare la variable I (Incrément)

'puisque le principe des Tag est acquis, autant définir la propriété [Tag] en dur dans la fenêtre des propriétés

'ici on va alimenter uniquement les TextBoxes qui vont permettre de faire le total (avec le module de Classe)
For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'UserForm
    Select Case CTRL.Tag 'agit en fonction de la propriété [Tag] du contrôle
        Case "5", "6", "7", "8", "9", "10", "11", "12" 'tous les contrôles des notes
            ReDim Preserve TTB(0 To I) 'redimensionne le tableau TTB

en attaché l'application au stade actuel.

D'avance merci

Papy280255

7papy-v01.xlsm (96.83 Ko)

Coucou tous,

Ai trouvé la solution, mauvais encodage de module de classe. TB et pas TB1

Private TTB() As New ClassTB  'déclare le tableau TTB (Tableau des TextBoxes de la classe "ClassTB")

et Variable maintenant reconnue dans

Set TTB(I).TB = CTRL 

TB et non TB1

En somme le module de classe TB1 reprend bien la variable TB et donc cela devrait fonctionner.

Je vais tenter plus loin

A +

Papy 280255

Mise à jour

Et non c'est pas encore ça

Je replanche

Re,

En pièce jointe la V2...

6papy-v02.xlsm (82.66 Ko)

Et zou ThauTheme trop fort,

Après quelque ajustements et un massage de "neurones", j'ai enfin compris la technique des modules de classe et des transfert de case via les tag des TextBox.

En attaché la dernière version modifiée par ThauTheme et redéfinie question présentation par mes petits doigts clavier.

Sauf autre petit bug caché, cela marche à merveille donc merci qui.... Merci ThauThème.

Excellente fin de journée

Papy

12papy-v03.xlsm (115.78 Ko)
Rechercher des sujets similaires à "cale code transfert tableau"