IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Formulaire recherche mot clé


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Par défaut Formulaire recherche mot clé
    Bonjour,

    J'ai un formulaire dont la recherche par mot clé se fait sur l'ensemble des colonnes. J'ai une liste de 350 noms, adresses, etc et le résultat me donne énormément de doublons, car chaque fois que les lettres recherchées sont trouvées cela génère une ligne.

    J'aimerais que la recherche par mot clé se fasse uniquement sur la première colonne, sinon trouver le moyen d'afficher une seule ligne lorsque les lettres ou chiffres recherchés se trouvent plusieurs fois sur la même ligne, ce qui serait encore mieux mais peut-être difficile à réaliser. Faire un test sur un nombre pour exemple.

    Merci d'avance de votre aide
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Si tu as la gentillesse de mettre ton code (au lieu du fichier)
    tu auras plus de propositions

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Par défaut
    Tu as raison, mais le code complet est aussi dans la feuille excel.

    Seulement, j'ai trouvé ce formulaire sur le net et il me convient bien.

    Pour un expert, en mettant par exemple le chiffre 11 ou 12 dans mot clé, il verra rapidement ce qu'il faut changer.

    Si je n'ai pas de réponse, je le refais en entier


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
     
    Dim f, nbCol, pointeur, ligne
    Private Sub UserForm_Initialize()
      Set f = Sheets("BD")
      ligne = 2
      nbCol = f.[A1].CurrentRegion.Columns.Count
      x = 11
      y = 15
      For i = 1 To nbCol
        retour = Me.Controls.Add("Forms.Label.1", "Label" & i, True)
        Me("label" & i).Caption = f.Cells(1, i)
        Me("label" & i).Top = y
        Me("label" & i).Left = x
        retour = Me.Controls.Add("Forms.TextBox.1", "TextBox" & i, True)
        Me("textbox" & i).Top = y
        Me("textbox" & i).Left = x + 30
        Me("textbox" & i).Width = f.Columns(i).Width + 4
        'Me("textbox" & i).Value = f.Cells(ligne, i)
        y = y + 20
      Next
      retour = Me.Controls.Add("Forms.Label.1", "Label" & i, True)
      Me("label" & i).Caption = f.Cells(1, 1)
      Me("label" & i).Top = Me.ListBox1.Top - 10
      Me("label" & i).Left = Me.ListBox1.Left + 2
      '--
      For i = 2 To f.[A65000].End(xlUp).Row
          Me.ListBox1.AddItem
          Me.ListBox1.List(i - 2, 0) = f.Cells(i, 1)
          Me.ListBox1.List(i - 2, 1) = i
       Next
       pointeur = 1
       If nbCol > 8 Then Me.Height = y + 30
       pointeur = 0
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
    End Sub
     
    Private Sub ListBox1_Click()
      ligne = Me.ListBox1.Column(1)
      pointeur = Me.ListBox1.ListIndex
      affiche
    End Sub
     
    Private Sub b_suiv_Click()
     If pointeur < Me.ListBox1.ListCount - 1 Then
       pointeur = pointeur + 1
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
     End If
    End Sub
     
    Private Sub b_prec_Click()
     If pointeur > 0 Then
       pointeur = pointeur - 1
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
     End If
    End Sub
     
    Private Sub b_premier_Click()
       pointeur = 0
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
    End Sub
     
    Private Sub b_dernier_Click()
       pointeur = Me.ListBox1.ListCount - 1
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
    End Sub
     
    Private Sub B_ok_Click()
      Me.ListBox1.Clear
      i = 0
      Set plage = f.[A1].CurrentRegion
      Set c = plage.Find(Me.MotCle, , , xlPart)
      If Not c Is Nothing Then
        premier = c.Address
        Do
          Me.ListBox1.AddItem
          lig = c.Row
          Me.ListBox1.List(i, 0) = plage.Cells(lig, 1)
          Me.ListBox1.List(i, 1) = lig
          i = i + 1
          Set c = plage.FindNext(c)
         Loop While Not c Is Nothing And c.Address <> premier
       End If
       pointeur = 0
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
    End Sub
     
    Private Sub b_tout_Click()
      Me.ListBox1.Clear
      For i = 2 To f.[A65000].End(xlUp).Row
          Me.ListBox1.AddItem
          Me.ListBox1.List(i - 2, 0) = f.Cells(i, 1)
          Me.ListBox1.List(i - 2, 1) = i
       Next
       pointeur = 0
       ligne = Me.ListBox1.List(pointeur, 1)
       affiche
    End Sub
     
    Sub affiche()
      For i = 1 To nbCol:
        Me("textbox" & i).Value = f.Cells(ligne, i)
        w = Evaluate("Cell(""format""," & f.Cells(ligne, i).Address & ")")
        If Left(w, 1) = "C" Then Me("textbox" & i).Value = Format(f.Cells(ligne, i), "0000.00 €")
      Next i
    End Sub

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2007
    Messages : 26
    Par défaut
    J'ai trouvé

    Merci à ceux qui se sont intéressés à mon post



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    
    Private Sub B_ok_Click()
      Me.ListBox1.Clear
      i = 0
      
      Set plage = Columns("A:A")

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/05/2012, 11h47
  2. Formulaire Recherche MultiCritère et RunTime
    Par fbu78 dans le forum Runtime
    Réponses: 9
    Dernier message: 06/01/2006, 17h52
  3. [DEBUTANT]Recherche mot contenu dans une String
    Par lynxman dans le forum Langage
    Réponses: 7
    Dernier message: 16/12/2005, 11h49
  4. Formulaire Login/mot de passe - Conserver une variable
    Par GraphiKa dans le forum Access
    Réponses: 3
    Dernier message: 30/09/2005, 15h29
  5. [langage] exp reg: recherche mot ou ensemble de mot
    Par eautret dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo