Moteur de recherche + Fonction modifier VBA-USERFORM

Smaily

XLDnaute Junior
Bonjour,

Je souhaite créer une sorte de moteur de recherche en VBA, cela dit je bloque un peu.
Le but de cette macro est de rechercher une ligne de la feuille "Répertoire" comportant la donnée recherchée. (une sorte de filtre)

Merci d'avance pour le coup de main.
Cordialement.
 

Pièces jointes

  • METZ.xlsm
    48.4 KB · Affichages: 35

Smaily

XLDnaute Junior
Bonjour,
Ce fichier m'a l'air d’être un super outil, bien détaillé et bien construit mais mes bases en programmation sont faibles. Je n'y comprends pas grand chose... J'ai beau faire une copie en arrangeant par rapport à mon tableau de base mais rien n'y fait...
 

Smaily

XLDnaute Junior
Dans la partie UserForm5, vous trouverez quelques lignes permettant de trouver l'emplacement de la référence que l'on veut modifier.
Cependant, le programme modifie la colonne entière au lieu de modifier seulement la référence sélectionné au préalable.
Merci d'avance pour le coup de main.
 

Pièces jointes

  • METZ.xlsm
    40.7 KB · Affichages: 10

Dranreb

XLDnaute Barbatruc
Vous pouvez aussi utiliser ce classeur pour élaborer rapidement un UserForm de mise à jour et consultation correct.
Remarque: dans votre classeur joint il n'y a aucune tentative d'utilisation du complément CBxLCtlA.xlam, dont le projet CLsCAs n'est d'ailleurs pas en référence.
 

Pièces jointes

  • GénérateurUFm.xlsm
    200.2 KB · Affichages: 46
Dernière édition:

Smaily

XLDnaute Junior
Oui ou bien même insérer la fonction "Changement d'emplacement" dans la partie "Rechercher" comme disait @mapomme.
Cela reviendrait alors à créer un bouton modifier dans le UserForm de recherche. Ce bouton modifier servirait à changer l'emplacement de la référence recherchée.
 

Smaily

XLDnaute Junior
Pour ce qui est du dernier fichier que vous m'avez envoyé, je n'arrive pas à compiler n'y à repérer le chemin du fichier à modifier...
pb.png
 

Smaily

XLDnaute Junior
Ah effectivement, je n'avais pas fait attention...
Mais impossible de valider.
En fait, je pense que la réponse à mon problème est beaucoup plus simple que ces lignes de codes. Je dois juste avoir un problème dans mes boucles...
 

Pièces jointes

  • Sans titre.png
    Sans titre.png
    150.5 KB · Affichages: 7

Dranreb

XLDnaute Barbatruc
Un début de code possible pour l'UFmMàJ :
VB:
Option Explicit
Private WithEvents CL As ComboBoxLiées, WithEvents CA As ControlsAssociés, LCou As Long, TVL()
Private Sub UserForm_Initialize()
   Set CL = CLsCAs.Création.ComboBoxLiées: CL.Plage Feuil1
   Set CA = CLsCAs.Création.ControlsAssociés: Set CA.Colonnes = CL.Colonnes
   CL.Add Me.CBxDate, "Date"
   CL.Add Me.CBxRéf, "Référence"
   CA.Add Me.TBxDsgn, "Désignation"
   CA.Add Me.TBxProv, "Provenance"
   CA.Add Me.TBxDest, "Destination"
   CA.Add Me.TBxEmpl, "Emplacement"
   CL.CouleurSympa
   CL.Actualiser
   End Sub
Private Sub CL_Change(ByVal Complet As Boolean, ByVal NbrLgn As Long)
   If NbrLgn = 0 And Complet Then
      CBnValider.Enabled = True: CBnValider.Caption = "Ajouter"
   ElseIf NbrLgn = 1 Then
      CBnValider.Enabled = True: CBnValider.Caption = "Modifier"
   Else
      CBnValider.Enabled = False: CBnValider.Caption = "…"
      End If
   LCou = 0
   ReDim TVL(1 To 1, 1 To CL.Colonnes.Count)
   CA.ValeursDepuis TVL
   End Sub
Private Sub CL_BingoUn(ByVal Ligne As Long)
   LCou = Ligne
   TVL = CL.Lignes(LCou).Range.Value
   CA.ValeursDepuis TVL
   End Sub
Private Sub CBnEchap_Click(): If CL.ChangéÀLEchap Then Exit Sub
   CL.Nettoyer
   End Sub
Private Sub CBnValider_Click()
   CA.ValeursVers TVL
   If LCou = 0 Then
      CL.ValeursVers TVL
      CL.Lignes.Add.Range.Value = TVL
      CL.Actualiser
   Else
      CL.Lignes(LCou).Range.Value = TVL
      End If
   End Sub
Private Sub CBnSuppr_Click()
   If LCou = 0 Then Exit Sub
   CL.Lignes(LCou).Delete
   CL.Actualiser
   End Sub
Attention, important: implique que la plage ait fait l'objet d'une mise sous forme de tableau. Sinon on ne peut pas utiliser les titres des colonnes en guise de spécifications de colonnes aux Add des objets CL et CA, ni leur propriété Colonnes ni la Lignes de CL.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarque: s'il faut pouvoir rechercher un élément selon d'autres critères que la date et la référence, ça ne poserait pas de problème de remplacer les TBx par des CBx et d'en confier la charge à CL au lieu de CA. Hormis dans la UserForm_Initialize ça ne changerait rien dans le reste du code à condition qu'il ne faille pas aussi pouvoir les changer sur une ligne existante. (mais même alors il y aurait une solution avec un bouton supplémentaire CBnChgId "À changer…" qui stopperait CL pour qu'il n'y ait plus de recherche)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 223
Membres
103 159
dernier inscrit
FBallea