Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 RechercheV avec 4 critères (vba)

YohanSC

XLDnaute Nouveau
Bonjour,

J'ai un problème de compréhension sur une écriture VBA pour rechercher sur base de plusieurs critères .
Est-ce que je dois utiliser une autre méthode que rechercheV?
Voici le code qui fonctionne avec une variable mais j'aimerais afficher la valeur sur base de 4 variables et dès qu'il trouve un concordance il affiche la bonne valeur ou il se rapproche le plus de la valeur3 :

Set myrange0 = ThisWorkbook.Sheets("Données").Range("A1:F1000")
Set valeur0 = Range("B2")
Set valeur1 = Range("B3")
Set valeur2 = Range("B4")
Set valeur3 = Range("B5")

Set recherche = Range("A9")

recherche.Value = Application.WorksheetFunction.VLookup(valeur & valeur1, myrange0, 6, False)

Fonction Match peut-etre?

Merci de votre aide

Yohan
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai en PJ avec une fonction perso :
VB:
Function Recherche4(Source, Plage)
Recherche4 = "": Dim i%, Tablo, Critères
Tablo = Source: Critères = Plage
For i = 1 To UBound(Tablo)
    If Tablo(i, 1) = Critères(1, 1) And Tablo(i, 2) = Critères(2, 1) And _
        Tablo(i, 3) = Critères(3, 1) And Tablo(i, 4) = Critères(4, 1) Then
        Recherche4 = Tablo(i, 6)
        Exit Function
    End If
Next i
End Function
la synatxe est : '=Recherche4(Plage de données;Plage de critères)
 

Pièces jointes

  • testrecherchemulti.xlsm
    18.5 KB · Affichages: 9

YohanSC

XLDnaute Nouveau
Je suis occupé d'avancer dans le classeur pour la sauvegarde et je coince dans le copier/coller.
Pourquoi?
Car je copie des valeurs en colonne pour les mettre en ligne à la suite en colonne "A".

Je souhaiterais conserver la mise en page mais pas possible de copier/coller ""colonnes"" vers ""lignes"".

Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim lDestLastRow As Long

Set wsCopy = Sheets("Feuil1")
Set wsDest = Sheets("Données")

lDestLastRow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row
wsCopy.Range("B2:B7").Copy
wsDest.Range("A" & lDestLastRow).PasteSpecial Paste:=xlPasteValuesAndNumberFormats


Merci encore ...
 

Pièces jointes

  • testrecherchemultiV2.xlsm
    18.8 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
Un essai avec :
VB:
Sub CopieColle()
With Sheets("Données")
    DL = 1 + .Cells(Cells.Rows.Count, "A").End(xlUp).Row
    .Range("A" & DL & ":F" & DL) = Application.Transpose([B2:B7])
End With
End Sub
 

Pièces jointes

  • testrecherchemultiV3.xlsm
    20.1 KB · Affichages: 7

Discussions similaires

Réponses
12
Affichages
845
Réponses
7
Affichages
686
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…