Remplir un tableau avec infos d'une liste

Bonsoir tout le monde,

Voila, encore un petit soucis.

Je voudrais remplir un tableau en relevant des infos sur une liste de données.

j'ai construit un fichier exemple avec des données lisibles pour faciliter le travail.

Tout y est expliqué , en esperant que c'est assez clair et surtout possible!

En vous remerciant grandement

Cordialement

69profil-v1.xls (17.50 Ko)

Bonsoir

Ton fichier en retour :

Amicalement

Nad

Bonsoir

salut Nad

Cordialement

48profil-v1bis.zip (4.18 Ko)

Bonjour a tous,

Un grand merci pour vos réponses.

il va falloir que je le test, mais j'ai un peu peur que ce soit un peu long par formule (plus de deux milles lignes à traiter)?.

et n'y a t'il pas moyen que les Numéros s'inscrivent tout seul dans le tableau (juste une fois par numéro comme le fichier à Amadeus).

Enfin, il faut que je test. mais si quelqu'un a aussi une solution par macro qui soit plus rapide ( les formule ne me dérange pas mais je suis sur un réseau au boulot avec de pc pas terrible, et j'ai un peu peur que le traitement des formules vu le nombre qu'il va y avoir fasse ramer l'ensemble)

Désolé si j'ai l'air un peu vague, mais j'ai moi-même un doute sur le résultat final, en fait ce que je veux voir a la fin , c'est faire des statistiques sur le changement de profil, savoir à la fin pourquoi les pièces doivent passer une deuxieme fois à l'atelier (c'est plus compréhensible avec le vrai fichier mais bon...)

En attendant, je vais tester.....

Cordialement

Bonjour à tous,

Je regarde une solution VBA mais !

Dans ton tableau de droite, on retrouve 2 colonnes "carré" (en O et R), normal ou erreur ?

Je supprime cette 2ème colonne,

Confirme

Amicalement

Claude

Bonjour

Salut Claude (tu vois, j'y prend goût)

Ton fichier avec macro

61profil-v2.zip (25.67 Ko)

Edit : remplacer la ligne

Sheets("Feuil1").Range("Numeros").Copy Sheets("Feuil2").Range("A2")

par

Range("Numeros").Copy Sheets("Feuil2").Range("A2")

Amicalement

Nad

Bonjour Nad, forum,

Je partais dans une autre direction mais ta solution est + simple,

--- petites remarques sur ton code (constructives) ---

1) le Step -1 t'oblige à gérer l'erreur de ligne zéro

2) c = c.Value => évite de trainer les formules

Application.ScreenUpdating = True n'est pas obligatoire en fin de macro

évite les .Select

Ce qui donne:

Sub Numéros()
Dim i As Integer, j As Integer
Dim c As Range

Range("A2:N10000").ClearContents

    Application.ScreenUpdating = False
    Range("Numeros").Copy Sheets("Feuil2").Range("A2")

    j = Range("A65536").End(xlUp).Row

    For i = 1 To j
         If Cells(i + 1, 1) = Cells(i, 1) Then Cells(i + 1, 1).ClearContents
    Next i

    For Each c In Range("B2:N" & j)
         c.FormulaR1C1 = "=IF(ISNUMBER(MATCH(R1C,Feuil1!RC6:RC11,0)),""X"","""")"
         c = c.Value
    Next c
Range("A1").Activate
End Sub

Bonne journée

Claude

Edit de Nad : merci Claude - J'ai bien compris la correction

-- Mer Juin 23, 2010 11:47 am --

re,

Autre version, je la met quand même

Sub Tableau2()
'Macro par Claude Dubois pour "maguetlolo" Excel-Pratique le 23/06/10
Dim Lg&, i%, J As Byte, Cl As Byte
    Application.ScreenUpdating = False
    Lg = Range("b65536").End(xlUp).Row

    For i = 2 To Lg
        For J = 6 To 11 'colonnes
                Select Case Cells(i, J)
                    Case Is = "rond":       Cl = 3 'Cl = colonne
                    Case Is = "carré":      Cl = 4
                    Case Is = "triangle":   Cl = 5
                    Case Is = "rectangle":  Cl = 6
                    Case Is = "lourd":      Cl = 7
                    Case Is = "leger":      Cl = 8
                    Case Is = "moyen":      Cl = 9
                    Case Is = "moche":      Cl = 10
                    Case Is = "beau":       Cl = 11
                    Case Is = "bleu":       Cl = 12
                    Case Is = "rouge":      Cl = 13
                    Case Is = "court":      Cl = 14
                    Case Is = "long":       Cl = 15
                    Case Else: Exit For
                End Select
            With Sheets("Feuil2")
                If Cells(i, 2) <> Cells(i - 1, 2) Then
                    .Cells(i, 2) = Cells(i, 2)
                End If
                    .Cells(i, 1) = Cells(i, 1) 'si besoin colonne A
                    .Cells(i, Cl) = "X"
            End With
        Next J
    Next i
        Sheets("Feuil2").Activate
End Sub

Faudrait comparer les 2 solutions avec les 8000 lignes

Amicalement

Claude

Bonjour à tous

Claude en effet, la deuxième colonne "carré" est une erreur, désolé tu as eu raison de la supprimer.

Tes deux macros sont très bien, cependant, la 1ere est la plus rapide (essai sur 10 000 lignes)

Nad, ta macro fait également le boulot parfaitement mais est plus longue que celles de Claude (je me permet la critique mais je ne suis pas capable d'en faire autant )

Voila, pour résumer, c'est parfait! et je vous adresse mes plus grands remerciements.

Bonne fin de journée à vous tous.

Cordialement

Bonsoir à tous,

Tes deux macros sont très bien, cependant, la 1ere est la plus rapide (essai sur 10 000 lignes)

---- Précision ----

La + rapide dont tu parles est celle de Nad,

elle est + rapide que sur son 1er fichier car elle n'a plus les formules à calculer avec c = c.Value

et sur 10000 lignes çà se sent !

à la prochaine

Claude

Re bonjour,

J'ai peut-etre mal compris, j'ai réessayer et je confirme que les macros "Tableau" sont bien plus rapide que les macros "Numeros".

Peut-etre est-ce parceque dans la macro "Numeros" il y a utilisation de formule et que j'ai essayer avec mon petit Pc portable qui n'a que les performances d'un "petit Pc" j'essaierais sur l'autre (le gros Pc) ce soir et je vous dirais ce qui se passe alors.

Cordialement

Maguetlolo

PS: j'enleve le résolu juste le temps de finir la discussion, mais il est bel et bien résolu pour moi. je le remettrais ce soir

re,

Dans le doute, tu peux facilement ajouter un chrono,

en début de macro

Dim x
    x = Time

et à la fin

        MsgBox ("temps macro = " & Format(Time - x, "hh:mm:ss"))
End Sub

Claude

re:

avec le "petit PC" déja :

Macro Numero 01:28:00 Macro Tableau2 00:00:06

A tout à l'heure

-- Mer Juin 23, 2010 9:22 pm --

Re:

Et voici le résultat, la macro "Tableau" gagne sur la macro "Numéro"

temps macro

Tester sur 10 500 lignes

Encore merci a vous pour le coup de main

Cordialement

Rechercher des sujets similaires à "remplir tableau infos liste"