![]() |
|
Forum
|
|
|
#16 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2008
Messages: 5
|
Bonsoir le forum.
Excellent code vba et je m'en sert pour gérer un parc info d'une centaine de machine avec tout ce qui va avec. Mon souci est que je gère d'autre type de matèriel sur d'autre feuilles et que je souhaiterais inclure un champ de recherche global sans être obligé d'aller selectionner d'abord la feuille en question. Vrai débutant en VBA (oui oui ça existe), je ne sais pas comment faire , j'ai tenté de chercher par moi même, j'ai bien trouvé la fonctione recherchev mais après j'ai tenté sans succès.Merci beaucoup de votre aide et n'hésiter si je ne suis pas très clair. ![]() |
|
|
|
| ANNONCES | |||
|
|
|
|
#17 (permalink) |
|
XLDnaute Impliqué
Date d'inscription: avril 2005
Messages: 553
|
Bonjour le Forum, Bonjour Didier,
@Didier, Je n'avais pas de soucis avec ton fichier MultiMiniBD. J'utilise depuis quelque mois Excel 2002 SP3. En reprenant ton fichier d'origine, Multi_Mini_BD V 5_01 ou Multi_Mini_BD V 5 ou Multi_Mini_BD V 4 et en clicquant sur l'onglet "Navigation Table", j'ai le message d'erreur suivant: "Erreur 380, Impossible de définir la propriété RowSource, Valeur de propriété non valide" dans Sub RechercheGo_Click() ligne: RechercheTable.RowSource="MMBD_Extraction" Meme message quand je clicque sur le menu avec ListIndex (NomBD_ListIndex=0) Merci de votre aide Bien cordialement KIM |
|
|
|
|
|
#18 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 12
|
Bonjour Chareos, Kim, le Forum.
Désolé pour le retard à l'allumage. @ Chareos Votre demande me semble assez difficile à mettre en place sous MMBD. ( Celui-ci n'a pas été conçu dans cet esprit ). Par ailleurs nous serions, dans ce cas, plus proche de la gestion complexe de BdD. Je suis pas sur qu'Excel soit le meilleur outil pour ce genre d'opérations... @ Kim Surprenant... C'est la première fois que cette erreur m'est rapportée. Sur les fichiers d'origine ? As-tu essayé sur une autre machine ? Bon courage à tous et A+ Didier |
|
|
|
|
|
#19 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2008
Messages: 5
|
Bon jour le forum,
Merci de votre réponse. J'ai trouvé une macro qui permet, en ouvrant une nouvelle fenêtre d'effectuer la recherche sur l'ensemble du classeur mais par contre j'aimerais que la fenêtre de MMDB se ferme lorsque j'effectue la recherche???? J'espère être clair dans ma demande. ![]() |
|
|
|
|
|
#20 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 12
|
Bonjour Chareos, le Forum.
La macro en question est peut être utilisable dans MMBD... Pouvez vous la mettre à notre disposition ? ( Si celle ci est 'libre' et avec les références de l'auteur si celles-ci sont disponibles ). Bon courage et A+ Didier. |
|
|
|
|
|
#21 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2008
Messages: 5
|
Bonsoir Didier, le forum,
désolé du retard de ma réponse. Je vous joint le fichier excel et une image de ce que j'ai fait sur MMdb. Concernant l'origine de ce fichier je l'ai trouvé parmi d'autre mais je n'ai pas retrouver l'auteur (pas de nom dans le script) et il n'y a aucun code sur le script. merci de votre aide pour le newbie que je suis. ![]() |
|
|
|
|
|
#22 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 12
|
Bonjour Chareos, le Forum.
@ Chareos ( et aux autres personnes que cela peut interesser ). Ci-dessous la macro adaptée pour fonctionner avec MMBD... La macro cherche une variable ( à saisir ) dans l'ensemble des BdD du classeur et ce, quelque soit la BdD, la ligne ou la colonne. ( La navigation se fait au fil des résultats trouvés ) Coller cette macro dans le Navigateur. Créer un bouton sur le Navigateur. ( Je conseille de le mettre près de la ComboBox de changement de BdD ). Y accrocher la macro. Cela devrait fonctionner... ( j'intègrerai ça en standard dans une prochaine version de MMBD ) Bon courage à tous et A+ Didier. '================================================= == Sub RechercherDansFeuilles() Dim Cherche1 As String Dim Trouvé1 As Range Dim Cherche2 As String Dim Trouvé2 As Range Dim i As Integer Cherche1 = "" Set Trouvé1 = Range("A2") Cherche2 = "" Set Trouvé2 = Range("A2") Cherche1 = InputBox("Valeur à rechercher dans les bases de données de ce classeur..." & Chr$(13) & Chr$(13) & _ "( Ne pas utiliser les noms des colonnes )", "Multi Mini BD") If Cherche1 = "" Or Cherche1 = " " Or Cherche1 = " " Or Cherche1 = " " Then Exit Sub MultiPage1.Value = 0 NomBD.Enabled = False For i = 1 To Sheets.Count If ThisWorkbook.Sheets(i).Name = "MMBD_Extraction" Or _ ThisWorkbook.Sheets(i).Name = "MMBD_Analyse" Or _ ThisWorkbook.Sheets(i).Name = "MMBD_Guide" Then GoTo NePasChercher Sheets(i).Select: Set Trouvé1 = Cells.Find(What:=Cherche1) If Not Trouvé1 Is Nothing Then If Trouvé1.Row = 1 Then MsgBox Cherche1 & " = Nom de colonne " & Chr$(13) & Chr$(13) & "Fin de la recherche...", , "Multi Mini BD" NomBD.Enabled = True ThisWorkbook.Sheets(NomBD.Text).Activate RetournerInfo Exit Sub End If Trouvé1.Activate With ActiveCell.Characters(Start:=InStr(1, Selection, Left(Cherche1, 1), 1), Length:=Len(Cherche1)) NomBD.Text = ThisWorkbook.Sheets(i).Name Cells(Trouvé1.Row, 1).Activate RetournerInfo Trouvé1.Activate End With ChercherEncore: Cherche2 = MsgBox("Poursuivre la recherche de : " & Cherche1 & " ?", vbYesNo, "Multi Mini BD") If Cherche2 = vbYes Then Set Trouvé2 = ActiveSheet.UsedRange.FindNext(After:=ActiveCell) If Trouvé2.Row = 1 Then MsgBox Cherche1 & " = Nom de colonne " & Chr$(13) & Chr$(13) & "Fin de la recherche...", , "Multi Mini BD" NomBD.Enabled = True ThisWorkbook.Sheets(NomBD.Text).Activate RetournerInfo Exit Sub End If If Trouvé2 Is Nothing Then Cells(Trouvé2.Row, 1).Activate RetournerInfo Trouvé2.Activate Else Cells(ActiveCell.Row, 1).Activate End If Else NomBD.Text = ThisWorkbook.Sheets(i).Name Cells(ActiveCell.Row, 1).Activate RetournerInfo NomBD.Enabled = True Exit Sub End If If Trouvé2.Address <> Trouvé1.Address Then Trouvé2.Activate With ActiveCell.Characters(Start:=InStr(1, Selection, Left(Cherche1, 1), 1), Length:=Len(Cherche1)) NomBD.Text = ThisWorkbook.Sheets(i).Name Cells(Trouvé2.Row, 1).Activate RetournerInfo Trouvé2.Activate End With GoTo ChercherEncore End If End If NePasChercher: Next i If ActiveCell.Row = 1 Then Cells(ActiveCell.Row + 1, 1).Activate Else Cells(ActiveCell.Row, 1).Activate End If NomBD.Enabled = True ThisWorkbook.Sheets(NomBD.Text).Activate RetournerInfo MsgBox "Fin de la recherche...", , "Multi Mini BD" End Sub '================================================= == |
|
|
|
|
|
#25 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 12
|
Bonjour Mickeey, le Forum.
MMBD permet de gérer jusqu'a 30 champs sur le même Userform. ( Au dela il me semble qu'il devient difficile de suivre toutes les infos sur un même écran...). Le code de MMBD est "ouvert". Pour ajouter des champs il faut : Modifier le dessin de l'userform : ajouter les champs - Les nommés ( mêmes propriétés/structures que pour les champs dèjà existants ). Modifier dans le code la référence au nombre maximum de champs gérés par MMBD. Bon courage. Didier. |
|
|
|
|
|
#26 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2008
Messages: 3
|
Bijour à tous les forumeurs et les xldeurs
![]() Effectivement ce fichier est vraiment utile! J'admire le travail et je félicite l'auteur! L'utilisation est presque parfaitement adaptée à mon utilisation. J'ai cherché un moyen pour ajouter un tri mais le code est assez complexe. J'ai du mal a situer les recherches et les transferts dans la listbox. En pièce jointe, vous avez ce que j'aimerai faire. En haut a droite. Si quelqu'un pouvez m'indiquer l'endroit de la macro que je dois modifier et bien sur avant tout si c'est faisable avec ce pti fichier qui est déjà trés complet http://www.excel-downloads.com/forum...ote=1&p=577421 Merci d'avance et j'espère que je ne passerai pas pour un demeuré. car j'ai pu voir que sur ce forum. On est loin des (somme(..) et des simples fonction SI) lol Dernière modification par mickmicks33 05/08/2008 à 15h19. |
|
|
|
|
|
#27 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 12
|
Bonjour Mickmick33, Le Forum.
Un autre mode de recherche ? Dans l'onglet "Navigation Table" de l'UserForm Navigateur : Créer un ComboBox et le nommer Recherche2Champ1 Créer un ComboBox et le nommer Recherche2ListeColonnes Créer un ListBox et le nommer Recherche2Table Veuiller à ce que les boxes soient visibles. ( Au besoin diminuer la largeur de la ListBox RechercheTable dèjà existante ) Dans le code du Navigateur à la section [CHANGEMENT DE PAGE]inserer la ligne ci-dessous : InitialiserRecherche2 '=============================================== ' CHANGEMENT DE PAGE '=============================================== .../... If MultiPage1.Value = 1 Then Champ1Mode = False Rechercher CalculerChampListe InitialiserRecherche2 '< Inserer cette ligne RechercheChamp1.SetFocus End If .../... Puis inserer les lignes ci-dessous dans le code du Navigateur... '==================== Sub InitialiserRecherche2() Recherche2Champ1.Clear Champ1.RowSource = "A2:A" & NbLignes + 1 Recherche2Champ1 = Champ1 ReDim Tampon(0) Tampon = RecupererDoublons(ActiveSheet.Range("A2:A" & NbLignes + 1).Value, 1) If IsArray(Tampon) Then Recherche2Champ1.List = Tampon On Error Resume Next For Each Item In Recherche2Champ1 Recherche2Champ1.List = TrierListe(Recherche2Champ1.List) Next Item Recherche2Champ1.ListIndex = 0 Recherche2ListeColonnes.Clear For BoucleCol = 1 To NbColonnes Recherche2ListeColonnes.AddItem Cells(1, BoucleCol) Next BoucleCol Recherche2ListeColonnes.ListIndex = 0 ChargerRechercheTable2 End Sub Sub ChargerRechercheTable2() Recherche2Table.Clear On Error Resume Next Dim MaListe(30, 2) 'Limite du nombre d'informations en retour Compteur = -1 For BoucleLig = 2 To NbLignes + 1 If Cells(BoucleLig, 1) = Recherche2Champ1 Then Compteur = Compteur + 1 MaListe(Compteur, 0) = BoucleLig MaListe(Compteur, 1) = Cells(BoucleLig, Recherche2ListeColonnes.ListIndex + 1) End If Next BoucleLig Recherche2Table.ColumnCount = 2 L01 = Str(Application.WorksheetFunction.Max(30, 10 + Round(Cells(1, 31).Width))) LRG = "0;" & ";" & L01 Recherche2Table.ColumnWidths = LRG Recherche2Table.List() = MaListe End Sub Sub Recherche2Champ1_Change() ChargerRechercheTable2 End Sub Sub Recherche2ListeColonnes_Change() ChargerRechercheTable2 End Sub Sub Recherche2Table_Change() On Error Resume Next Cells(Recherche2Table.List(Recherche2Table.ListInd ex, 0), 1).Activate Curseur = ActiveCell.Row End Sub Sub Recherche2Table_DblClick(ByVal Cancel As MSForms.ReturnBoolean) MultiPage1.Value = 0 End Sub '==================== Cela devrait fonctionner. Vous remarquerez que la liste des informations en retour est limitée à 30. ( Ceci pour préserver les ressources ). Il ne reste plus qu'a peaufiner l'habillage... J'intègrerai cette évolution en standard dans une prochaine version de MMBD. Bon courage. Didier. |
|
|
|
|
|
#28 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2008
Messages: 3
|
Re bijour, c'est vraiment bien ce que vous avez réalisé!
Par contre, je m'étais peut être mal expliqué. Mais l'idéal aurait été d'avoir le retour de toute les colonnes dans la listbox après avoir sélectionné dans les deux champs la methode de tri. Par exemple, je choisi Didier en nom, je choisi de trier par Perso1. Dans la listbox, on aurait trier par ordre alphabetique ou par ordre croissant pour des dates : Didier 1 999 999,00 ...... Lundi Masculin En tout cas, merci pour cette modif rapide, et de penser a l'intégrer par la suite pour ceux qui en aurait besoin par la suite comme moi ![]() |
|
|
|
|
|
#29 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: juillet 2008
Messages: 3
|
Re,
J'ai travaillé sur la macro de didier et ça marche bien mais finalement, en combinant la recherche dans la base et le tri, on arrive a avoir ce que je voulais. En fait ce qui est dommage, c'est quand on utilise la navigation table pour faire un tri. ça marche nickel mais si on double click sur une ligne pour voir la ligne complète dans les champs bé on perd le tri (quand on fait suivant ou précédent) Peut être on pourrait afficher les champs de la page 1 dans la page deux comme ça sans double cliquer, on voit dans les champs les valeurs de la sélection dans la listbox page 2 y aurait il moyen de visualiser un même champ sur deux pages différentes? |
|
|
|
|
|
#30 (permalink) |
|
XLDnaute Nouveau
Date d'inscription: avril 2005
Messages: 12
|
Bonjour Mickmicks33, Le Forum.
Ok. Je n'avais pas très bien saisi la demande. Cette approche est un peu plus compliqué à mettre en place dans MMBD et il est difficile d'expliquer ou et comment modifié le code sans tout faire se planter... Je viens de terminer la dernière version de MMBD ( 5.10 ). Celle ci prend en compte ces contraintes. Je la propose de ce pas afin qu'elle soit disponible en téléchargement. Cela devrait être disponible prochainement. Didier. |
|
|
|
| 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 |