Comme d'habitude je viens à vous après des recherches infructueuses.
J'aurais savoir si et comment il était possible d'extraire des lignes d'une feuille à une autre mais avec deux conditions:
- la première est que je ne veux pas reporter toutes les colonnes de la source
- la deuxième est que je veux mettre une condition à l'extraction des lignes
Dans l'exemple ci-joint je voudrais, par exemple, exporter de l'onglet Source uniquement les colonnes notées dans l'onglet Cible. Mais également n'exporter que les lignes des élèves ayant plus de 20 ans.
En bonus, je souhaite que l'extraction ne commencent qu'à partir d'une certaine cellule dans la Cible mais je pense que cela sera ajustable si on utilise une macro en solution?
avec quelques formules matricielles (à valider par Ctrl+Maj+Entrée)
(Dans l'exemple, j'utilise des noms dynamiques pour simplifier la lecture des formules).
Merci de votre réponse. Le problème en fait est que mon onglet Source est le résultat d'une extraction par macro et va donc être amené à se modifier. Je ne peux donc renseigner aucune des données au préalable.
Pour être plus explicite j'ai ajouté une colonne "Statut" au tableau source. Le résultat que je souhaiterais obtenir est que les lignes s'extraient en fonction de leur statut et pas toutes les colonnes.
J'ai mis en jaune à la main le résultat que je souhaiterais obtenir de façon automatisée.
Après une première analyse de toutes vos réponses, j'ai opté pour la macro qui me parait plus souple pour ce que je veux faire.
Par contre pourriez-vous m'aider car, après tentatives, je n'arrive pas à appliquer mes colonnes dans l'ordre que je veux.
Je voudrais que par exemple que la colonne 5 de la Source devienne la colonne 3 de la Cible et que la colonne 9 de la Source devienne la colonne 13.
J'ai tenté de changer ce bout d'équation sans succès:
For l = LBound(aa) To UBound(aa)
If aa(l, 4) >= 20 Then
n = 1
For NbCol = 1 To UBound(aa, 2)
If NbCol = 1 Or NbCol = 2 Or NbCol = 4 Or NbCol = 7 Then bb(m, n) = aa(l, NbCol): n = n + 1
Next NbCol
m = m + 1
End If
Next l
Sub extrait()
Sheets("Source").Range("A1:H1000").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("G10:H11"), CopyToRange:=Range("A10:E10"), Unique:=False
End Sub