Trouve le numéro de ligne d'un filtre dans une macro

Bonjour à tous,

J'ai un fichier Excel avec 2 onglets.

Mise à jour et dimensions produits

J'ai une macro qui me copie la valeur sélectionné de l'onglet Mise à jour qui la copie dans un filtre de la colonne A de l'onglet Dimensions produits.

Je voudrais mettre en automatique en colonne B de mon onglet Dimensions OK mais dans la ligne que mon filtre a sélectionnée.

Merci pour votre aide

16test-macro.xlsm (76.86 Ko)

bonjour nico741981,

un essai

11test-macro-2.xlsm (78.06 Ko)

Bonjour nico741981, BsAlv,

Un autre code commenté (dans Module1) :

Sub test()
Dim Valeur, derlig As Long, PremLig As Long
   Application.ScreenUpdating = False                 ' on fige l'affichage, c'est plus rapide
   Valeur = ActiveCell                                ' valeur de filtrage
   With Sheets("Dimensions physique des produit")     ' avec la feuille à filtrer
      ' on y recherche la première ligne avec la Valeur (on renvoie 0 si la valeur est absente)
      PremLig = Application.IfError(Application.Match(Valeur, .Columns(1), 0), 0)
      If PremLig = 0 Then
         ' la valeur est absente, on informe
         MsgBox "La valeur " & Valeur & " est absente de la feuille 'Dimensions physique des produit'", vbCritical
      Else
         ' la valeur est présente
         .Select                                                              ' on sélectionne la feuille du filtre
         If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData               ' on affiche tout si un filtre est actif
         derlig = .Cells(Rows.Count, "a").End(xlUp).Row                       ' dernière ligne des données de la colonne A
         .Range("a2:a" & derlig + 1).AutoFilter Field:=1, Criteria1:=Valeur   ' on filtre sur la valeur
         Application.Goto .Cells(PremLig, "a"), True                          ' on sélectionne la première cellule avec la valeur
      End If
   End With
End Sub

Re,

Si en fait, seul le numéro de ligne vous intéresse pour l'utiliser ensuite au sein de votre code, alors une unique ligne de code suffit. La valeur de la première ligne contenant la valeur est dans la variable PremLig. Si la valeur est absente, PremLig vaut zéro.

PremLig = Application.IfError(Application.Match(ActiveCell, Sheets("Dimensions physique des produit").Columns(1), 0), 0)

Une utilisation de la ligne donnant PremLig :

Dim Valeur, derlig As Long, PremLig As Long
   PremLig = Application.IfError(Application.Match(ActiveCell, Sheets("Dimensions physique des produit").Columns(1), 0), 0)
   MsgBox "La 1ère ligne dans la feuille 'Dimensions physique des produit' avec la valeur <" & Valeur & ">" & _
          " est la ligne n° " & Format(PremLig, "#,##0") & vbLf & vbLf & _
          " (si c'est 0 alors la valeur n'existe pas)", vbInformation
End Sub
Rechercher des sujets similaires à "trouve numero ligne filtre macro"