Code VBA - Actualisation d'une liste par UserForm ou autre

Bonjour,

Pour la création d’un nouveau fichier annuel – sur la base du fichier de l’année en cours, semblable au fichier ci-joint - toute une série de macros sera lancée (création d'une copie du fichier de l'année en cours, effacement de certaines données anciennes, création de nouvelles feuilles, etc.).

Je désirerais intégrer à ce code l’actualisation de la liste des dicastères inscrits dans les colonnes C et D.

Il faudrait que l’utilisateur puisse – après avoir lancé la macro principale préparant le nouveau fichier – contrôler et corriger cette liste en cours de macro.

J’imaginais donc qu’un UserForm s’ouvrirait à un certain moment ; la liste des anciens numéros et noms de dicastères y serait inscrite (si possible sur deux colonnes distinctes) et l’utilisateur pourrait effacer ou rajouter des numéros et noms de dicastère à cet endroit. Lors de la fermeture de ce UserForm, la liste serait actualisée dans le fichier nouvellement créé et la macro poursuivrait son chemin (notamment le même travail pour le contrôle et la correction des noms des municipaux de la colonne A, mais ça je saurais normalement le faire moi-même sur la base de votre exemple).

Toute autre solution qu’un UserForm – pour autant que ce soit possible de l’intégrer à ma macro principale – serait également la bienvenue.

A vous relire.

Bonjour Yvouille le forum

a mon avis impossible de modifier en cours de déroulement de la macro

a+

papou

Bonjour

Suis peut-être à côté de la plaque

Salut Papou,

J’espère que tu n’aies pas raison

Salut Banzai,

Je te remercie pour ta réponse ; c’est très sympa de bien vouloir m’aider.

Malheureusement ta solution ne semble pas correspondre entièrement à mon attente et comme ce n’est pas moi qui vais utiliser ce fichier, mais différents utilisateurs, je ne sais pas s’ils vont comprendre comment ça fonctionne.

J’ai moi-même fait des essais de cocher quelques cases au hasard et de rajouter un dicastère et maintenant, lorsque je lance une nouvelle fois la macro, la liste des «Dicastères après» comporte plusieurs fois la mention « Faux » et un dicastère que j’avais essayé de rajouter réapparaît toujours.

