Création d'une macro VBA d'extraction de données

Bonjour à tous,

j'aurais besoin de votre aide pour créer une macro, malheureusement je ne sais absolue pas comment m'y prendre.

Voici ce que je souhaite faire:

J'ai un onglet "source" qui comporte tout un ensemble de données que j'aimerais analyser. Pour ce faire, je voudrais créer dans l'onglet "extraction données" une macro contrôlée par un bouton nommé "extraction" et qui copierait (à partir de la ligne 4 de l'onglet "extraction données" et dans un ordre précis) le contenu des colonnes: nom client, n° commande, création et date prévue .

Le problème est que suivant la session sur laquelle on travail, les colonnes de l'onglet "source" ne se trouve pas au même endroit. Donc pour extraire les colonnes qui m’intéressent, on ne peut pas le faire par rapport à une colonne (exemple: extraire colonnes B, C, F et J), il faut donc le faire par rapport à l'intitulé de la colonne, a savoir: nom client, n° commande, création et date prévue. Et là je ne sais absolument comment faire, je suis un peu dépassé.

Si vous savez comment créer une telle macro, je vous remercie pour l'aide que vous pouvez me fournir.

Cordialement,

Filipe

Bonjour de barros,

Vois ceci :

Sub extraire()
Dim a
    With Sheets("Source").Range("A1").CurrentRegion
        a = Application.Index(.Value, Evaluate("row(1:" & _
                .Rows.Count & ")"), Array(3, 2, 10, 6))
    End With
   'Restitution
   With Sheets("Extraction données").Range("A3").Resize(UBound(a, 1), UBound(a, 2))
        .FormulaLocal = a
    End With
End Sub

klin89

Bonsoir klin89,

je te remercie d'avoir répondu à mon problème.

Toutefois, t'as macro ne réponds pas exactement a mon besoin.

Si j'execute t'as macro, tout semble fonctionner parfaitement. Mais si j'inverse des colonnes dans l'onglet "source" et que j'execute t'as macro, j'ai "#REF!" qui s'affiche.

Ce qui faudrait c'est ne pas faire reference à la colonne (ex: A, b, C... ou 1, 2, 3...) mais à l'entête.

En fait, il faut que la macro extrait par exemple la colonne dont la cellule de la ligne 1 = nom client, n° commande, création et date prévue.

Si tu as idées, je suis preneur.

Merci encore pour ton aide.

Filipe

Re de barros,

J'ai percuté après coups 8)

Option Explicit
Sub test()
Dim r As Range, x
    For Each r In Sheets("Extraction données").Rows(3).SpecialCells(2)
        With Sheets("Source").Range("a1").CurrentRegion
            x = Application.Match(r.Value, .Rows(1), 0)
            If IsNumeric(x) Then
                .Columns(x).Offset(1).Resize(.Rows.Count - 1).Copy r.Offset(1)
            End If
        End With
    Next
End Sub

klin89

Bonsoir kin89,

j'ai l'impression que ça fonctionne parfaitement. Super!

Par contre si ça ne te dérange pas trop, et ce que tu pourrais commenter t'as macro parce que là j'avoue être totalement dépassé, je comprends pas comment elle procède

Dans tous les cas, je te remercie vraiment beaucoup c'est super sympa.

Rechercher des sujets similaires à "creation macro vba extraction donnees"