![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Super Moderator
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 7 639
|
Utilisez ce fil de discussions pour commenter et échanger sur Multi Mini BD
Gestion simplifiée de petites bases de données dans un même classeur. Navigateur. Recherches et tris. Analyses des données. Outils de maintenance. Mini-guide. Cette version supporte maintenant les images, les adresses Email et Internet
__________________
Pascal(Visitez mon Blog Photo)Vous pouvez devenir "Supporter XLD", plus de renseignements ICI |
|
|
|
| ANNONCES | |||
|
|
|
|
#5 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2007
Messages: 13
|
Bonjour,
Vraiment un beau travail ! Je me sens un peu honteux de poser mes questions, mais je me lance : - Comment modifier la BD pour y intégrer des champs avec des listes ? - Y at'il moyen d'inclure des champs avec liste en cascade (permettant de voir apparaître dans ces listes certaines informations - qui peuvent être diiférentes - en fonction d'éléments sélectionnés) ? Merci beaucoup. David |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 8
|
Bonsoir.
Pour modifier le Navigateur afin d'y intégrer des listes déroulantes il faudra passer par le code VBA... Vous y trouverez la section [PERSONNALISATION] qui explique la marche à suivre pour "personnaliser" MMBD. ( Les exemples utilisent le cas des listes déroulantes ). Pour les listes en cascade(s), ce n'est pas prévu pour le moment. Une piste toutefois... Toujours dans la "personnalisation" il faudrait tester les changements effectués dans la liste d'origine et en fonction du résultat charger la liste de destination. Didier. |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2007
Messages: 13
|
Bonjour et merci Didier,
J'ai bien fait les modifications des listes déroulantes dans la partie "Personnalisation". Tout fonctionne, c'est magnifique !!! ![]() Là où cela se corse pour moi, c'est que je voudrais que les informations présentes dans la liste déroulante "MOTIFS" puissent varier en fonction de l'Item sélectionné dans la liste "PRESENCE". Par exemple, si je sélectionne dans la liste déroulante "PRESENCE" l'Item "Interme", seuls les Items Entité, Groupe, Multisites apparaissent dans la liste "MOTIFS" et non les autres Items. Que dois-je faire ??? Merci pour votre aide... David ![]() '-------------------------------- 'Mettre le nom de la 8ème colonne à personnaliser. PersoNomColonne = "PRESENCE" 'Ici on détermine automatiquement le numéro de la colonne à personnaliser. '( La première colonne n'est pas personnalisable ). For BoucleCol = 8 To NbColonnes If Cells(1, BoucleCol) = PersoNomColonne Then PersoNuméroColonne = BoucleCol Next BoucleCol 'Ensuite on effectue le traitement de la personnalisation If NomBD = PersoNomBD And Cells(1, PersoNuméroColonne) = PersoNomColonne Then 'Personnalisation 'Par exemple : Création d'une liste de choix Controls("Champ" & PersoNuméroColonne).Clear Controls("Champ" & PersoNuméroColonne).AddItem "Interne" Controls("Champ" & PersoNuméroColonne).AddItem "XXXX" Controls("Champ" & PersoNuméroColonne).AddItem "YYYY" Controls("Champ" & PersoNuméroColonne).AddItem "Externe" Controls("Champ" & PersoNuméroColonne).AddItem "ZZZZZ" 'C'est dans cet ordre que les items de la liste apparaitront. 'Pour changer la taille du Control. Controls("Champ" & PersoNuméroColonne).Width = 100 Controls("Champ" & PersoNuméroColonne).Height = 16 'Pour activer la liste déroulante. Controls("Champ" & PersoNuméroColonne).ShowDropButtonWhen = fmShowDropButtonWhenAlways Else End If '-------------------------------- 'Mettre le nom de la 9ème colonne à personnaliser. PersoNomColonne = "MOTIFS" 'Ici on détermine automatiquement le numéro de la colonne à personnaliser. '( La première colonne n'est pas personnalisable ). For BoucleCol = 9 To NbColonnes If Cells(1, BoucleCol) = PersoNomColonne Then PersoNuméroColonne = BoucleCol Next BoucleCol 'Ensuite on effectue le traitement de la personnalisation If NomBD = PersoNomBD And Cells(1, PersoNuméroColonne) = PersoNomColonne Then 'Personnalisation 'Par exemple : Création d'une liste de choix Controls("Champ" & PersoNuméroColonne).Clear Controls("Champ" & PersoNuméroColonne).AddItem "Entité" Controls("Champ" & PersoNuméroColonne).AddItem "Groupe" Controls("Champ" & PersoNuméroColonne).AddItem "Multisites" Controls("Champ" & PersoNuméroColonne).AddItem "Emploi salarié" Controls("Champ" & PersoNuméroColonne).AddItem "RTT" Controls("Champ" & PersoNuméroColonne).AddItem "Vacances" Controls("Champ" & PersoNuméroColonne).AddItem "Congés" Controls("Champ" & PersoNuméroColonne).AddItem "Retraite" Controls("Champ" & PersoNuméroColonne).AddItem "Nada" 'C'est dans cet ordre que les items de la liste apparaitront. 'Pour changer la taille du Control. Controls("Champ" & PersoNuméroColonne).Width = 100 Controls("Champ" & PersoNuméroColonne).Height = 16 'Pour activer la liste déroulante. Controls("Champ" & PersoNuméroColonne).ShowDropButtonWhen = fmShowDropButtonWhenAlways Else End If |
|
|
|
|
|
#8 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 8
|
Bonsoir.
Le code que vous avez mis ci-dessus est dèjà un code de personnalisation. Je ne peux pas résoudre directement votre problème sans connaitre la stucture exacte de votre BdD... Toutefois j'ai intégré votre pb dans la BdD exemple de MMBD 5.00 ( BD_Bidon ) : J'ai ajouté une nouvelle colonne dans la BdD : Perso3 qui servira de liste "cascade" modifiée en fonction du contenu du champ Perso2. J'ai "déclaré" une nouvelle variable dans le code VBA du Navigateur : Dim PersoRéfColOrigine As Integer ( A mettre avec les autres déclarations - En haut du code VBA ) J'ai remplacé le code VBA du Navigateur, Section [PERSONNALISATION] par le code ci-dessous... '===DEBUT DE LA MODIFICATION DU CODE============================================== ============ '-------------------------------- 'Mettre le nom de la 2ème colonne à personnaliser. PersoNomColonne = "Perso2" 'Ici on détermine automatiquement le numéro de la colonne à personnaliser. '( La première colonne n'est pas personnalisable ). For BoucleCol = 2 To NbColonnes If Cells(1, BoucleCol) = PersoNomColonne Then PersoNuméroColonne = BoucleCol Next BoucleCol 'Ensuite on effectue le traitement de la personnalisation If NomBD = PersoNomBD And Cells(1, PersoNuméroColonne) = PersoNomColonne Then 'Personnalisation 'Par exemple : Création d'une liste de choix Controls("Champ" & PersoNuméroColonne).Clear Controls("Champ" & PersoNuméroColonne).AddItem "Masculin" Controls("Champ" & PersoNuméroColonne).AddItem "Féminin" Controls("Champ" & PersoNuméroColonne).AddItem "Autre" 'C'est dans cet ordre que les items de la liste apparaitront. 'Pour changer la couleur du fond et du texte. Controls("Champ" & PersoNuméroColonne).BackColor = vbYellow Controls("Champ" & PersoNuméroColonne).ForeColor = vbRed 'Pour activer la liste déroulante. Controls("Champ" & PersoNuméroColonne).ShowDropButtonWhen = fmShowDropButtonWhenAlways Else End If '-------------------------------- 'Mettre le nom de la 3ème colonne à personnaliser. PersoNomColonne = "Perso3" 'Ici on détermine automatiquement le numéro de la colonne à personnaliser. '( La première colonne n'est pas personnalisable ). For BoucleCol = 2 To NbColonnes If Cells(1, BoucleCol) = PersoNomColonne Then PersoNuméroColonne = BoucleCol Next BoucleCol 'Ensuite on effectue le traitement de la personnalisation If NomBD = PersoNomBD And Cells(1, PersoNuméroColonne) = PersoNomColonne Then 'Personnalisation 'Pour changer la couleur du fond et du texte. Controls("Champ" & PersoNuméroColonne).BackColor = vbBlue Controls("Champ" & PersoNuméroColonne).ForeColor = vbYellow 'Pour activer la liste déroulante. Controls("Champ" & PersoNuméroColonne).ShowDropButtonWhen = fmShowDropButtonWhenAlways '--------------------------------------------------------------- ' 'On souhaite que cette liste se modifie en fonction du contenu 'de la liste précédente. Il faut pour cela créer une série de procédures. 'Ces procédures sont à placer tout en bas du code VBA... ' '--------------------------------------------------------------- 'Sub Champ11_Change() 'Il faut connaitre le No du champ d'origine ' 'If NomBD = PersoNomBD Then PersoChamp11 ' 'End Sub '----- 'Sub Champ11_Click() 'Il faut connaitre le No du champ d'origine ' 'If NomBD = PersoNomBD Then PersoChamp11 ' 'End Sub '----- 'Sub PersoChamp11() 'Il faut connaitre le No du champ d'origine ' 'If NomBD <> PersoNomBD Then Exit Sub ' ' PersoRéfColOrigine = 11 'Il faut connaitre le No de la colonne du champ d'origine de l'évènement ' PersoNuméroColonne = 12 'Il faut connaitre le No de la colonne du champ "cascade" ' ' Controls("Champ" & PersoNuméroColonne).Clear ' ' If Controls("Champ" & PersoRéfColOrigine) = "Masculin" Then ' Controls("Champ" & PersoNuméroColonne).AddItem "Cas MA" ' Controls("Champ" & PersoNuméroColonne).AddItem "Cas MB" ' Controls("Champ" & PersoNuméroColonne).AddItem "Cas MC" ' End If ' ' If Controls("Champ" & PersoRéfColOrigine) = "Féminin" Then ' Controls("Champ" & PersoNuméroColonne).AddItem "Cas F1" ' Controls("Champ" & PersoNuméroColonne).AddItem "Cas F2" ' Controls("Champ" & PersoNuméroColonne).AddItem "Cas F3" ' End If ' 'End Sub '--------------------------------------------------------------- Else End If '-------------------------------- 'On fait ensuite la même chose pour la 4ème colonne à personnaliser. '-------------------------------- 'Puis pour les colonnes suivantes... '-------------------------------- '.../... '-------------------------------- 'Et pour une autre BD. '-------------------------------- End Sub 'NE JAMAIS SUPPRIMER CETTE LIGNE Sub Champ11_Change() 'Il faut connaitre le No du champ d'origine If NomBD = PersoNomBD Then PersoChamp11 End Sub Sub Champ11_Click() 'Il faut connaitre le No du champ d'origine If NomBD = PersoNomBD Then PersoChamp11 End Sub Sub PersoChamp11() 'Il faut connaitre le No du champ d'origine If NomBD <> PersoNomBD Then Exit Sub PersoRéfColOrigine = 11 'Il faut connaitre le No de la colonne du champ d'origine de l'évènement PersoNuméroColonne = 12 'Il faut connaitre le No de la colonne du champ "cascade" Controls("Champ" & PersoNuméroColonne).Clear If Controls("Champ" & PersoRéfColOrigine) = "Masculin" Then Controls("Champ" & PersoNuméroColonne).AddItem "Cas MA" Controls("Champ" & PersoNuméroColonne).AddItem "Cas MB" Controls("Champ" & PersoNuméroColonne).AddItem "Cas MC" End If If Controls("Champ" & PersoRéfColOrigine) = "Féminin" Then Controls("Champ" & PersoNuméroColonne).AddItem "Cas F1" Controls("Champ" & PersoNuméroColonne).AddItem "Cas F2" Controls("Champ" & PersoNuméroColonne).AddItem "Cas F3" End If End Sub '===FIN DE LA MODIFICATION DU CODE============================================== ============== ( Attention : Ce code ne teste pas si les données sélectionnées/saisies dans Perso3 sont compatibles avec celles de Perso2 ). Ces modifications fonctionnent dans MMBD 5.00 qui, du coup, vient de passer en version 5.01. A vous d'adapter cela à votre BdD. ( En cas de pb n'hésitez pas à laisser un message ici ). Bon Courage et A+ Didier. |
|
|
|
|
|
#10 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2007
Messages: 5
|
Bonsoir Didier,
J'ai beaucoup apprécié ta MMBd, et je me suis amusé à la modifier largement, mais j'atteint les limite de ma modeste compétence sur deux points : - En cliquant sur le bouton "Champs image" que j'utilise en format d'un de mes champs du formulaire, je souhaiterais que le fenetre explorateur s'ouvre directement dans le dossier qu regroupe toutes les photos de ma base; - Et d'autre part, pour pouvoir trimballer cette base sur diverses machine, j'aimerais pouvoir intégrer toutes les adresses de ces photos en adresses relatives (references adresses en fonction de la position de la feuille excel de la base, et non de l'emplacement sur le PC) Peux tu me donner un coup de main la dessus ? Merci |
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 8
|
Bonjour Imico, le forum.
Pour tenter de répondre à ton problème, je te propose… Sur l'onglet MMBD_Guide : ( A déprotèger au préalable - Il n'y a pas de mot de passe ) Mettre en Cellule M2 Chemin par défaut des fichiers images Cellule M3 D:\Mes images Cellule M4 Chemin par défaut des fichiers attachés Cellule M5 E:\Mes fichiers Dévérouiller les cellules M3 et M5 ( Sinon on ne pourra pas en changer le contenu ). ( L'onglet se reprotègera automatiquement ). Dans le code VBA du Navigateur : Déclarer une nouvelle variable ( Au début du code du Navigateur ) Dim CheminFichiers as String Ajouter la ligne de code dans la procédure Sub CheminImage_Click() ( Juste en dessous du Sub ) CheminFichiers = ThisWorkbook.Sheets("MMBD_Guide").Range("M3").Valu e Ajouter la ligne de code dans la procédure Sub CheminFichierAttaché_Click() ( Juste en dessous du Sub ) CheminFichiers = ThisWorkbook.Sheets("MMBD_Guide").Range("M5").Valu e Dans le code de la procédure Function SélectionnerFichier() Remplacer la ligne .lpstrInitialDir = "C:\" par la ligne .lpstrInitialDir = CheminFichiers Cela devrait pouvoir répondre à ta première demande. Pour la suite, je ne suis pas sur de bien comprendre mais peut être que ce que je viens de te proposer te servira de piste Bon courage et A+ Didier. Complément d'info. Le contenu des cellules M3 et M5 est bien évidemment à adapter en fonction des adresses des fichiers... Dernière modification par DidierC 02/12/2007 à 16h59. |
|
|
|
|
|
#15 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: novembre 2007
Messages: 5
|
Merci et bravo :
C'est parfait : cela fonctionne parfaitement, y compris en mettant une adresse relative (..\xxx\yyy) dans les cellule M3 et M5 En revanche, je n'arrive pas à retourner une adresse relative dans la cellule cible du bouton formaté en "Image". Je n'obtiens qu'une adresse absolue du type c:\zzz\www\xxxx\yyy... Laurent |
|
|
|
| ANNONCES | |
![]() |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| Multi Tache - Multi Processus - Multi thread | MikeB | Forum Excel | 0 | 13/12/2006 13h52 |
| Multi Mini BD | franck17 | Forum Excel | 0 | 08/11/2006 18h38 |
| Evolution de l'outil Multi Mini BD? Gestion simplifiée de BDD sous Excel | yochma23 | Forum Excel | 6 | 01/10/2006 20h00 |
| total multi feuilles +multi condition | Luc | Forum Excel | 5 | 15/04/2006 13h36 |
| Listbox multi colonnes multi sélections | Gipéhel | Forum Excel | 5 | 13/02/2006 16h09 |