XL 2016 recherche par macro

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 !

eastwick

XLDnaute Accro
Bonjour à toutes et tous,
Je ne parviens pas à faire une macro. Je tape un début de nom en B6, ensuite seulement, ma macro doit aller copier cette info dans l'option "contient" de la cellule B8 (liste).
Or ça ne fonctionne plus dès que je tape un autre nom que celui qui a servi pour l'enregistrement de ma macro !
Je vous remercie.
 

Pièces jointes

  • Projet1.jpg
    Projet1.jpg
    124.4 KB · Affichages: 3
Solution
Re,
On peut aussi le rendre automatique, en mettant dans la feuille concernée :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Or [B6] = "" Then Exit Sub
    If Not Intersect(Target, [B6]) Is Nothing Then
        Application.ScreenUpdating = False
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter _
            Field:=2, Criteria1:=Range("B6") & "*"
        Range("B6") = ""
    End If
Fin:
End Sub
Sub choix()
'
' choix Macro
'

'
Range("B6").Select
Selection.Copy
ActiveSheet.Range("$A$8:$N$30000").AutoFilter Field:=2, Criteria1:= _
("B6").Value, Operator:=xlAnd
Range("B7").Select
Application.CutCopyMode = False
ActiveWorkbook.Save
Range("B6").Select
End Sub
 
Re,
Peut être avec simplement :
VB:
Sub Choix()
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=2, Criteria1:=Range("B6") & "*"
Range("B6") = ""
End Sub
En mettant $A$8:$N$30000 sous forme de tableau structuré.
Sinon essayez :
VB:
Sub Choix()
ActiveSheet.Range("$A$8:$N$30000").Range.AutoFilter Field:=2, Criteria1:=Range("B6") & "*"
Range("B6") = ""
End Sub
( Je n'ai pas mis ActiveWorkbook.Save pour le test, rajoutez le si besoin )
Sinon envoyez un fichier test avec des explications plus précises.
 
Dernière édition:
Re,
On peut aussi le rendre automatique, en mettant dans la feuille concernée :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Or [B6] = "" Then Exit Sub
    If Not Intersect(Target, [B6]) Is Nothing Then
        Application.ScreenUpdating = False
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter _
            Field:=2, Criteria1:=Range("B6") & "*"
        Range("B6") = ""
    End If
Fin:
End Sub
 

Pièces jointes

Re,
On peut aussi le rendre automatique, en mettant dans la feuille concernée :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Or [B6] = "" Then Exit Sub
    If Not Intersect(Target, [B6]) Is Nothing Then
        Application.ScreenUpdating = False
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter _
            Field:=2, Criteria1:=Range("B6") & "*"
        Range("B6") = ""
    End If
Fin:
End Sub
Merci sylvanu !
 
- 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

Réponses
33
Affichages
1 K
Réponses
16
Affichages
1 K
Réponses
4
Affichages
488
Retour