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

Microsoft 365 Index Match ligne et Mach colonne

Souimanga

XLDnaute Nouveau
Bonjour, je deviens chèvre avec ce code.
J'ai un fichier avec une feuille pour le résultat et une feuille pour la source.
Feuille "Result" ; dans laquelle je souhaite remplir les cellules jaunes avec les données "Ref" de la feuille Source
En feuille "Attendu" : Ce que j'attends

Ce bout de code marche mais ne renvoie pas les bonnes "Ref" :
For Lig = 3 To derligD

For Col = 4 To dercolD Step 3

Marque = Cells(1, Col)
Article = Cells(Lig, 1)


Result = Application.Index(wsS.Range("E2:E" & derligS), _
Application.Match(Article, wsS.Range("A:A"), 0) * _
Application.Match(Marque, wsS.Range("D"), 0))

wsD.Cells(Lig, Col) = Result

Par avance merci de votre aide !
 

Pièces jointes

  • ClasseurTest.xlsb
    22.8 KB · Affichages: 7

piga25

XLDnaute Barbatruc
Bonjour,
Un essai avec cela :
VB:
Sub Transfert()
    ' Déclarer les variables
    Dim wsSource As Worksheet
    Dim wsResultat As Worksheet
    Dim lastRow As Long
    Dim i As Long

    ' Spécifier les noms des feuilles (ajuster si nécessaire)
    Set wsSource = ThisWorkbook.Sheets("Source") ' Remplacer "FeuilleSource" par le nom réel
    Set wsResultat = ThisWorkbook.Sheets("Result") ' Remplacer "FeuilleResultat" par le nom réel

    ' Trouver la dernière ligne avec des données dans la colonne E de la feuille source
    lastRow = wsSource.Cells(Rows.Count, "E").End(xlUp).Row

    ' Boucle pour parcourir chaque ligne à partir de la ligne 2 (en supposant que les en-têtes commencent à la ligne 1)
    For i = 2 To lastRow
        ' Copier les valeurs de la colonne E et les coller aux emplacements souhaités dans la feuille résultat
        wsResultat.Cells(i + 1, "D").Value = wsSource.Cells(i, "E").Value
        wsResultat.Cells(i + 1, "G").Value = wsSource.Cells(i + 1, "E").Value
        wsResultat.Cells(i + 1, "J").Value = wsSource.Cells(i + 2, "E").Value
    Next i

    MsgBox "Les données ont été copiées et collées avec succès."
End Sub
 

Dranreb

XLDnaute Barbatruc
j'y comprends rien avec mon niveau vba.
Qu'est-ce que vous ne comprenez pas dans ma Sub Test ?
L'étude du fonctionnement de la fonction Gigogne est inutile. Il y a juste à savoir qu'elle renvoie une collection d'objets SsGr (type défini par le module de classe du même nom), classés et regroupés en cascade d'après les numéros de colonnes spécifiés derrière le 1er argument qui est la source.
 

Souimanga

XLDnaute Nouveau
Bonjour à tous

A essayer
VB:
=INDEX(Source!$C$2:$C$7;EQUIV(Result!$A3&Result!D$1;Source!$A$2:$A$7&Source!$D$2:$D$7;0))

JHA
Merci JHA, mais quand je l'adapte en vba j'ai une erreur d'incompatibilité de type :

Dim Result as variant
Dim wsS, wsD as worksheet
Set wsS = ThisWorkbook.sheets("Source")
Set wsS = ThisWorkbook.sheets("Result")
result = Application.index(wsS.Range("E2:E7"), Application.match(wsD.range("A3") & wsD.Range("J1"), wsS.range("A2:A7") & wsD.Range("D27"), 0))

J'en peux plus, j'arrive pas à voir ce qui cloche
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour tout le monde,
j'ai une erreur d'incompatibilité de type
C'est normal, la formule de JHA est une formule matricielle.
Un essai en PJ en ré utilisant la formule de JHA :
VB:
Sub CollerFormule()
Dim formule, L%, C%
formule = "=INDEX(Source!R2C5:R7C5,MATCH(Result!RC1&Result!R1C,Source!R2C1:R7C1&Source!R2C4:R7C4,0))"
For L = 3 To 4
    For C = 4 To 12 Step 4
        With Cells(L, C)
            .NumberFormat = "General"
            .FormulaArray = formule
            .NumberFormat = "@"
            .Value = .Value
        End With
    Next C
Next L
End Sub
 

Pièces jointes

  • Classeurtest.xlsm
    22.4 KB · Affichages: 6

Souimanga

XLDnaute Nouveau
C'est top ça Sylvanu ! ca marche nickel...un grand merci à toi, et aux autres pour leur aide aussi
 
Dernière édition:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…