XL 2016 Macro sélectionner résultat recherchev

angeck

XLDnaute Nouveau
Bonjour,

Nouveau sur le forum je me débrouille en Excel mais pas du tout en Macro !

Je cherche une macro qui me permet de sélectionner le résultat d'une rechercherv.

Mon tableau excel est fait de la manière suivante :

Ligne 7 : A7 Nom d'une enseigne B7 à X7 différentes infos de l'enseigne en recherche V
Volets figés
Ligne 10 à 1000 : base de données avec A10 Nom d'une enseigne et B7 à X7 différentes infos que j'ai remplies

Mon but est donc de remplir en A7 un nom d'enseigne et avoir une macro qui sélectionne directement cette ligne dans le tableau afin qu'elle apparaisse sous mes volets figés et ainsi que je puisse la modifier sans avoir à la chercher.

J'espère avoir été assez clair.

Merci pour votre aide.
 

Robert

XLDnaute Barbatruc
Bonjour Angeck, bonjour le forum,

Essaie comme ça (si j'ai bien compris) :


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range

If Target.Address <> "$A$7" Then Exit Sub
If Target.Value = "" Then Exit Sub
Set R = Columns(1).Find(Target.Value, Range("A7"), xlValues, xlWhole)
If Not R Is Nothing And R.Address <> "$A$7" Then ActiveWindow.ScrollRow = R.Row
End Sub
 

angeck

XLDnaute Nouveau
Bonjour Angeck, bonjour le forum,

Essaie comme ça (si j'ai bien compris) :


VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range

If Target.Address <> "$A$7" Then Exit Sub
If Target.Value = "" Then Exit Sub
Set R = Columns(1).Find(Target.Value, Range("A7"), xlValues, xlWhole)
If Not R Is Nothing And R.Address <> "$A$7" Then ActiveWindow.ScrollRow = R.Row
End Sub
Merci pour cette macro. Je l'ai rajouté mais je ne vois pas d'effet.

Bonjour,
Ça serait aussi simple en filtrant ta base de données avec le nom de l'enseigne.
C'est possible via une macro ? Le but n'est pas de devoir le faire pour chaque recherche et il faudrait que si je ne mets rien dans A7 le filtre s'arrête.

Merci.
 

Robert

XLDnaute Barbatruc
Bonjour le fil, bonjour le forum,

En effet le code que je te propose n'utilise pas de filtre. Il ne fait que placer la ligne désignée en première ligne sous le volet.
Comme c'est une macro événementielle, il faut la mettre dans le composant de l'onglet auquel on veut que cela s'applique :
• Copie le code que je t'ai proposé
• clique avec le bouton droit sur le nom de l'onglet (en bas)
• sélectionne l'option Visualiser le code
• colle le code
• ferme l'éditeur Visual basic (VBE) avec la combinaoison de touches [Alt]+[F11]

En A7, tape le nom d'une enseigne et valide...
 

angeck

XLDnaute Nouveau
Merci beaucoup c'est tip top.

Est-il possible de faire en sorte qu'en rentrant les infos dans A7 et en validant, ensuite la cellule sélectionnée soit cette ligne en colonne A.

Si c'est trop c'est déjà parfait. Merci.
 

Jacky67

XLDnaute Accro
Bonjour,
Un début de solution peut-être... ;)
A tester
Le code de transfert de la feuille individuelle de l'agent vers la feuille de saisie
A placer dans la feuille "Saisie individuelle"
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = [Agents].Address Then
   With Sheets([Agents].Value)
        x = Application.Match([Date_recherchée], .[b:b], 0)
        If IsNumeric(x) Then
        .Range(.Cells(x, "c"), .Cells(x, "t")).Copy
        [d10].PasteSpecial , Paste:=xlPasteValues, Transpose:=True
        Else
        MsgBox "Date non présente chez l'agent : " & [Agents], , "Information"
        End If
        Application.CutCopyMode = False
    End With
End If
End Sub
Le code de transfert de la feuille de saisie vers la feuille individuelle
Code attribué a l'image "dossier" présent sur la feuille
Code:
Sub transfrerJJ()
Dim x
If [Agents] = "" Then Exit Sub
    With Sheets([Agents].Value)
        Sheets("Saisie individuelle").[d10:d27].Copy
        x = Application.Match([Date_recherchée], .[b:b], 0)
        If IsNumeric(x) Then
        .Range("C" & x).PasteSpecial , Transpose:=True
        Else
        MsgBox "Date non présente chez l'agent : " & [Agents], , "Information"
        End If
        Application.CutCopyMode = False
        With Sheets("Saisie individuelle")
        Application.EnableEvents = False
        .Range("d10:d" & .Rows.Count).ClearContents
        [Agents] = ""
        Application.EnableEvents = True
        End With
        MsgBox "Transfert Terminé", , "Information"  ' Facultatif
    End With
End Sub
 

Fichiers joints

Robert

XLDnaute Barbatruc
Re,

Merci beaucoup c'est tip top.

Est-il possible de faire en sorte qu'en rentrant les infos dans A7 et en validant, ensuite la cellule sélectionnée soit cette ligne en colonne A.

Si c'est trop c'est déjà parfait. Merci.
Si c'est à moi que tu t'adresses il suffit de rajouter :
VB:
R.Select
à la fin. Ce qui donne :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range

If Target.Address <> "$A$7" Then Exit Sub
If Target.Value = "" Then Exit Sub
Set R = Columns(1).Find(Target.Value, Range("A7"), xlValues, xlWhole)
If Not R Is Nothing And R.Address <> "$A$7" Then ActiveWindow.ScrollRow = R.Row
R.Select
End Sub
 

angeck

XLDnaute Nouveau
Re,


Si c'est à moi que tu t'adresses il suffit de rajouter :
c'est effectivement à toi. MERCI.

J'ai le sentiment d'abuser de ton aide ! car j'essaye de rajouter une MAJ de la hauteur de la ligne 7 quand on vient de rentrer une nouvelle enseigne.

Encore merci
 

Robert

XLDnaute Barbatruc
Re,

c'est quoi une MAJ de la hauteur de la ligne ? Le code pour modifier la hauteur d'une ligne est :

VB:
Rows(x).RowHeight = y
ou x est le numéro de la ligne et y la hauteur...
Tu devrais essayer l'enregistreur de macro plus l'aide pour des petit soucis de ce genre...
 

angeck

XLDnaute Nouveau
J'avais essayé l'enregistreur sans succès car j'indiquais le code au mauvais endroit. Ça fonctionne merci.

La MAJ de la hauteur voulais dire que je voulais que lorsque je saisi une enseigne la hauteur de ligne change directement en fonction du nombre de ligne.
 

Discussions similaires


Haut Bas