Construction macro

Bonjour le forum

J’essaie de construire cette appli de transmission de consigne pour mon travail, j’ai bien avancé sur l’ensemble du codage (Valider données, Modifier, Charger listbox, Annuler) mais je rencontre quelques difficultés, vue mon niveau débutant, je crains avoir fait un peu le chantier dans mes codages.

J’aimerai si possible, avoir de l’aide là-dessus avant d’amplifier les choses.

Le principe que j’imagine est l’accès à tous pour indiquer une consigne et modifier quelques données seulement ensuite.

Une fois la consigne (résolu le, par), seul une ou deux personnes pourrons avoir accès (je ne sais pas comment encore) afin de renseigner la colonne H, de manière à ne plus faire apparaitre la consigne dans le ListBox.

La ou ça bloque, c’est quand j’ai fait la macro pour modifier, il y les Combobox qui se chargent à moitié, également un gros doute sur le click du ListBox.

Comme je n’arrive pas à voir les défauts, j’aimerai si possible, avoir de l’aide là-dessus avant d’amplifier les choses.

Ce n’est peut-être qu’une vérification des macros mais j’en doute fort.

Je vous en remercie par avance de l'aide qui peut-être amenée.

Cdlt

pompaero

Bonjour,

Vraiment personne pour m'aider.

Merci

Cdlt

Hello,

C'est quoi la question ?

La ou ça bloque, c’est quand j’ai fait la macro pour modifier, il y les Combobox qui se chargent à moitié, également un gros doute sur le click du ListBox.

tu as plein de combobox, laquelle ne va pas ?

R@g

Bonsoir

Effectivement manque de renseignement

Quelles sont les modifs a apporter?

sur quel Userform qui concerne ?

quel onglet et quelle colonne de cet onglet?

Vu le nombre de UF, d'onglets TextBox et ComboBox difficile de si retrouver

Cordialement

Bonjour,

Ci joint ma participation. Pour aller plus loin après il me faudra quelques détails...

L'ensemble est bâti sur la base des UserForm pour Tableaux structurés fournis en téléchargement sur ce fil.

A+

Nota : Compte tenu de la taille du classeur et de la taille du zip le classeur n'est pas du tout optimisé : Je ne m'en suis pas occupé !

Dans cette version le ListBox est filtré pour n'afficher que les lignes non validées. Il reste à faire le lien entre les 2 situations mais là je ne peux pas faire avec ma boule de cristal ! Il faut "gérer les droits" et je ne peux pas faire faute d'indications suffisantes.

A+

EDIT : Cette version n'est pas utilisable telle que : Comme la liste est-filtrée, il faut faire le joint entre les 2 versions. En effet le système travaille toujours sur l'index de la listbox alors que dans la V2, il faudrait travailler sur l'iD pour assurer la concordance de lignes entre la version filtrée et la BD complète.

Mébon c'est à travailler. Je ne me suis occupé ici que de filtrer la BD si nécessaire.

Bonjour galopin01, le fil,

Désolé à tous de mon retour tardif.

