Astucien | Bonjour, | |||||||
Publicité | ||||||||
![]() ![]() | Bonsoir, Il serait peut-être bon que tu donnes quelques détails : ce que fait ta macro (et fournir le code), et où doivent aller les colonnes B et C de Base sur les autres feuilles (mêmes colonnes, mêmes lignes, ou différentes), s'il y a des en-têtes ou non, et les particularités s'il y en a... | |||||||
Astucien | Bonsoir, Normalement il y a également un tableau qui va avec tout ces codes, plus une feuille accueil ou il y a des boutons. Ces colonnes B et C seront celles qui auront été copié de la feuille nommée "Base", et qui seront coller dans les feuilles nommées "Prepa" et "Abonnement" Je fais ce travail pour endre service à jeune qui est bénévole dans un clib de rugby local et qui veut s'occuper de la partie remise en forme. Si tu as besoin du fichier complet dit moi comment faire, il n'y a rien de secret, merci d'avance; J'ai fait des "modifs" ce soir et au démarrage il y a un plantage indiqué en rouge dans les codes ci-dessous
Option Explicit J'ai également ces codes ci-dessous auxquels je peux accéder en cliquant droit sur le bouton "Suivante" qui ce trouve sur "USF_Inter. Private Sub Cmb_annuler_Click() Modifié par rolandin le 24/05/2013 22:27 | |||||||
![]() ![]() | Bonsoir, Pour faire le transfert des noms prénoms existant sur Base vers les 2 autres feuilles (Prepa, Abonnement), voici une macro pour affecter les valeurs des colonnes B et C de Base aux colonnes A et B des autres, sur la même ligne, à partir de la ligne 2, jusqu'à la fin. Sub TftNomPnm_PrepaAbo() Cette macro n'est normalement à n'utiliser qu'une fois. Ensuite il conviendrait d'ajouter quelques lignes à la procédure Mise à jour pour que ça se fasse au fur et à mesure. Il serait mieux de mettre ton fichier pour qu'on voit l'ensemble. NB: La macro est à coller dans un module standard du classeur. Puis lancer son exécution. | |||||||
Astucien | ferrand a écrit : Bonjour Merci pour cette macro, qui est à mes yeux (de "débutant") compliquée pour le moment. J'étudirais à tête reposée En effet c'est ce que je recherche, que la mise à jour se fasse au fur et à mesure. Une question avant que je t'adresse mon fichier, quand tu dis "La macro est à coller dans un module "Standard", il est ou ce module Merci beaucoup de ton aide | |||||||
![]() ![]() | Bonjour, Tu ouvres l'éditeur VBA, par exemple par le raccourci clavier Alt+F11. Ensuite, menu Insertion > Module. Un module va être créé : Module1 si c'est le premier, ou ModuleN si un ou plusieurs existent déjà. Un module n'est rien d'autre qu'une feuille sur laquelle tu tapes ton code en format texte. L'interpréteur de commande de VBA lit et interprète ce code afin de l'exécuter. Outre ces modules ordinaires qu'on appelle module de code ou module standard, il existe d'autres modules plus spécialisés : chaque feuille de calcul dispose d'un module qui lui est lié (dans l'éditeur, tu l'ouvres par un double-clic sur le nom de la feuille dans le volet Projet à gauche ; le classeur dispose aussi d'un module lié, qui apparaît dans le volet Projet sous le nom de ThisWorkbook ; Ces modules sont principalement utilisés pour du code destinés à s'exécuter automatiquement selon des évènements qui se produisent dans la feuille ou le classeur (ouverture, activation, changement de sélection, modification...). De même, quand tu crées un Userform (formulaire), un module lui est attaché, pour le code spécifique au Userform et aux contrôles qu'il contient. (Il y a aussi des modules de classe, ça c'est pour créer des objets personnalisés avec le code permettant de les utiliser, ça échappe à l'utilisation courante de la programmation VBA...) | |||||||
Astucien | Merci pour ces explications dont j'ai un grand besoin. J'ai copié ta macro comme indiqué et j'ai une erreur à cette ligne :
| |||||||
Astucien | Voici le lien d'hébergement http://dl.free.fr/hN6d7GFw8 Le fichier est protégé par le mot de passe suivant: ;toto;rata_tata; | |||||||
![]() ![]() | rolandin a écrit :
| |||||||
Publicité | ||||||||
Astucien | ferrand a écrit : Je suis chez Free, et mon fichier a été chargé en quelques secondes, quelle autre manière de télécharger | |||||||
Astucien | ||||||||
![]() ![]() | Ok, Quelques précisions sont nécessaires : 1) Pas de feuille Abonnement ! Qu'en est-il ? Il y a par contre des feuilles par durée d'abonnement : faut-il les inscrire dans ces feuilles (ce qui suppose que la durée soit toujours saisie). Ne seront plus dans le même ordre puisque éclatés en 3 groupes. Et lors de suppression dans la Base, faut-il supprimer simultanément sur Prépa et abonnements ? 2) Vu ton image de formulaire, et fais joujou un moment à repositionner à peu près comme tu l'illustrais. Mais dans ton nouveau formulaire : date naissance, taille et abonné ont disparus, préparation apparaît qui n'y était pas. Cela mérite d'être précisé et confirmé car la feuille Base doit être alignée sur le formulaire, et le programme ajusté selon modifications. 3) Outre que le code gagnerait à être amélioré, il y a quelques anomalies à régler, comme le tri par villes ou par noms s'effectuant sur un nombre de colonnes différentes. D'autre part, le tri ne s'effectue que sur Base, il y aura donc distorsion avec les autres feuilles, sous réserve de leur utilisation qui n'est pas précisée. Bref faut savoir exactement quel est le résultat à obtenir pour programmer à cette fin. | |||||||
Astucien | Bonsoir C'est un peu la panique le samedi est le dimanche Bon je devoir revoir tout cela au calme, car il y a des informations que je ne saisie pas bien de la part de mon demandeur de jeune, le problème "prepa" (préparation) est du chinois pour moi. Je ne voudrais te faire du travail pour rien et revenir plusieurs fois modifier quelques choses Si en attendant tu peux me dire comment faire sous Excel pour faire une "alerte" quand la date d'abonnement (trimestrielle, semestrielle, ou annuelle est dépassée par rapport à la date de renouvellement, je ne trouve pas grand chose sur la toile Je reviendrais dès que j'ai des nouvelles en attendant merci de ton aide
Bonne soiré Modifié par rolandin le 25/05/2013 18:50 | |||||||
![]() ![]() | Bonsoir, Habituellement on construit les alertes sur dates avec une mise en forme conditionnelle. Le problème pour le faire sur ton fichier est que la date d'échéance d'abonnement ne figure nulle part (au moins pour le moment ) ! | |||||||
Astucien | ferrand a écrit : Tu sais, du moins tu t'en doute, mon fichier est complétement bidon, les noms les adresses, les n° de téléphone, etc. sont totalement faux Ne sachant comment traiter le sujet, je n'ai rien créé comme colonne, je voulais au départ utiliser les feuilles "Abonn_Tri, Abonn_Semestri et Abonn_Annee" pour faire ces alertes, mais il doit y avoir plus simple en utilisant qu'une seule feuille, par exemple celle que je ne vais peut-être plus utiliser pour le moment, la feuille "Prepa", elle aura déjà la copie des noms et prénoms de la feuille "Base" en colonne A et B, reste à faire cette mise à jour de toutes nouvelles saisie de la feuille "Base". La colonne C pouvant recevoir des dates (bidons pour le moment, que tu peux créer si le coeur t'en dit pour faire tes créations de codes Bonne soirée et bon courage | |||||||
![]() ![]() |
La feuille Base comporte 17 colonnes. Le formulaire de saisie comprend 17 rubriques, correspondant chacune à un champ de la Base. 1) Si une rubrique Préparation doit être ajoutée (figure dans image projet de formulaire), elle doit faire l'objet d'une colonne dans la base. Si cette option est retenue, Où doit être introduite la colonne Préparation dans Base ? Quel est le type de données qu'accueillera cette rubrique ? [NB: je ne m'intéresse pas aux infos personnelles ou non à saisir librement mais au type de données qu'elles représentent.] 2) Certaines rubriques semblent ne devoir accueillir qu'un nombre limité de valeurs (cas où la saisie n'est plus libre 3) Si des rubriques doivent être supprimées, de même que les colonnes correspondantes de Base, l'indiquer ? | |||||||
Astucien | Bonjour Avec beaucoup de retard, en cette journée de la fête des mères http://cjoint.com/?3EAq5u6AYtR Bonne soirée
| |||||||
Publicité | ||||||||
![]() ![]() | On va considérer que la feuille Base est définitive. On peut faire en sorte que la saisie et la consultation fonctionne. Mais je ne peux rationnellement boucler ce volet qu'avec les réponses de la question 2 de mon dernier post. La suite ce sera quand on saura... Bonne fin de week-end. | |||||||
Astucien | ferrand a écrit : Oui je suis passé au travers de cette question Civilité = M. et Mme Poste occupé = Pilier, Talonneur, 2° ligne, 3° ligne, Demi mélée, Demi ouverture, Aillier, Centre, Arrière. Situation familiale = Célibataire, Mariè(e), Autre, (j'ai mis au début pour "meubler" ne sert pas à grand chose à supprimer Abonnement mois = Il me disait aussi (une chose qui m'a échappée) de prévoir une feuille "Présence" sachant qu'il ouvre le club du lundi au samedi. Créer un 1 jour par colonne c'est pas tellement pensable là encore il doit bien y avoir des solutions de cases à cocher, qui pourraîent servir (peut-être) pour les périodes d'adhésion et l'alerte. Je ne sais vraiment pas quoi dire sur la réalisation de ces abonnements, si tu as des idées Bonne soirée | |||||||
![]() ![]() | Bonsoir, Je crois avoir à peu près bouclé la constitution et modification de la base, sous réserve de vérifier le fonctionnement interne du formulaire, ce que je n'ai pas encore fait ! • donné un nom dynamique à la base de données • établi 4 listes nommées pour alimenter les ComboBox du formulaire • renommé les 17 TextBox du formulaire correspondant aux colonnes de la base, de façon à pouvoir les utiliser dans une boucle pour alimenter le formulaire ou servir la base • certains de ces TextBox sont rendus invisibles, si l'affichage et la saisie dans le formulaire se fait au moyen d'autres contrôles : c'est le cas des 4 ComboBox déjà vus (mis en lien direct avec les TextBox correspondant), pour les 3 numéros de téléphone où les TextBox sont dédoublés (car la valeur à affecter aux cellules est un nombre mis en forme par le format de cellule, alors que l'affichage dans le formulaire sera un chaîne mise en forme avec des espaces), pour la date affichée sur 3 TextBox séparant jour-mois-année • la date pose un problème récurent sous VBA : après passage dans un TextBox, si le jour est inférieur à 13, elle est renvoyée dans le tableau avec inversion du mois et du jour, même si on ne la modifie pas ; la solution que j'utilise est une variable Date pour la passer au formulaire, dont on extrait jour, mois et année pour les afficher ; au changement d'une de ces composantes, la variable est modifiée en utilisant une fonction de date, et dans ce cas particulier cette date est affectée au TextBox utilisé pour la sortie sous forme d'un entier long correspondant au nombre-date qui sera dès lors correctement affiché dans la cellule • quelques autres aménagements lors de la saisie : conversion en majuscules pour Nom et Ville, initiales majuscules pour Prénoms, 5 chiffres uniquement pour Code postal, structure et caractères autorisés d'adresse e-mail Losqu'on saura comment se traitent les abonnements, on pourra compléter... | |||||||
Astucien | ferrand a écrit : Simplement par curiosité et pour m'instruire, c'est quoi "un nom dynamique" OK pour les 4 listes je verrais ce bon travail quand j'au rais le fichier
J'aurais en effet pu le faire que de te donner du travail en plus
Super tout ça, (je ne vois pas bien ce que c'est "ComboBox" TextBox oui (du moins je crois, c'est les noms donnés aux plages à remplir ("zones de texte) pour les numéros de téléphone j'aurais "bêtement" sélectionné les 3 colonnes, puis "Format/Cellules/Nombre-Spécial/Numéros de téléphone, mais cette pratique c'est pour les débutany
Que de travail pour une date, je vais apprendre
Bonjour
Comme dit voici quelques jours je n’étais pas à la maison pour cause d’opération d’un œil de mon épouse (vitrectomie membrane épirétinienne, si tu vois ce que je veux dire hi ! hi !) entre hier et aujourd’hui (nous rentrons à peine). Comme il n’y a que centre spécialisé dans ce genre d’opération il y a du monde et beaucoup d’attente. Maintenant il lui faut beaucoup de repos (peut-être à moi aussi
Je suis désolé de te donner autant de travail, mais je vois que tu fais cela très sérieusement, il y a en effet des points que je t’aurais « sûrement demandés après », mais c’est mieux de prévoir avant (conversion en majuscules pour Nom et Ville, initiales majuscules pour Prénoms, 5 chiffres uniquement pour Code postal, structure et caractères autorisés d'adresse e-mail). Pour le moment n’ayant pas le fichier sous les yeux « modifié » je ne vois que très vaguement le travail que tu as fait, je m’en rendrais mieux compte à l’essayage …… !
Pour ces abonnements, je viens de lui adresser un mail, plus un SMS pour qu’il me répondre, car j’attends encore ses réponses. Ces abonnements comme je disais sont :
C’est pourquoi il faut une feuille (ou un autre moyen de présence) avec une alerte dès qu’un abonnement arrive à sa fin (quelques séances avant pour les abonnement de 10 et 20 séances) ou que celui-ci est « Périmé » dans quelques jours pour les abonnements « trimestriels, semestriels, annuels.
Amitiés | |||||||
![]() ![]() | Salut,
Exemple pour ta base de données, la plage est définie au moyen de la formule suivante : =DECALER(Base!$A$2;;;NBVAL(Base!$B:$B)-1;NBVAL(Base!$1:$1)) Plage définie à partir de sa cellule supérieure gauche (A2), qu'on ne décale pas (deux arguments suivants laissés vides) qui comprend un nombre de lignes égal au nombre de valeurs de la colonne B (c'est Nom) diminuée de 1 (pour l'en-tête) et un nombre de colonnes égal au nombre de valeurs de la ligne 1 (l'en-tête). Ainsi lorsqu'on ajoute des lignes (et le cas échéant des colonnes) ou qu'on en enlève, le nom s'appliquera toujours à la base telle qu'elle a évolué. | |||||||
Astucien | Re, Merci je comprends mieux maintenant, j'ai hâte de voir fonctionner tes modifications | |||||||
![]() ![]() |
Tu pourras tester le formulaire et me signaler les bogues Pour que tu t'y retrouves... Le bouton d'inscription pointe toujours sur la procédure Saisie_int, réaménagée mais qui aboutit à afficher le formulaire (vierge) pour saisie. J'ai créé un autre bouton : MODIFIER (sur Base), qui pointe sur une proc. Modif_int, laquelle affiche aussi le formulaire mais avec les infos correspondant à la ligne sur laquelle se trouve le curseur sur Base. Dans ce cas les boutons Précédent et Suivant du formulaire te font naviguer parmi les adhérents inscrits sans quitter le formulaire et si tu modifies une info, OK permet de l'enregistrer et tu restes dans le formulaire (que tu quittes par le bouton FERMER). S'il s'agit de la saisie d'un nouvel adhérent, OK fermera le formulaire (que tu peux aussi fermer sans valider avec le bouton ANNULER). Outre le formulaire, dans la foulée, j'ai revisé la suppression et les tris. Mais si on a un feuille Abonnement à gérer simultanément, il faudra savoir si elle doivent être couplées (suppression et tris devant se faire sur les deux, de même que les ajouts) et dans ce cas compléter toutes les procédures pour agir sur les deux feuilles. Je te laisse voir l'état actuel. | |||||||
Astucien | Bonsoir, C’est vraiment SUPER ce que tu as fait, je suis très content, il me faudra plus tard arriver à comprendre tous tes codes. Je vais passer aux problèmes que je viens de rencontrer après plusieurs essais. Le ligne 16 pose problème avec le bouton « Modifier » en « Base ». J’ai créé une ligne 17 et si je veux faire précédent à l’aide du bouton « Fiche précédente » c’est impossible, j’ai le message suivant « Erreur ‘5’ Argument ou appel de procédure incorrect » je clique sur « Débogage » j’ai la ligne sélectionnée en jaune «Mid(pr, 1, 1) = UCase(Mid(pr, 1, 1)) » de ' Profession (affichage et saisie) - Assure initiale majuscule Si je sélectionne la ligne 12 et que je descends arrivé à cette ligne 16 le bug revient. Il m’ait arrivé aussi de cliquer sur un nom B5 ou A4 (par exemple) et d’avoir le message « Valeur de propriété non valide » sur le dessus du formulaire (Modifier) et même message en dessous de ce même formulaire. Demande : (si c'est possible)
Il manquerait (pour la suite, abonnement) une « zone de texte » pour saisir la date d’abonnement dans la dernière colonne de la « Base » Dans ce même formulaire :
Avec ces informations sur cette feuille « Abonne » une alerte « PERIME » dans une colonne de la ligne concernée. Et dans le cas d’une alerte un voyant (ou bouton) « ROUGE » qui « Clignote » et que si nous appuyons dessus nous cela nous dirige sur la feuille « Abonne » qui nous signalera « la » ou « les alertes ». Bonne soirée à toi et bon courage, tu arrives à la fin, je suis super content pour le jeune à qui je n'ai rien fait voir
| |||||||
![]() ![]() | j’ai le message suivant « Erreur ‘5’ Argument ou appel de procédure incorrect » Je vois, la méthode pour passer l'initiale en majuscule ne supporte pas les chaînes vides (elle cherche le 1er caractère et ne le trouve pas !). Cela ne doit pas être le seul problème résiduel du genre, j'essaie de prendre le temps de passer ça en revue demain pour éliminer ces bévues. Pour la propriété "non valide", normal, c'est quand ce qui préexistait ne correspond pas à la liste de choix... 2 façons de régler ça, on en reparle...
C'est en général la touche de tabulation qui sert à naviguer d'un contrôle à l'autre (la touche Entrée utilisée pour valider a également le même effet). Tu choisis l'ordre de tabulation pour passer d'un contrôle à l'autre : dans l'éditeur VBA, clic droit dans le Userform (sur une zone vide, pas sur un contrôle) et clic sur Ordre de tabulation, ça affiche la liste des contrôle, il faut repérer ceux que tu veux déplacer et avant ou après quel autre tu veux les mettre, et tu fais monter ou descendre...
Plus difficile ! Le plus souvent l'adresse commence par un numéro dans la voie (donc chiffre), suivi du type de voie (qui ne prend normalement pas de majuscule en typographie française), les mots suivants en prennent le plus souvent sauf articles, prépositions, ... J'y réfléchis. Je conçois que c'est confortable de taper en minuscules sans se préoccuper de ce qu'on veut avoir finalement en majuscules (qui se mettent automatiquement), mais je ne m'y suis pas encore lancé pour les libellés d'adresses. A voir !
Il y a déjà une zone de liste (ComboBox) pour ce choix.
En effet. Il faut aussi savoir comment cela doit fonctionner : si les abonnements "périodiques" sont sur des périodes calendaires fixes (trimestre, semestre, année) ou sur des durées équivalentes. Pour gérer les abonnements, ce ne sera pas la même chose. Et ceux en nombre de séances, implique que les séances soient comptabilisées ailleurs... Je note tes nouvelles précisions relatives à la feuille abonnement... On pourra bâtir des alertes lorsqu'on pourra définir des dates précises de déclenchement. Comme je l'ai indiqué, la façon commune pour ces signalisations réside dans les mises en formes conditionnelles (changement de couleur sur un critère pré-défini par exemple). Je ne conseillerais pas les "clignotants", qui tiennent un peu trop du gadget et se révèlent plutôt encombrants à l'usage, mais il est possible de doubler les MFC par une alerte à l'ouverture du classeur pour signaler les problèmes à régler (et là on peut voir pour un "clignotant" : pas gênant si on l'arrête pour pouvoir travailler). Bon ! Je revois d'abord les petits bogues sur les contrôles et te mettre quelques indications plus précises pour t'y retrouver dans l'imbrication des procédures. Bonne fin de soirée. | |||||||
Publicité | ||||||||
| ||||||||
Les bons plans du moment PC Astuces | Tous les Bons Plans | |||||||||||||||
|