Multi Mini BD

chareos

XLDnaute Nouveau
Re : Multi Mini BD

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:eek: (oui oui ça existe), je ne sais pas comment faire :confused:, 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.:eek:
 

KIM

XLDnaute Accro
Re : Multi Mini BD

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
 

DidierC

XLDnaute Nouveau
Re : Multi Mini BD

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
 

chareos

XLDnaute Nouveau
Re : Multi Mini BD

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.:confused:
 

DidierC

XLDnaute Nouveau
Re : Multi Mini BD

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.
 

chareos

XLDnaute Nouveau
Re : Multi Mini BD

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.:D
 

Pièces jointes

  • RechercheMotDansFeuilles.zip
    13.2 KB · Affichages: 285
  • RechercheMotDansFeuilles.zip
    13.2 KB · Affichages: 300
  • RechercheMotDansFeuilles.zip
    13.2 KB · Affichages: 307
  • Sans titre.JPG
    Sans titre.JPG
    23.9 KB · Affichages: 259
  • Sans titre.JPG
    Sans titre.JPG
    23.9 KB · Affichages: 280
  • Sans titre.JPG
    Sans titre.JPG
    23.9 KB · Affichages: 278

DidierC

XLDnaute Nouveau
Re : Multi Mini BD

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
'===================================================
 

chareos

XLDnaute Nouveau
Re : Multi Mini BD

Bonjour Didier, le forum.

@ Didier
Merci de ta réponse si rapide et si précise.

J'effectue les modifs et je te tiens au courant.

Cordialement.
 

DidierC

XLDnaute Nouveau
Re : Multi Mini BD

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.
 

mickmicks33

XLDnaute Nouveau
Re : Multi Mini BD

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

newreply.php


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
 

Pièces jointes

  • bddbeta.jpg
    bddbeta.jpg
    96.9 KB · Affichages: 324
Dernière édition:

DidierC

XLDnaute Nouveau
Re : Multi Mini BD

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.ListIndex, 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.
 

mickmicks33

XLDnaute Nouveau
Re : Multi Mini BD

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 ;)
 

mickmicks33

XLDnaute Nouveau
Re : Multi Mini BD

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?
 

DidierC

XLDnaute Nouveau
Re : Multi Mini BD

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.