Extraction données

bonjour

Dans la feuil1, j'ai une plage de données allant de P1 à P500000 et contenant des nombres allant de 01 a 99.

J'ai une deuxieme plage allant de Q1 a Q500000 et contenant des nombres allant de 00 a 99.

Je voudrais dans la feull2 avoir un tableau où en a1 je puisse avoir le nombre de fois où le nombre 01 de la 1ere plage et le nombre 00 de la seconde sont cote a cote dans la feuill1. En a2, 01 et 01puis en A3, 01 et 02, etc...pui en B1 02et 00, b2 02et 01, etc... etc....

J'espere m'avoir bien exprimer

Merci pour votre aide

Bonjour

Dans la feuille 2 : A1 = 1 --- B1 = 0

En C1, tu mets cette formule :

=SOMMEPROD((Feuil1!$P$2:$P$50000=A1)*(Feuil1!$Q$2:$Q$50000=B1))

A mon avis, tu auras plus vite fait de modifier les valeur de A1 et B1 plutôt que de préparer 9800 lignes

Amicalement

Nad

Bonjour et bienvenue,

Fournis une feuille exemple, quelques lignes suffiront

à comprendre ton souhait.

Amicalement

Claude

voici le classeur exemple.

30classeur1.xlsx (66.58 Ko)

Feuille 1 avec les deux colonnes de nombres et feuille 2 le tableau a réalisé avec a chaque intersection de ligne et colonne, le nombre de fois ou le deux nombres se rencontre sur la meme ligne de la feuille 1.

pas facile a expliquer !!

Merci

Bonjour

Dans le classeur

Les 2 colonnes sont nommées Col1 et Col2

Le tableau des résultat est au Format personnalisé Standard;Standard; pour éviter l'affichage de la valeur 0

Cordialement

32classeur1.zip (104.26 Ko)

Bonjour

La même chose, mais avec une macro (à cause du temps de recalcul si changement de données dans les colonne P ou Q) - Durée de la macro 9 secondes - S'effectue dès que l'on va sur la feuille 2.

Amicalement

Nad

Bonjour à tous,

Je trouve un décalage d'une ligne avec Amadéus ?

Sub TabloValeurs2()
Dim Lg&, Lg2%, i%, cL&
'Macro par Claude Dubois pour "thval" Excel-Pratique le 12/02/11
    Application.ScreenUpdating = False
    Sheets("Feuil2").Range("b2:cw100").ClearContents

        '--- prépare ---
    Sheets("Feuil1").Activate
    Rows(1).Insert
    Range("p1") = "lib1"                                        'en-tête pour filtre
    Range("q1") = "lib2"
    Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row

        '--- filtre sans doublons "Feuil3" temporaire ---
    With Sheets("Feuil3")
        Range("p1:q" & Lg).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
        Range("x1:x2"), CopyToRange:=.Range("a1:b1"), Unique:=True
        Rows(1).Delete
        Lg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
        Lg2 = Sheets("Feuil1").Cells.Find("*", , , , xlByRows, xlPrevious).Row
        .Range("c2:c" & Lg) = _
        "=SUMPRODUCT((Feuil1!$p$1:$p$" & Lg2 & "=a2)*(Feuil1!$q$1:$q$" & Lg2 & "=b2))"
        .Range("c2:c" & Lg) = .Range("c2:c" & Lg).Value         'en dur

        '--- récupère les valeurs ---
            For i = 2 To Lg
                Lg2 = .Cells(i, "a") + 1
                cL = .Cells(i, "b") + 2
                Sheets("Feuil2").Cells(Lg2, cL) = .Cells(i, "c")
            Next i
        .Range("a:e").EntireColumn.Clear
    End With
    Sheets("Feuil2").Activate
End Sub

édit 20h : code et fichier revus

J'utilise SommeProd sur 74 lignes filtrées au lieu de Coutif sur 3050 lignes précédemment.

Amicalement

Claude

28thval-tablo-2.xlsm (80.77 Ko)

Merci

Bonjour,

Pas bavard l'ami !

On aurait bien voulu connaitre le temps de traitement du fichier complet

ainsi que la solution choisie.

Claude

a resolu3
Rechercher des sujets similaires à "extraction donnees"