VBA Modification d'une RechV

Bonjour,

Est ce que c'est possible dans une RechercheV de modifier les RC par les Range("""") pour introduire les LastRow, exemple:

Sub Test_RechV

    LastRow1 = ThisWorkbook.Sheets("Feuille1").Range("A" & Rows.Count).End(xlUp).Row

    LastRow2 = ThisWorkbook.Sheets("Feuille2").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Feuille2").Activate

    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'Feuille1'!R2C1:R24C5,5,0)"    ' Formule normale avec les RC   

    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'Feuille1'!Range("A2:E" & LastRow1),5,0)"    ' Si possible de la modifier ainsi avec Range et introduire LastRow

    Selection.AutoFill Destination:=Range("B2:B" & LastRow2), Type:=xlFillDefault

    Range("B2:B" & LastRow2).Select

End Sub

Merci par avance pour votre retour.

Bonjour,

Il serait plus simple que votre tableau en Feuil1 soit un tableau structuré.

Bonjour,

Merci pour votre retour

C à d?

Vous auriez un fichier exemple à mettre en ligne ?

Bonjour,

Ci-joint mon fichier.

A noter que lorsqu'il s'agit d'un tableau avec des lignes limités et fixes c'est facile à maitriser mais avec des milliers de lignes avec un nombre qui change il est préférable d'utiliser Range dans la RechercheV pour insérer le LastRow.

SVP Autre question en relation avec la RechercheV.

Cette fois-ci, si le nom de la feuille change selon le nombre des lignes par exemple le nom de la feuille est : "25_lignes_Feuilles1", autre fois "125_lignes_Feuilles1" et après "75_lignes_Feuilles1" etc... (en utilisant la fonction CountA pour compter le nombre de lignes non vide dans la colonne A), alors comment peut on insérer le nom de la feuille "X_lignes_Feuilles1" dans une RechercheV sachant que le nombre de ligne change.

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'X_lignes_Feuille1'!Range("A2:E" & LastRow1),5,0)" ' Si possible de la modifier ainsi avec Range et introduire LastRow

Merci bien.

5test.xlsm (22.78 Ko)

Soit un tableau structuré dans l'onglet Feuille1 nommé t_Factures

Sub Test_RechV()

Dim LastRow2 As Long
Dim AireSh2 As Range

    With Sheets("Feuille2")
         LastRow2 = .Range("A" & .Rows.Count).End(xlUp).Row
         Set AireSh2 = .Range(.Cells(2, 1), .Cells(LastRow2, 1))
         AireSh2.Offset(0, 1) = "=VLOOKUP(RC[-1],t_Factures,5,0)"
         Set AireSh2 = Nothing
  End With

End Sub

Pour répondre à votre dernier post :

Sub LancerTest_RechV()

  '  With ActiveSheet
  '  With Sheets("25_lignes_Feuilles1")
  '  With Sheets("75_lignes_Feuilles1")
    With Sheets("125_lignes_Feuilles1")

         If .ListObjects.Count > 0 Then
           Test_RechV .ListObjects(1)
         End If

    End With

End Sub

Sub Test_RechV(ByVal TableSh As ListObject)

Dim LastRow2 As Long
Dim AireSh2 As Range

    With Sheets("Feuille2")
         LastRow2 = .Range("A" & .Rows.Count).End(xlUp).Row
         Set AireSh2 = .Range(.Cells(2, 1), .Cells(LastRow2, 1))
         AireSh2.Offset(0, 1) = "=VLOOKUP(RC[-1]," & TableSh & ",5,0)"
         Set AireSh2 = Nothing
    End With

End Sub

Je vous remercie pour votre réponse.

J'ai testé ça marche, mais ça ne répond pas totalement à mon besoin, puisque si les lignes du tableau de la feuille 1 changent (augmentent ou descendent) le nom de la feuille1 : "t_Factures" n'est plus valide.

Y a t il pas une solution en modifiant cette RechercheV? Sachant que X étant le nombre de ligne qui change aussi selon les lignes du tableau avec la fonction CountA, d'où le nom de la feuille1 à introduire dans la RechercheV change aussi.

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],'X_lignes_Feuille1'!Range("A2:E" & LastRow1),5,0)" ' Si possible de la modifier ainsi avec Range et introduire LastRow

Merci bien.

Comment sont alimentés vos tableaux ?

Ce sont des extractions que je fais et je les exporte avec Excel.

Presque toujours les mêmes colonnes mais le nombre de ligne qui change.

J'ai fait différents tests avec des onglets cibles baptisés Feuille2, 3, 4.

Sub LancerTest_RechV()

   Test_RechV "25_lignes_Feuilles1", "Feuille2"
   Test_RechV "75_lignes_Feuilles1", "Feuille3"
   Test_RechV "125_lignes_Feuilles1", "Feuille4"

End Sub

Sub Test_RechV(ByVal OngletSource As String, ByVal OngletCible As String)

Dim LastRowSource As Long, LastRowCible As Long
Dim AireSource As Range, AireCible As Range

    With Sheets(OngletSource)
         LastRowSource = .Range("A" & .Rows.Count).End(xlUp).Row
         Set AireSource = .Range(.Cells(1, 1), .Cells(LastRowSource, 5))
    End With

    With Sheets(OngletCible)
         LastRowCible = .Range("A" & .Rows.Count).End(xlUp).Row
         Set AireCible = .Range(.Cells(2, 1), .Cells(LastRowCible, 1))
         AireCible.Offset(0, 1) = "=VLOOKUP(" & AireCible.Address & ",'" & OngletSource & "'!" & AireSource.Address & ",5,0)"
         Set AireCible = Nothing
    End With

    Set AireSource = Nothing

End Sub

Bonjour,

Je vous remercie pour votre retour.

J'ai modifié le code pour avoir avoir la solution indépendamment des nombres de lignes et ça fonctionne bien mnt.

Sub LancerTest_RechV()

NbLignes = Application.WorksheetFunction.CountA(Worksheets(1).Range("A:A"))

MsgBox "Nbre de lignes est " & NbLignes - 1

Feuil1.Name = NbLignes & "_lignes_Feuilles1"

   Test_RechV NbLignes & "_lignes_Feuilles1", "Feuille2"
   Test_RechV NbLignes & "_lignes_Feuilles1", "Feuille3"
   Test_RechV NbLignes & "_lignes_Feuilles1", "Feuille4"

End Sub

Je vous remercie infiniment pour votre support.

Rechercher des sujets similaires à "vba modification rechv"