Peut-être est-ce parce que je me suis mal exprimé. Aussi voici un complément d’explication : les changements de dicastères seront extrêmement peu nombreux à chaque début d’année. L’idéal serait aussi qu’un UserForm s’ouvre dans lequel la liste de tous les numéros et noms de dicastères apparaîtraient par exemple dans des TextBox, avec autant de TextBox vides qu’il y a de possibilité d’inscrire de dicastères dans les cellules brunes (38 dicastères au total). A ce moment là l’utilisateur pourrait modifier les textes qu’il désire (supprimer par exemple un numéro et un nom de dicastère sur la même ligne et rajouter si nécessaire un numéro et un nom de dicastère dans des TextBox vides. Ensuite, l’ancienne liste sur la feuille serait effacée et remplacée par la nouvelle liste créée dans ce UserForm. Des lignes vides en milieu de liste ne dérangeraient pas puisque ces données seront triées par la suite.

En ayant la liste des dicastères visibles dans ce UserForm, ce serait plus facile d’avoir une vue d’ensemble.

Si tu pouvais m’aider pour la forme (je pense qu’il faudrait que ces 38 séries de 2 TextBox apparaissent dans une liste déroulante, si c’est possible, mais sinon pourquoi pas dans un UserForm géant, même dans deux séries de 2 colonnes), pour inscrire les anciens dicastères dans la TextBox et pour reporter la nouvelle liste (éventuellement sans modification), ce serait génial. Il est bien entendu que je n’aurais pas besoin que tous les TextBox soient créés, mais juste deux ou trois pour l’exemple.

Peux-tu encore m’aider sur ce coup là ?

Bonjour

Yvouille a écrit :

ajouter un dicastère

Comment fais tu cela, ce n'est pas prévu dans la macro, on peut juste modifier soit le nom d'un dicastère ou du numéro

Yvouille a écrit :

lorsque je lance une nouvelle fois la macro, la liste des «Dicastères après» comporte plusieurs fois la mention « Faux » et un dicastère que j’avais essayé de rajouter réapparaît toujours.

Manque de test : Une variable (Nb) à remettre à 0 à l'ouverture de l'Userform1

Ce programme t'affiche la liste des discatères et leurs numéros dans une ListBox

Yvouille a écrit :

A ce moment là l’utilisateur pourrait modifier les textes qu’il désire

L'utilisateur coches ceux qui doivent rester ou être modifiés

Ensuite pour chaque choix l'utilisateur a la possibilité de modifier/accepter

Il n'y a rien de prévu pour en rajouter

Yvouille a écrit :

Ensuite, l’ancienne liste sur la feuille serait effacée et remplacée par la nouvelle liste créée dans ce UserForm.

Une fois "valider" il t'affiche la nouvelle liste

C'est vrai je n'efface pas l'ancienne liste mais la macro l'affiche en colonnes J et K et dans une MsgBox

Yvouille a écrit :

Peux-tu encore m’aider sur ce coup là ?

Alors la aucun souci dans la mesure des mes connaissances

Mais pour le moment je n'arrive pas à schématiser ton idée

Une maquette serait intéressante à voir

Bonsoir Yvouille Banzai le forum

bon alors une idée si elle te convient, créer une listbox à l'ouverture de l'userform avec tous tes dicastères,

un click sur une ligne on rempli deux textbox tu modifies les valeurs tu enregistres et ainsi de suite pourrais te convenir???

a+

papou


Re Yvouille Banzai le forum

ton fichier en retour avec un essai, testes et redis nous

a+

papou

80yvouille-v1.zip (27.10 Ko)

Salut Banzai, Salut Papou,

Papou, je te remercie pour ta proposition. Je pense qu’elle s’approche passablement de mes attentes. Mais il y a quand même un ou deux petits problèmes de compréhension que je voudrais éviter, vu le niveau basique des utilisateurs potentiels. Ainsi lorsque tu as éliminé un dicastère, le suivant est sélectionné dans les champs en haut. Afin de pouvoir saisir un dicastère inexistant, il faut penser/savoir qu’il faut d’abord modifier les textes de ce dicastère affiché mais que l’on veut garder ; la première crainte que l’on a à ce moment là, c’est que le dicastère dont le texte est affiché et que l’on doit effacer afin d’écrire le nouveau texte soit perdu.

Autrement, je pense que c’est voulu que la nouvelle liste ne soit pas encore reportée dans la feuille lorsque l’on clique sur « Mettre à jour la liste dans la feuille ».

Je pense que l’on pourrait creuser de ce coté-là, mais comme Banzai – que je remercie également au passage pour sa contribution - m’avait demandé une maquette et que j’avais commencé à la réaliser, je vous livre le fruit de mon travail.

Selon moi, ma nouvelle solution aurait l’avantage de la simplicité d’utilisation. Les dicastères existants sont visibles en un seul coup d’œil et l’effacement ou le rajout de dicastère relativement clair, avec un seul bouton à cliquer.

Si vous pouviez donc encore m’aider à remplir les champs de mon UserForm - à son ouverture- avec les données des colonnes C et D de la feuille, puis à reporter la nouvelle liste créée sur la feuille, ce serait le top !

Mes TextBox prévus pour les numéros de dicastères sont numérotés de 1 à 38. Les TextBox prévus pour les désignations de dicastères sont numérotés de 101 à 138.

Encore merci pour votre aide.

Cordialement.

Bonjour Yvouille banzai le forum

bon voilà avec tes demandes, mais c'était une ébauche de ce que tu pouvais faire, j'attendais tes remarques pour savoir si cela valait le coup de continuer

Bon voilà la nouvelle version avec l'effacement des textboxs en cas de suppression

et le report du tableau dans la feuille 9 base .

L'avantage avec ce système c'est que tu modifies la listbox seulement et si problème tu sors et tu n'as pas abîmé ta liste

voilà testes et redis moi

a+

papou

50yvouille-v2.zip (29.01 Ko)

Bonjour

Bonjour Paritec

Comme j'ai bossé un petit peu dessus sur ton idée

Re Yvouille le forum

Bon j'avais pas lu ton dernier post jusqu'au bout alors voilà suivant ta demande même si je trouve que la solution est très mauvaise

car une liste de 39 et c'est fini !!!!!!!

bref c'est ce que tu veux alors voilà

a+

papou

D'autant que ma dernière version faisait la même chose et sans plus de risque !!!!

93yvouille-v3.zip (25.93 Ko)

Bonjour Banzai Yvouille le forum

excuses Banzai j'avais pas vu ta réponse, mais il n'en reste pas moins que au delà de 38 lignes il fait comment??

ou alors il est sur de ne jamais en avoir plus mais là c'est lui qui sait.??

J'ai vu que dans ta solution, comme moi d'ailleurs, on a oublié tout les deux, de lui remettre le format nombre dans la colonne C bon pas méchant mais à faire si Yvouille utilise des formules après

a+

papou

Bonjour

Bonjour Paritec

C'est vrai qu'au delà de 38 il y aura des problèmes mais cela à l'avantage d'être plus facilement compréhensibles pas des néophytes (fonctionnement excel)

J'ai remarqué aussi pour les nombres : Wait and see

Mais pas sur que cela soit des nombres vu que certains comportent le point et la virgule

Bonne journée

Re banzai le forum

oui c'est plus facile ? enfin je ne me rappelle plus de la première fois que j'ai vu une listbox ou un textbox mais bon comme tu dis plus facile entre guillemet

pour les nombres comme tu dis attendons s'il en a besoin

a+ et bon dimanche

Papou

Re Banzai Yvouille le forum

j'ai rajouté si la colonne C est des montants ce qui semble être le cas une gestion des points et des virgules

et si c'était pas des chiffres on modifiera

a+

papou

25yvouille-v4.zip (28.57 Ko)

Edit : message modifié

Bonjour à tous deux et merci pour vos réponses.

Vos deux solutions me semblent assez identiques et fonctionne apparemment très bien. Il reste juste un petit problème de format. Mes numéros de comptes ne sont pas des nombres traditionnels et peuvent comporter deux points (par exemple le dicastère "Route", numéro 43.306.1). Afin que ces données apparaissent toutes de la même manière, je transforme d'ailleurs plus loin dans mon code les références qu'Excel prend pour des nombre (par exemple 406.4343) au format "Texte". A noter ici qu'en Suisse, le séparateur décimal est le point et non pas la virgule, raison pour laquelle je n'ai pas indiqué 406,4343.

Tout ceci pour en venir à mon dernier problème : Avec vos codes, mes références avec un seul point sont transformées par des références avec des virgules.

Ceci semble créer des problèmes par la suite ; avec le tri et, bien entendu, un problème d'exactitude dans la dénomination des numéros de dicastères.

Je ne sais pas ce qu'à voulu dire Papou par "J'ai vu que dans ta solution, comme moi d'ailleurs, on a oublié tout les deux, de lui remettre le format nombre dans la colonne C", mais je ne veux pas spécialement un format nombre.

D'ailleurs, afin de voir tout de suite si ce problème de tri est résolu ainsi, serait-il possible d'ajouter au code le tri de ces deux colonnes sur la base de la colonne D après la fermeture du UserForm ?

A vous relire.

Bonjour Yvouille Banzai, le forum

bon alors voilà avec tes formats texte tes possibilités de points et ton classement

a+

papou

42yvouille-v5.zip (27.69 Ko)

Wow, bravo Papou pour ces dernières modifications. Tout fonctionne maintenant selon mes souhaits.

Merci infiniment à toi et à Banzai pour votre contribution géniale !

Bonnes salutations.

Re Yvouille le forum

bah tant mieux c'est très bien, et c'est fait pour!!

a+

Papou

Rechercher des sujets similaires à "code vba actualisation liste userform"