Création d'une macro vba d'extraction de données Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
d
de barros
Membre habitué
Membre habitué
Messages : 118
Inscrit le : 5 mai 2015
Version d'Excel : 2010

Message par de barros » 30 juin 2016, 20:25

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
test pour creation macro.xlsx
(19.15 Kio) Téléchargé 31 fois
Avatar du membre
Klin89
Membre dévoué
Membre dévoué
Messages : 637
Appréciations reçues : 29
Inscrit le : 28 mai 2011
Version d'Excel : 2003 FR

Message par Klin89 » 30 juin 2016, 21:05

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
d
de barros
Membre habitué
Membre habitué
Messages : 118
Inscrit le : 5 mai 2015
Version d'Excel : 2010

Message par de barros » 30 juin 2016, 21:40

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
test pour creation macro.xlsm
(28.58 Kio) Téléchargé 36 fois
Avatar du membre
Klin89
Membre dévoué
Membre dévoué
Messages : 637
Appréciations reçues : 29
Inscrit le : 28 mai 2011
Version d'Excel : 2003 FR

Message par Klin89 » 30 juin 2016, 21:58

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
d
de barros
Membre habitué
Membre habitué
Messages : 118
Inscrit le : 5 mai 2015
Version d'Excel : 2010

Message par de barros » 30 juin 2016, 22:17

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.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message