Recherche avancé
Bonjour,
j'ai fait un filtre avancé dans une macro et j'aimerais pouvoir faire en sorte comme dans la vidéo "créer un champ de recherche efficace en 3 minutes" que si je tape un texte pas entier il me trouve quand même des correspondance. étant donné que j'ai fais un filtre avancé en macro grâce a l'enregistrement des macro je ne connais pas du out le langage VBA...
Je sais pas si je me suis bien expliqué ... Mais je vous remercie de votre attention et j’espère avoir une réponse rapidement.
Ps: je ne cherche pas a qu'on me face le travail j'aimerais bien apprendre.
Bonjour Ayuri
La seule chose que je peux dire, c'est qu'il faut encadrer ton terme à filtrer par des "*"
*toto*
Va filtrer toutes les lignes contenant le terme toto
Tous d'bord j'aimerais te remercier d'avoir pris le temp de t'attarder sur mon sujet et j'aimerais encore une fois t’importuner avec un de mes problèmes ....j'aimerais qu'avec la recherche partielle il ne me sorte pas les 1000 alors que j'ai écris 100
Je m'explique j'ai plusieurs lignes dans lesquelles sont référencées des normes exemple ISO VG 100 ISO VG1000 et ect ...
et j'aimerais que ma macro puisse faire la différence entre 1000 et 100 je t'envois mon code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A4:O4")) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Cel In Range("A4:O4")
If Cel <> "" Then
If Not IsNumeric(Cel) Then
Cel.Offset(-1) = "*" & Cel.Value & "*"
Else
Cel.Offset(-1) = Cel.Value
End If
Else
Cel.Offset(-1).ClearContents
End If
Next Cel
Application.EnableEvents = True
Range("A6:P1000").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("A2:O3"), Unique:=False
End If
End SubPourrais tu m'aider ? Si cela est dans tes capacités
Merci
Tous d'bord j'aimerais te remercier d'avoir pris le temps de t'attarder sur mon sujet et j'aimerais encore une fois t’importuner avec un de mes problèmes ....j'aimerais qu'avec la recherche partielle il ne me sorte pas les 1000 alors que j'ai écris 100
Je m'explique j'ai plusieurs lignes dans lesquelles sont référencées des normes exemple ISO VG 100 ISO VG1000 et ect ...
et j'aimerais que ma macro puisse faire la différence entre 1000 et 100 je t'envois mon code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A4:O4")) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Cel In Range("A4:O4")
If Cel <> "" Then
If Not IsNumeric(Cel) Then
Cel.Offset(-1) = "*" & Cel.Value & "*"
Else
Cel.Offset(-1) = Cel.Value
End If
Else
Cel.Offset(-1).ClearContents
End If
Next Cel
Application.EnableEvents = True
Range("A6:P1000").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("A2:O3"), Unique:=False
End If
End SubPourrais tu m'aider ? Si cela est dans tes capacités
Merci
Bonjour Ayuri,
J'ai essayé ce code
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("A4:O4")) Is Nothing Then
Application.ScreenUpdating = False
Application.EnableEvents = False
For Each Cel In Range("A4:O4")
If Cel <> "" Then
If Cel.Address = "$A$4" Then
Cel.Offset(-1) = Cel.Value
Else
Cel.Offset(-1) = "*" & Cel.Value & "*"
End If
Else
Cel.Offset(-1).ClearContents
End If
Next Cel
Application.EnableEvents = True
Range("A6:P1000").AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("A2:O3"), Unique:=False
End If
End SubMais cela ne change rien, si on saisi 100, les 1000 ressortent aussi et effectivement 100 est bien compris dans 1000
Je n'ai pas de solution,
sauf en faisant une boucle sur les lignes afficher et masquer celles qui ne correspondent pas exactement au critère
A+
Dommage mais merci quand même j'aimerais encore vous embêter donc j'aimerais qu'a la sorti de mon filtre que ca me transfert e resultat sur un word j'ai ce code :
Sub Excel_Word()
Dim oWdApp As Object 'Word.Application
Dim oWdDoc As Object 'Word.Document
'Lancer une instance Word
Set oWdApp = CreateObject("Word.Application")
'Ouvrir un nouveau document
Set oWdDoc = oWdApp.Documents.Add
'Rendre Word visible
oWdApp.Visible = True
'Copier une plage depuis Excel
ActiveSheet.Range("A6:O1000").Copy
'Coller la plage dans Word
oWdApp.Selection.Paste
'Annuler le mode couper/copier
Application.CutCopyMode = False
End Subet ca marche très bien sauf que je sais pas comment faire pour mettre la page Word en paysage et que les marge soit le plus excentrer ...
Avez vous une idée pour régler cela ?
Re,
Tu peux essayer ce code
Const wdOrientLandscape As Integer = 1
Sub Excel_Word()
Dim oWdApp As Object 'Word.Application
Dim oWdDoc As Object 'Word.Document
Dim DLig As Long
'Lancer une instance Word
Set oWdApp = CreateObject("Word.Application")
'Ouvrir un nouveau document
Set oWdDoc = oWdApp.Documents.Add
'Rendre Word visible
oWdApp.Visible = True
With oWdDoc.PageSetup
.Orientation = wdOrientLandscape
.TopMargin = Application.CentimetersToPoints(0.8)
.BottomMargin = Application.CentimetersToPoints(0.8)
.LeftMargin = Application.CentimetersToPoints(0.8)
.RightMargin = Application.CentimetersToPoints(0.8)
End With
' Dernière ligne du tableau
DLig = Range("A" & Rows.Count).End(xlUp).Row
'Copier une plage depuis Excel
ActiveSheet.Range("A6:O" & DLig).Copy
'Coller la plage dans Word
oWdApp.Selection.Paste
' Activer Word pour voir le document créé
oWdApp.Activate
'Annuler le mode couper/copier
Application.CutCopyMode = False
End SubLe problème c'est que le tableau va dépasser la taille de la page, et là...
A+
Bah merci quand même d'avoir pris le temps de me répondre car je demande un peu des truc de fou
Bonne journée
Re,
ayuri a écrit :Bah merci quand même d'avoir pris le temps de me répondre car je demande un peu des truc de fou
Bonne journée
Je te rassure, ce ne sont pas du tout des trucs de fou
Il y a carrément plus dingue
Au plaisir d'aider