Tout d'abord, merci de votre retour et vos suggestions sur l'incompréhension de mes explications (je m'en doutais un peu).

Avant de vous répondre et d'ajuster ma demande, permettez moi de regarder la proposition de galopin01 puis ensuite je reviens à vous.

Merci de votre compréhension

Cdlt

pompaero.

Version identique à la dernière mais j'ai rétabli toutes les fonctionnalité (de la BD hein... Pas le ThisWorkbook !)

Je ne peux pas aller plus loin tant que je ne sais pas comment on doit gérer la BD (Je n'ai pas envie de m'amuser à faire un jeu de piste dans le reste du code...)

La BD sera-t-elle visible de l'utilisateur ?

La validation CdS peut-elle être envisagée directement sur feuille (conseillé) ou doit-elle pouvoir être faite (et supprimée) sur le UserForm ?

A+

Bonjour galopin01,

Mais tu es plus rapide que Lucky Luke.. , merci de ton implication à m'aider, c'est cool.

Après quelques tests de la V2, le principe est bien pour tous de pouvoir enregistrer une consigne, de modifier une partie de la consigne et c'est tout.

La validation CdS est réservé à une ou deux personnes seulement. Vu les personnes limitées à cet effet j'imagine que sur l'UserForm cela va etre compliqué d'effectuer la validation donc le plus simple serait directement sur feuille, ok pour cette option. Comme cela ça évite de supprimer également et de garder en archive.

Du coup plus besoin du bouton Supprimer.

La BD ne sera pas visible aux utilisateurs, ils auront accès à un autre onglet "PrintConsigne" de manière à voir et ou imprimer les consignes non validés par CdS.

Lors de l'opération "Nouveau" est il possible de

- bloquer l'accès du Tb4 et Cbopar en écriture.

Lors de l'opération "Modifier" est il possible de

- bloquer l'accès du Tb1, Tb2, CboEdit, CboPole en écriture (de manière à pouvoir plus tard les débloquer moi même au cas ou)

- Avoir l'inscription de la date dans Tb4 directement au lieu de Tb1, puisque Tb1 est validé et ne doit pas changer.

Puis à chaque opération avoir une garde des données dans l'onglet "histo".

Ne te fit pas aux différents onglets d'accès je pense ne pas m'en servir voir les supprimer, je vais rester simple d'utilisation mais L'UserForm doit etre utilsable sur n'importe quel onglet, merci.

Cdlt

pompaero.

J'ai d'autres priorités pour le moment mais je pense que d'ici la fin de la semaine tout cela sera résolu.

Toutefois...

Tu n'es pas un perdreau de l'année ! Tu dois aussi et surtout t'approprier le code fourni qui est dans l'ensemble simplissime même s'il n'est pas commenté :

Je ne suis pas partisan de truffer systématiquement le code de commentaires inutiles qui le rendent finalement illisible... Mais je me ferai un devoir de t'en préciser les moindres détails sur demande.

"Pas besoin de bouton supprimer"

Dans l'immédiat il suffit de masquer ce bouton en le descendant un peu dans le frame et de réduire ce frame afin de ne voir que les 2 premiers boutons.

Tu l'auras compris je ne suis pas partisan de supprimer totalement cette fonctionnalité, car c'est une fonctionnalité "de base" pour un formulaire surtout pour une BD masquée. A défaut comment faire pour supprimer un enregistrement dont on se rend compte après coup qu'il est inutile si rien n'est prévu pour ce faire ?

Pour les autres questions je verrai cela rapidement.

A+

bonjour,

Je pense avoir à peu près répondu à ton besoin. Pas trop testé... A toi de jouer...

A+

Bonsoir galopin01

Désolé, pas mal occupé cette semaine. J'ai commencé lundi à vouloir essayer d'amener les améliorations que j'ai soumis dans mon dernier post sur ton dossier en PJ dans ton avant dernier post, mais j'étais fatigué donc pas concentré pour bien faire.

Je profite pour prendre un peu de temps et vois que tu as encore été plus rapide.

Je regarde ton dernier post et reviens te dire.

Encore grand merci à toi.

A+

Cdlt

pompaero

Bonjour galopin01

Super boulot, merci c'est bien dans le sens de fonctionnalité que j'imaginai.

J'ai vu que tu as créé également l'histo de chaque évènement "Ajout et Modifier", ça c'est très intéressent et dans ce cas de figure le bouton supprimer pourrai rester accessible.

Sur ce point, du coup j'ai tenté d'ajouter dans le bouton "Supprimer" ce fameux WriteHisto mais ça ne marche pas.

J'avoue ne pas analyser totalement tous les codes, il y en a certains que je n'arrive pas à comprendre leur fonctionnement.

Maintenant je vais tenter de créer la fiche (onglet "ConsignePrint") des consignes en cours pour impression.

Merci

Cdlt

pompaero

Je ne suis pas partisan de mettre des commentaires inutiles dans le code, ça rend encore plus difficile la lecture et surtout la compréhension.

C'est un petit peu comme si au lieu de regarder un film au ciné, tu lisais le scénario du film.

Le meilleur moyen de comprendre le déroulement d'un Userform c'est de mettre des points d'arrêts partout et de de regarder ligne par ligne(avec F8) ce qui se passe.

Si c'est une boucle ou une condition, tu ne les visites qu'une ou deux fois puis tu supprimes le point d'arrêt.

Ce code est tellement bien structuré qu'on ne peut pas ne pas comprendre. Sauf quelques notions un peu plus abstraites bien sûr mais au niveau de l'analyse du scénario c'est un vrai gâteau on en redemanderait ! J'en parles sans rougir ni avoir les chevilles qui gonflent car il n'est pas de moi : C'est une adaptation du code d'un grand maître... Pour les références voir ma première réponse...

Néanmoins s'il y a un point précis (ou 2 ou 3) que tu ne comprends pas, tu demandes : Je me fais un plaisir d'expliquer quand je sens quelqu'un de motivé... Au besoin par téléphone si nécessaire !

Pour PrintConsigne, si tu n'en dis pas plus je ne vais pas pouvoir faire grand chose... Tu comptes le lancer comment : L'opérateur qui va imprimer ça verra quoi ? Ta page d'accueil et un bouton ou elle lancerai ça à partir d’où ? Ça considère quels enregistrements ? Ceux qui ne sont pas encore validées ?

Nota : Une macro n'est pas indispensable pour afficher un tableau filtré. Un formuleux te ferait surement ça en 5 minutes : un doigt d'INDEX.EQUIV cinq volumes de RECHERCHEV, un zeste de SI.ERREUR pour tester la colonne I et ton affaire est faite. Bon c'est pas mon truc, donc je ne me lancerai pas dans cette démonstration, mais je pressens qu'il y aurait également là une solution au poil qu'on pourrait également reprendre après en macro...

Sinon si tu veux te tester en VBA je te donne un embryon de piste rapide : C'est simple le initData et le ReadRecord contient tout ce que tu as besoin pour remplir ton tableau : Si le InitData est capable de remplir un tableau de type ListView il est surement capable de remplir un tableau de type feuille de calcul... TAPUKA dispatcher toussa ligne par ligne sur ta feuille cible... C'est exactement ce que fait le ReadRecord, il t'affiche toute une ligne de TData.ListRows en privilégiant celle que tu as cliquéemais c'est pas bien plus compliqué de tout récupérer...

Si tu veux commencer à regarder, un petit conseil : Ne t'occupe pas de la mise en forme l'important ce sont les données.

Pour le WriteHisto de Suppression, je regarde...

Prévoir un délai !

Bonjour,

Je te donnes l'état actuel de ma réflexion.

Bien sur pour la feuille PrintConsigne il y a mille + une manière de présenter cela. J'ai fait au plus simple...

Il subsiste un petit bug sans gravité dans le UserForm. Le calendrier qui s'affiche de temps en temps de manière imprévu. (quand on valide ou qu'on annule...

Je pense que je ne devrais pas avoir trop de problème pour débusquer le loup...

A+

Bonjour galopin01,

Toujours plus rapide que ton ombre...

Entre temps j'ai regardé pour essayer d'améliorer à ma sauce quelques petit points, et comme je m'en doutais je ne suis pas parti dans la bonne logique.

Je viens de tester ta dernière version, effectivement un bug est présent avec le calendrier.

Ta reflexion actuelle est pas mal du tout... j'ai fais quelques essais en intégrant quelques mise en forme conditionnel pour la présentation de ConsPrint.

Sur ce point, lors de la fermeture de l'aperçu, le format de la forme s'affiche (à droite).

pour le moment, juste ça en vu.

Merci

Cdlt

Pour ce bug remplacer la macro Private Sub tb1_Change...

par cette macro :

Private Sub tb1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
   If Me.tb1 = "" And Not usfStatus = Status.Consultation Then
   LeTxt = 1
      FormCal.Show
   End If
End Sub

Pour la ConsPrint tout dépend en réalité du nombre d'item maximum à envisager et du contenu réel des observations...

Dans la pratique pour ce genre de rapport seul le N° iD est intéressant :

Après c'est juste une mise en forme de la feuille qui te reste à faire.

Tu utilises des RechercheV à partir des N° iD pour produire tes documents sous une forme ou sous une autre.

Une démo utilisant un mixe des 2 systèmes. Car les textes longs passent difficilement en présentation sous cette forme.

A+

Bonjour,

Mais ou tu sort toutes ces solutions... c'est génial.

Je viens de faire quelques essais, la présentation sympathique. J'ai voulu améliorer deux, trois points mais 1 me tiens tête.

Sur ConsPrint, si j'ai bien compris, la présentation à droit sert de modèle ? dans cette partie j'ai ajouté dans les formules =SIERREUR (formule);"") pour ne plus voir les #NA.

Sur l'aperçu la formule qui recherche (Par : ) affiche un zéro.

Sinon le calendrier à l'air de bien fonctionner sans bug.

Cdlt

rajouter :

'...
      ActiveWindow.DisplayZeros = False
   .PrintPreview
   End With
End Sub

A+

Bonsoir

Solutions toujours au top, merci.

Je dirai "très bon travail", je dirai même mieux "très bon travail" .

Tout a l'aire de fonctionner correctement, après quelques tests. Je pense que nous sommes arrivé à la fin du processus maintenant.

il me reste la mise en forme à effectuer, (chose que je viens de tenter avec la MFC mais ça ne marche pas comme je veux).

Je te remercie pour tout ton aide et efficacité.

Peut-être à bientôt, j'ai démarré depuis un moment un autre dossier important pour moi, les 95% des idées sont la mais je bloque sur une macro pour finaliser le dossier.

Cdlt, @+

Rechercher des sujets similaires à "construction macro"