Aligner les données à partir d'une base des données

Bonjour

A partir d'une base des données, j'aimerais extraire des informations selon un critère sur une autre feuille mais que ces information s'alignent les unes après les autres (ligne 1,2,3...) même si dans la base des données elles ne sont pas dans le même ordre.

Bonjour , avec un fichier exemple ce sera plus simple pour comprendre et soumettre une solution.

Bonjour,

Voici une proposition avec en A1 la colonne de recherche et en B1 le fameux critère (texte) :

sub test()
if range("A1").value = "" then goto fin
on error goto fin
if Extraire(range("A1").value, range("B1").value) then goto fin
exit sub
fin:
msgbox "Numéro de colonne incorrect !", 16
end sub

function Extraire(colonne as long, optional critere as string = "*") as boolean

with range("Base")
    if colonne > .columns.count or colonne < 1 then Extraire = true: exit function
    t = .value
    for i = lbound(t) to ubound(t)
        if ucase(t(i, colonne)) like "*" & ucase(critere) & "*" then
            n = n + 1
            for k = lbound(t, 2) to ubound(t, 2)
                t(n, k) = t(i, k)
            next k
        end if
    next i
end with

with range("Extract")
    if .rows.Count > 1 then .delete else .clearcontents
    if n > 0 then .resize(n, ubound(t, 2)).value = t
end with

end function

La procédure ne respecte pas la casse.

Il faudra adapter les 2 noms des 2 tableaux structurés du code ("Base" contenant toutes les infos et "Extract" contenant les données filtrées).

Cdlt,

Saut Xmenpl !

Bonjour,

Saut Xmenpl !

Oui je sais je le suis surement parfois !

Non, je voulais dire saute ! En tant que Xmen, tu dois savoir voler^^ (je dis peut-être n'importe quoi, je ne connais pas trop).

Bon, je recommence : "Salut Xmenpl" !

trop compliqué pour moi. Je ne m'attendais pas à une formule VBA. Je pensais à quelque chose comme "DECALER"...

Comme l'a dit Xmenpl, sans le fichier, ça va être compliqué...

En tout cas, c'est possible, mais, il faudra faire une formule pour chaque colonne et il faudra s'assurer d'avoir un nombre de lignes suffisant :

=SIERREUR(INDEX(COLCHERCHEE;PETITE.VALEUR(SI(ESTNUM(CHERCHE(critere;COLCRITERE));ligne(COLCRITERE));ligne()-ligne(celluleentetes_avecréférencesfigées)));"")

A valider en appuyant simultanément sur ctrl + shift + enter.

Avec VBA, si le code est bien cadré, ce n'est pas très compliqué...

Cdlt,

Voici un exemple avec les 2 solutions (perso, je préfère la solution VBA qui en plus peut-être poussée plus loin).

11filtre.xlsm (22.99 Ko)

La prochaine fois, essayez de joindre un fichier car c'est moi qui ai dû en créer un de toute pièce...

Cdlt,

Rechercher des sujets similaires à "aligner donnees partir base"