Après tentative, je vais avoir besoin d'aide pour faire en sorte d'avoir deux fichiers, un sur lequel il y aurait le tableau des différents renseignements et sur l'autre fichier la cellule ou mettre le nom ou chiffres recherchés avec la restitution des lignes en dessous.@M12 Bien sûr s'il y a beaucoup de lignes il faut mettre les résultats dans une autre feuille.
mcj1997 est "Accro", il devrait pouvoir adapter la macro facilement.
Ok par contre je vais avoir besoin de vous pour mettre en œuvre, comme exposé dans poste 17 en utilisant deux feuilles au lieu de deux fichiers.Bonjour à tous,
Il n'y a aucun intérêt à avoir 2 fichiers.
Utilisez un seul fichier avec 2 feuilles.
A+
'---restitution---
With Sheets("Résultat")
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
With .[A2] '1ère cellule des résultats, à adapter
If n Then .Resize(n, ncol) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
.Columns.AutoFit 'ajuste les largeurs
With .UsedRange: End With 'actualise la barre de défilement verticale
.Activate 'facultatif
End With
End Sub
Voyez ce fichier (3) et ces 2 macros dans le code de la feuille "Recherche" :je vais chercher comment mettre la cellule ou indiquer la valeur cherchée dans la feuille "Résultat".
Private Sub Worksheet_Activate()
Worksheet_Change [A1] 'lance la macro
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cible$, ncol%, tablo, i&, j%, n&, k%
If [A1] <> "" Then cible = "*" & UCase([A1]) & "*"
ncol = 6 'à adapter
tablo = Sheets("BDD").[A1].CurrentRegion.Resize(, ncol) 'matrice, plus rapide
ReDim resu(1 To UBound(tablo), 1 To ncol)
For i = 2 To UBound(tablo)
For j = 1 To ncol
If UCase(tablo(i, j)) Like cible Then
n = n + 1
For k = 1 To ncol: resu(n, k) = tablo(i, k): Next k
Exit For
End If
Next j, i
'---restitution---
Application.EnableEvents = False 'désactive les évènements
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A3] '1ère cellule des résultats, à adapter
If n Then .Resize(n, ncol) = resu
.Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
Columns(2).Resize(, Columns.Count - 1).AutoFit 'ajuste les largeurs
With UsedRange: End With 'actualise la barre de défilement verticale
Application.EnableEvents = True 'réactive les évènements
End Sub
Bonjour,J'ai corrigé, j'avais mal ajusté les largeurs des colonnes.