• Initiateur de la discussion Initiateur de la discussion yvon07
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yvon07

XLDnaute Occasionnel
bonsoir

j'ai un fichier sur deux colonnes,avec une macro me permetant de faire une recherche sur la colonne "A"
j'aimerai pouvoir dans la meme fenetre rechercher aussi bien avec des donnés dela colonne "A" comme de la colonne "B"
ci-joint un fichier avec une macro de recherche sur la colonne "A"
merci a toutes les personnes qui nous aides
 
Dernière édition:
Re : macro recherche

Bonsoir yvon07, JNP
Code:
[COLOR="DarkSlateGray"][B]Private Sub TextBox1_Change()
Dim Plage As Range, cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Integer, N As Integer
Dim C As Range
   ListBox1.Clear
   N = 0
   Recherche = TextBox1.Value
   Range("A1").Select
   Ligne = Sheets(2).Range("A" & "65536").End(xlUp).Row
   [COLOR="Sienna"]Set Plage = Sheets(2).Range("A" & "1:" & "B" & Ligne)[/COLOR]
   With Plage
      Set C = .Find(Recherche)
      If Not C Is Nothing Then
         Adresse = C.Address
         Do
            If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
               ListBox1.AddItem C, N
               [COLOR="Sienna"]ListBox1.List(N, 0) = C.Offset(0, 1 - C.Column)
               ListBox1.List(N, 1) = C.Offset(0, 2 - C.Column)
               ListBox1.List(N, 2) = C.Offset(0, 3 - C.Column)
               ListBox1.List(N, 3) = C.Offset(0, 4 - C.Column)[/COLOR]
               N = N + 1
            End If
            Set C = .FindNext(C)
         Loop While Not C Is Nothing And C.Address <> Adresse
      End If
End With
End Sub[/B][/COLOR]
peut-être ?​
ROGER2327
#2748
 
Dernière édition:
Re : macro recherche

Re 🙂,
Exact Roger, j'avais juste élargi la plage de recherche, je n'avais pas tenu compte de la manière de renvoyer les résultats 😱... Il faut dire que j'utilise rarement Offset, plutôt Cells(C.Row, 1), etc., donc j'ai raisonné à l'identique. Trop de précipitation 😉.
Bonne journée 😎
 
Re : macro recherche

bonsoir
merci ROGER2327,c'est ce que je voulais.
lundi je testerai sur le fichier original,qui comporte quelque 20 000 ref.
merci a tous,il est vraiment agraeble de trouver des personnes competentent qui rende de grand service.
encore mille merci
 
Re : macro recherche

bonsoir
apres avoir tester la macro sur le fichier original,elle semble ne pas fontionner correctement.la liste comporte 19660 reference.
lorsque je tape une designation tous est OK
si ref a partir du deuxieme chiffre tous disparait
le ficier est maleureusement trop lourd meme zip pour le mettre sur le forum
encor merci de votre aide
 
Re : macro recherche

Re...
je pense avoir trouvé l'erreur,la personne qui a rentrer les ref,a mis trois espace devant,y a t'il un moyen pour supprimer ces espace sur 19660 cellules,autrement que une par une??

Oui.

  1. Virez le branleur.
    (Saisir cinquante-huit mille neuf cent quatre-vingts espaces pour le plaisir,
    c'est carrément du sabotage.)

  2. Modifiez temporairement le code de la boucle Do... ...Loop en ajoutant la ligne rouge :
    Code:
    [COLOR="DarkSlateGray"][B]         Do
                If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
                   ListBox1.AddItem C, N
                   ListBox1.List(N, 0) = C.Offset(0, 1 - C.Column)
                   ListBox1.List(N, 1) = C.Offset(0, 2 - C.Column)
                   ListBox1.List(N, 2) = C.Offset(0, 3 - C.Column)
                   ListBox1.List(N, 3) = C.Offset(0, 4 - C.Column)
                   
                   [COLOR="Red"]C.Value = Mid$(C.Value, 2, 999)[/COLOR]
                   
                   N = N + 1
                End If
                Set C = .FindNext(C)
             Loop While Not C Is Nothing And C.Address <> Adresse[/B][/COLOR]
  3. Lancez la recherche.
  4. Placez une espace dans la zone de saisie.
  5. Cliquez le bouton RESET.
  6. Répétez les étapes 4 et 5 tant que la zone de résultat n'est pas vide.
    En principe, trois passages doivent suffire.

  7. Cliquez QUITTE.
  8. Jetez un coup d'oeil sur la feuille base de données
  9. Restaurez le code en supprimant la ligne rouge.
ROGER2327
#2769
 
Re : macro recherche

Re...
Essayez ceci :
Code:
[COLOR="DarkSlateGray"][B]Private Sub TextBox1_Change()
Dim cell As Range
Dim Recherche As String, Adresse As String
Dim N As Integer
Dim C As Range
   ListBox1.Clear
   N = 0
   Recherche = TextBox1.Value
   With Sheets([B16].Value)
      With .Range("A1:B" & .Range("A" & .Rows.Count).End(xlUp).Row)
         Set C = .Find(Recherche)
         If Not C Is Nothing Then
            Adresse = C.Address
            Do
               If UCase(Recherche) = UCase(Left(C, Len(Recherche))) Then
                  ListBox1.AddItem C, N
                  ListBox1.List(N, 0) = C.Offset(0, 1 - C.Column)
                  ListBox1.List(N, 1) = C.Offset(0, 2 - C.Column)
                  ListBox1.List(N, 2) = C.Offset(0, 3 - C.Column)
                  ListBox1.List(N, 3) = C.Offset(0, 4 - C.Column)
                  N = N + 1
               End If
               Set C = .FindNext(C)
            Loop While Not C Is Nothing And C.Address <> Adresse
         End If
      End With
   End With
End Sub[/B][/COLOR]
ROGER2327
#2774
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 agrandir la liste
Réponses
21
Affichages
663
  • Question Question
Réponses
32
Affichages
766
Réponses
13
Affichages
340
Réponses
4
Affichages
566
Retour