IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Extraction de certaines données via macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Extraction de certaines données via macro
    Bonjour,

    Je souhaiterais, à partir d'une macro ou d'une formule, extraire une partie des colonnes d'un fichier dont les données répondent à certaines conditions et alimenter un fichier préexistant.

    Je suis débutant et ne sais pas trop comment m'y prendre.

    Pour l'instant, j'ai un classeur1 dans lequel l'utilisateur entre le nom du fichier qui servira d'extraction. L'idée serait qu'en cliquant sur le bouton contenu dans ce classeur1, les données d'un 2e classeur soient automatiquement extraites vers un autre classeur si elles répondent à certaines conditions.

    Merci d'avance pour votre aide.

    Cordialement.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Bonjour,

    Désolé de relancer le forum, mais j'ai cherché ce week-end avec des fonctions comme DECALER et SI et ça ne donne rien.
    Je ne vois pas comment je peux procéder.

    Merci d'avance pour votre aide.

    Cordialement.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Bonjour,

    Je me suis creusé les méninges et j'ai surtout consulté des forums, pour un résultat qui n'est pas fantastique !!

    Je n'arrive pas à ouvrir le fichier comme indiqué ci-dessus. J'ai essayé 4 macros successives (ci-dessous) et j'ai toujours la même erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub Ouvrir_Excel()
     
    'Ne marche pas
    Chemin = "G:\CPT\Activités service compta\Gestion des créances et oppositions\Année 2013\Indus\Suivi des notifications d'indus\"
     
    Workbooks.Open (Chemin + [F6])
     
    End Sub
     
    Sub Macro()
     
    'Ne marche pas
    Dim Dossier As String, Fichier As String, Chemin As String
    Dossier = "G:\CPT\Activités service compta\Gestion des créances et oppositions\Année 2013\Indus\Suivi des notifications d'indus\"
    Fichier = [F6]
    Chemin = Dossier & Fichier
     
    Workbooks.Open Filename:=Chemin
     
    End Sub
     
     
    Sub Macro3()
     
    'Ne marche pas
    Workbooks.Open Filename:="G:\CPT\Activités service compta\Gestion des créances et oppositions\Année 2013\Indus\Suivi des notifications d'indus\" & "journeedu21062013" & ".xls"
     
    End Sub
     
    Sub Macro4()
     
     
    [F6] = ActiveWorkbook.Name
    Workbooks.Open Filename:="G:\CPT\Activités service compta\Gestion des créances et oppositions\Année 2013\Indus\Suivi des notifications d'indus\"
    Windows(F6).Activate
     
    End Sub
    J'ai ensuite essayé d'écrire quelque chose, mais je suis loin d'être sûr que ça marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Sub Extraction_données()
     
        Set wbcible = "G:\BUREAU\Documents\Indus\Relances.xlsx"
        Set wbsource = Workbooks.Open("G:\BUREAU\Documents\[F6]")
    wbsource .Activate
     
    ' If R = 0 and V = "RLC" Then Exit Sub (ici, il faut dire "quand la colonne R est égale à 0 ou la colonne V à RLC, il n'y a rien à faire.
     
    Else 'dans le cas contraire, copie les colonnes de A à W du classeur source dans le classeur cible
        With wbsource
            ActiveSheet.Columns("A:A").Copy wbcible.Sheets("Relances.xlsx").Columns("A:A")
            ActiveSheet.Columns("B:B").Copy wbcible.Sheets("Relances.xlsx").Columns("B:B")
            ActiveSheet.Columns("C:C").Copy wbcible.Sheets("Relances.xlsx").Columns("C:C")
            ActiveSheet.Columns("D:D").Copy wbcible.Sheets("Relances.xlsx").Columns("D:D")
            ActiveSheet.Columns("E:E").Copy wbcible.Sheets("Relances.xlsx").Columns("E:E")
            ActiveSheet.Columns("F:F").Copy wbcible.Sheets("Relances.xlsx").Columns("F:F")
            ActiveSheet.Columns("G:G").Copy wbcible.Sheets("Relances.xlsx").Columns("G:G")
            ActiveSheet.Columns("H:H").Copy wbcible.Sheets("Relances.xlsx").Columns("H:H")
            ActiveSheet.Columns("I:I").Copy wbcible.Sheets("Relances.xlsx").Columns("I:I")
            ActiveSheet.Columns("J:J").Copy wbcible.Sheets("Relances.xlsx").Columns("J:J")
            ActiveSheet.Columns("K:K").Copy wbcible.Sheets("Relances.xlsx").Columns("K:K")
            ActiveSheet.Columns("L:L").Copy wbcible.Sheets("Relances.xlsx").Columns("L:L")
            ActiveSheet.Columns("M:M").Copy wbcible.Sheets("Relances.xlsx").Columns("M:M")
            ActiveSheet.Columns("N:N").Copy wbcible.Sheets("Relances.xlsx").Columns("N:N")
            ActiveSheet.Columns("O:O").Copy wbcible.Sheets("Relances.xlsx").Columns("O:O")
            ActiveSheet.Columns("P:P").Copy wbcible.Sheets("Relances.xlsx").Columns("P:P")
            ActiveSheet.Columns("Q:Q").Copy wbcible.Sheets("Relances.xlsx").Columns("Q:Q")
            ActiveSheet.Columns("R:R").Copy wbcible.Sheets("Relances.xlsx").Columns("R:R")
            ActiveSheet.Columns("S:S").Copy wbcible.Sheets("Relances.xlsx").Columns("S:S")
            ActiveSheet.Columns("T:T").Copy wbcible.Sheets("Relances.xlsx").Columns("T:T")
            ActiveSheet.Columns("U:U").Copy wbcible.Sheets("Relances.xlsx").Columns("U:U")
            ActiveSheet.Columns("V:V").Copy wbcible.Sheets("Relances.xlsx").Columns("V:V")
            ActiveSheet.Columns("W:W").Copy wbcible.Sheets("Relances.xlsx").Columns("W:W")
        End With
        Range("A2").Select
     
    End Sub
    Si quelqu'un pouvait jeter un coup d'oeil à tout ça, ce serait très sympathique. Mon niveau en macro est très très limité et je patauge complètement.

    Merci d'avance.

    Cordialement.

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 61
    Par défaut
    Hey
    Je suis sur un problème similaire au tiens !! je te préviens si je trouve une solution (ou si on m'en propose une sur un autre topic)

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Bonjour,

    En utilisant la discussion suivante (http://www.developpez.net/forums/d11...dition-resolu/), j'ai un peu avancé sur mon projet.

    Voici ce que ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Ouvrir_Excel()
     
    Chemin = "G:\BUREAU\Documents\...\Suivi indus\"
    ext = ".xls"
    nom = ThisWorkbook.Sheets(1).Range("f6").Value
    Workbooks.Open (Chemin & nom & ext)
     
    End Sub
    A ce niveau, tout fonctionne.

    Voici la 2e macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Sub Extraire_donnees()
     
    Dim wbSource As Workbook
    Dim wbCible As Workbook
    Dim CelSource As Range
    Dim CelCible As Range
    Dim shCible As Worksheet
    Dim Lig     As Long
    Dim Col     As String
    Dim NbrLig  As Long
    Dim NumLig  As Long
     
    Chemin = "G:\BUREAU\Documents\...\Suivi indus\"
    ext = ".xls"
    nom = ThisWorkbook.Sheets(1).Range("f6").Value
     
    Set wbSource = Workbooks.Open(Chemin & nom & ext)
    Workbooks.Open "G:\BUREAU\Documents\...\Suivi indus\Relances.xlsm"
    Set wbCible = Workbooks("Relances.xlsm")
    Set shCible = wbCible.Worksheets("Total des indus non soldés")
     
    wbSource.Activate
     
    wbCible.Worksheets("Total des indus non soldés").Activate ' feuille de destination
     
      Col = "R"                 ' colonne de la donnée non vide à tester
      NumLig = 2
      With wbSource     ' feuille source
      NbrLig = .Cells(65536, Col).End(xlUp).Row
      For Lig = 3 To NbrLig
        If .Cells(Lig, Col).Value <> "0" Then
           .Range("A" & Lig & ":W" & Lig).Copy
          NumLig = NumLig + 1
          Cells(NumLig, 1).Select
          ActiveSheet.Paste
        End If
     
      Next
      End With
     
    End Sub
    Ce n'est sans doute pas très "beau", mais ça semble être un bon début, sauf que j'ai une erreur d'exécution 438 "propriété ou méthode non géré par cet objet" à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    Par ailleurs, je souhaiterais rajouter une autre condition dans la colonne V et je ne sais pas comment faire. J'ai essayé de recopier la condition de la colonne R en l'adaptant, mais la macro bloque, car il y a une succession de "for", si j'ai bien compris.
    Enfin, je voudrais fermer le fichier source une fois le travail réalisé.

    Quelqu'un aurait-il une idée, car je tourne vraiment en rond ?

    Merci d'avance.

    Cordialement.

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,

    Apprends-toi à mettre des balises pour éditer tes codes, cliques sur "#", après avoir selectionné le code,
    quand tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
    Col = "R" ' colonne de la donnée non vide à tester
    NumLig = 2
    With wbSource ' feuille source
    NbrLig = .Cells(65536, Col).End(xlUp).Row
    .....
    "Col" ne sert pas à grand chose, pourquoi pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NumLig = 2
    With wbSource ' feuille source
    NbrLig = .range("R" & .Rows.Count).End(xlUp).Row
    attention, je n'ai pas regardé ni analysé tout ton code, je réponds juste pour ta dernière erreur signalée
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Toutes versions] Problème extraction de données via une macro : Guillemets en double !
    Par Invité dans le forum Excel
    Réponses: 1
    Dernier message: 12/01/2015, 12h05
  2. Extraction de donnée via stored procedure
    Par vasseury dans le forum Développement
    Réponses: 1
    Dernier message: 02/05/2008, 15h33
  3. Transfert de données Word vers Excel via macro
    Par Pascalou2008 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/03/2008, 22h02
  4. Réponses: 3
    Dernier message: 16/01/2008, 10h25
  5. Trier des données xls via macro VB
    Par Ch0rizz0_boulo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/09/2007, 14h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo