RechercheV plusieurs critères plusieurs feuilles

Merci Steelson pour le temps que tu as passé!

J'ouvre bien le fichier en même temps pour importer les données.

Malheureusement, lorsque je lance la macro celle-ci me renvoie "0" au lieu de "ok", ou "I1" etc... Sais-tu pourquoi?

Je comprend pour le sommeprod qui renvoi 0 mais pourquoi avec la formule (sans passer par la macro) ça fonctionne et pas avec la macro?

Fichier avec la formule :

Où est la macro que je t'ai proposée dans ce fichier ?

Désolé, cela fonctionne parfaitement ...

Autant pour moi...

Je ne sais pas pourquoi ça beugait, surement plusieurs fichiers ouverts...

Merci c'est top!!!!

BZH83

pourquoi avec la formule (sans passer par la macro) ça fonctionne

je dis et je répète, ta formule ne fonctionne pas si ton tableau source s'allonge, à cause de ceci
LIGNE($1:$6)
et je pense que c'est ce piège qui a entraîné la difficulté de mise au point.

sans compter aussi la grave erreur sur INDEX(_______________;0)

maintenant tu peux ...

Après réflexion, je reviens sur le sujet !

Il y a une chose intelligente dans ta demande de le faire par macro ... c'est que le fonctionnement ne dépend pas du lieu de stockage du fichier source. Il suffit juste de l'ouvrir et de lancer la macro. Cela s'adapte donc à un fichier généré quotidiennement et qui est archivé par exemple dans un dossier différent par jour. Pas besoin de mettre jour les formules. Je retiens l'idée !!

Au cas où ton fichier source change de nom (et d'emplacement), tu peux utiliser cette version. C'est la macro qui ouvrira et fermera le fichier source.

Option Explicit
Sub ImportData()
Dim i As Long, dl As Long
Dim wd As Worksheet, ws As Worksheet ' destination, source
Dim sws As String, NomFichier As Variant
Dim jusque As Long, depuis As Long

    Set wd = ThisWorkbook.Sheets(1)
    dl = wd.Range("A" & Rows.Count).End(xlUp).Row

    NomFichier = Application.GetOpenFilename("Classeurs Excel(*.xlsx),*.xlsx)")
    If NomFichier = False Then Exit Sub
    Workbooks.Open Filename:=NomFichier
    NomFichier = Dir(NomFichier)
    Set ws = Workbooks(NomFichier).Sheets(1)
    sws = "[" & NomFichier & "]Feuil1"
    depuis = ws.Range("K:K").Find("*").Row
    jusque = ws.Range("K" & Rows.Count).End(xlUp).Row

    wd.Activate

    For i = 2 To dl
        If Cells(i, 1) <> "" Then
            Cells(i, 2).FormulaR1C1 = _
                "=SUMPRODUCT((" & sws & "!R" & depuis + 1 & "C2:R" & jusque & "C2=RC[3])*(" & sws & "!R" & depuis + 1 & "C3:R" & jusque & "C3=RC[-1])*(" & sws & "!R" & depuis + 1 & "C7:R" & jusque & "C7=RC[1])*(ROW(" & sws & "!R" & depuis + 1 & "C1:R" & jusque & "C1)-ROW(" & sws & "!R" & depuis & "C1)))"
            If Cells(i, 2) = 0 Then
                Cells(i, 2) = "?"
            Else
                Cells(i, 2).FormulaR1C1 = _
                "=INDEX(" & sws & "!R" & depuis + 1 & "C" & jusque & ":R" & jusque & "C" & jusque & ",SUMPRODUCT((" & sws & "!R" & depuis + 1 & "C2:R" & jusque & "C2=RC[3])*(" & sws & "!R" & depuis + 1 & "C3:R" & jusque & "C3=RC[-1])*(" & sws & "!R" & depuis + 1 & "C7:R" & jusque & "C7=RC[1])*(ROW(" & sws & "!R" & depuis + 1 & "C1:R" & jusque & "C1)-ROW(" & sws & "!R" & depuis & "C1))))"
            End If
            Cells(i, 2).Formula = Cells(i, 2).Value
        End If
    Next i

    Workbooks(NomFichier).Close

End Sub

Bonjour Steelson

Merci beaucoup pour ce code! En effet, ce problème pourrait arriver

Merci beaucoup pour ton aide précieuse!!!

Bonne journée!

BZH83

Rechercher des sujets similaires à "recherchev criteres feuilles"