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 :

Extraire des données d'une même cellule, dans plusieurs fichiers


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Extraire des données d'une même cellule, dans plusieurs fichiers
    Bonjour,

    J'ai un petit souci, je cherche à extraire les données qui sont dans plusieurs fichiers excel. En faite à partir de factures de plus de 7 ans d'une entreprise, je dois reconstituer le fichier client. Les noms, prénoms, adresses... sont dans les mêmes cases selon les différents fichiers (et pas dans différentes feuilles, ce qui complique tout) à quelques exceptions près. Si cela avait été dans des feuilles, je n'aurais eu ce probème.

    Je cherche à faire une macro qui soit capable d'ouvrir (si nécessaire) les fichiers concernés et d'extraire ces données dans les cases indiquées et de les reporter dans un autre tableau qui aura plusieurs colonnes (noms, ...) de façon à créer un liste.

    Merci pour tout réponse

    Chicanne

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Points : 306
    Points
    306
    Par défaut
    Tu as plusieures possibilités.
    Si tu connais les noms des différents fichiers, inclure dans ta procédure un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbook open("chemin et nom")
    suivi de

    Mais il y a aussi un tutoriel sur la facon de travailler dans des fichiers sans les ouvrir

    Si tu ne connais pas les noms des fichiers, ouvres les avants et ensuite fait un truc du genre

    ou alors


  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup pour cette astuce.

    Connais-tu la macro qui permettra d'extraire les données d'une cellule pour les envoyer dans mon autre fichier excel (tableau) qui constitura par la suite la liste de clients?

    Chicanne

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Des détails!
    J'ai trouvé un code
    ça marche bien pour trouver le nom du fichier, la date du jour et la date de création du fichier, mais ça ne m'extrait pas le nom, l'adresse et la ville qui sont dans les cases C7, C8, C9 des fichiers. (voir partie btnImport_QuandClic)

    Si quelqu'un arrive à me trouver l'erreur, je lui en serait très reconnaissant:

    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    Sub btnImport()
    Dim NbFichiers As Integer
    ' Dossier des classeurs à traiter
    Const Dossier As String = "Z:\Stage - Adeline\Aupal\Dossier"
    'à modifier pour pointer sur le dossier désiré'
    End Sub
     
    Private Sub Entete()
    ' Tout effacer
    Cells.Clear
    Range("A3").Formula = "Fichier"
    ' A tout hasard cela peut être interessant
    ' d'avoir ces infos sur les fichiers
    Range("B3").Formula = "Date de transfert"
    Range("C3").Formula = "Date de Facture"
    Range("D3").Formula = "Nom ou Raison sociale"
    Range("E3").Formula = "Adresse"
    Range("F3").Formula = "Ville"
     
     
    End Sub
     
     
     
    Private Sub ListeFichiersDans(NomDossierSource As String)
    Dim FSO As Scripting.FileSystemObject
    Dim DossierSource As Scripting.Folder
    Dim fichier As Scripting.File
    Dim r As Long
     
    Set FSO = New Scripting.FileSystemObject
    Set DossierSource = FSO.GetFolder(NomDossierSource)
     
    ' Mettre le compteur à 0
    NbFichiers = 0
    ' Récupérer en haut la 1ere ligne vierge
    r = Range("A65536").End(xlUp).Row + 1
     
    ' Balayer le dossier et extraire le nom des fichiers
    For Each fichier In DossierSource.Files
    Cells(r, 1).Formula = fichier.Name
    Cells(r, 2).Formula = fichier.DateCreated
    Cells(r, 3).Formula = fichier.DateLastModified
    NbFichiers = NbFichiers + 1
    r = r + 1
    Next fichier
     
    Set fichier = Nothing
    Set DossierSource = Nothing
    Set FSO = Nothing
    End Sub
     
    ' Permet de lire une valeur dans un fichier Excel fermé
    Private Function ExtraireValeur(Dossier, fichier, feuille, Cellule)
    Dim argument As String
    argument = "'" & Dossier & "[" & fichier & "]" & feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
    ExtraireValeur = ExecuteExcelMacro(argument)
    End Function
     
    Sub btnImport_QuandClic()
    Dim Debut As Variant
    Dim NumeroLigne As Integer, i As Integer
    Dim NomFichier As String
    Dim NomFeuille As String
    Const Dossier As String = "Z:\Stage - Adeline\Aupal\Dossier"
     
    ' Par curiosité
    Debut = Time()
    Application.ScreenUpdating = False
    Entete
    ListeFichiersDans Dossier
     
    ' Si un onglet de NomFichier ne s'appelle pas NomFeuille
    ' une erreur #REF! est incrite dans les cellules concernées
     
    ' On démarre à cette ligne
    NumeroLigne = 4
    For i = 1 To NbFichiers
    NomFichier = ShImport.Range("A" & NumeroLigne)
     
    Cells(NumeroLigne, 4).Formula = ExtraireValeur(Dossier, NomFichier, NomFeuille, "C7")
    Cells(NumeroLigne, 5).Formula = ExtraireValeur(Dossier, NomFichier, NomFeuille, "C8")
    Cells(NumeroLigne, 6).Formula = ExtraireValeur(Dossier, NomFichier, NomFeuille, "C9")
     
     
    NumeroLigne = NumeroLigne + 1
    Application.StatusBar = i & " / " & NbFichiers
    Next
     
    Application.StatusBar = "Terminé : " & Format((Time() - Debut) * 100000, "0.00")
     
    ' Revenir en haut à gauche
    With ActiveWindow
    .ScrollRow = 1
    .ScrollColumn = 1
    End With
     
    Rows("3:3").Font.Bold = True
    Columns("B:D").Select
    With Selection
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlBottom
    End With
    Columns("A:I").Columns.AutoFit
    Range("A1").Select
     
    ' Rafraichier l'écran à la fin du traitement
    Application.ScreenUpdating = True
    End Sub
     
     
     
    Private Sub Auto_Open()
    ' S'exécutera automatiquement à l'ouverture du fichier
     
    With ActiveWindow
    .ScrollRow = 1
    .ScrollColumn = 1
    End With
    Range("A1").Select
    End Sub
    Je suis désolée pour la présentation mais je ne sais pas comment faire le petit encadré.

    Merci
    Chicanne

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    salut
    si je résume bien, tu as un gros tas de fichier facture, et dans chaque fichier, tu ne veux récuperer qu'une seule série d'infos (quand elle existe)
    mes questions :
    un fichier facture contient une feuille renseignées, ou plusieurs?
    faut il verifier le format ou tu es sur que par exemple l'adresse est toujour dans la même case
    tes fichiers sont t'ils tous dans le même répertoire?
    si on rencontre deux fois l'entreprise untelle, la prend tu en compte une deuxieme fois (cas ou tu veuille faire une statistique) ou es ce inutile (cas ou tu ne veux que récuperer la liste sans doublon)? ou remplace tu les données (en cas de changement de téléphone, par exemple, et cela supposerais qu'il y ait une date qui puisse servir de référence)?

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    En faite, c'est ça , j'ai des centaines voire des milliers de factures où il n'y a qu'une seule feuille dans chaque fichier. Par contre il a donné des noms différents aux feuillets parfois, sur les sept ans, il a aussi changé de case pour la position des noms...Mais ça encore, il est resté sur les mêmes cases sur une même année, et les fichiers factures sont dans des dossiers pour chaque année donc j'aurai juste à modifier un peu la macro pour traiter chaque dossier.

    Pour les doublons, je pensais par la suite les indentifier avec une mise en forme conditionnelle, mais si tu as une meilleure idée...

    Mais je ne dois extraire que le nom (voir prénom, mais qui sont dans la même case), l'adresse, et le code postal + ville (dans la même case). Donc je ne pense pas être trop confronter à la réactualisation de données comme le numéro de tel.

    Mais il arrive que quand l'entreprise avait une boîte postale, qu'il décale tout, alors je serais obligée de revérifier dans mon tableau excel (fichier client) qu'il n'y a pas d'erreur.

    Merci pour ta réponse

    Chicanne

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    tu devrais m'envoyer en mp deux ou trois fichier facture type, disons deux avec la principale mise en page et une qui differre, maniere de voir s'il n'y a pas moyen d'en sortir quelque chose, et aussi un exemplaire du fichier sur lequel tu veux collecter tes renseignements. je pense que je peux t'aider , j'ai déja fais quelque chose de ce genre.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    je veux bien mais en message privé je ne peux pas envoyer de pièce jointe!!!!

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut J'ai trouvé une solution quand même!
    Je t'envoie quatre factures qui correspondent aux quatres premières de l'année 2007, j'ai enlevé le nom et le logo de l'entreprise, je pense que tu comprendras. Mais ça ne devrait pas te dérranger pour la macro logiquement.

    Je t'ai également mis en pièce jointe le fichier "Import " dans lequel la macro a fonctionné en partie, ceux sont donc les colonnes "Noms ou Raison sociale", "Adresse" et "Ville" que je ne parviens pas à remplir.

    Comme tu peux le constater, après quelques années il ne s'est plus trop fouler pour remplir l'adresse... pour des clients qu'il devait avoir depuis longtemps.
    Mais comme j'ai les factures depuis 7 ans je devrais m'y retrouver. Par contre on doit donc exclure le type de macro qui efface les doublons et ne concerve que les données les plus récentes.

    Je risque de ne pouvoir me reconnecter que lundi, donc ne t'inquiète pas si tu n'a pas de nouvelles entre temps.

    Merci beaucoup et bon weekend.

    Chicanne
    Fichiers attachés Fichiers attachés

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut
    hello.
    bon, je t'ai fais un petit machin qui devrais te dépanner. je n'ai pas réussi a faire en lecture de fichier fermé, je ne sais pas pourquoi mais ExecuteExcelMacro est quelque chose que je n'arrive pas a avoir chez moi. donc en ouvrant les fichiers, ça me fais un temps d'a peu près 5 minutes pour 2000 fichiers, juste le temps d'aller te chercher un café . comme de toutes manieres, théoriquement, tu n'en a besoin qu'une fois, ça devrais faire l'affaire.
    je te conseille de copier toutes tes factures dans un seul répertoire, ça sera plus simple. je n'ai pas prévu de recherche de doublon. par contre j'ai prévu un lien vers chaque fichier, de la sorte si tu vois que toutes les case de cette ligne sont vide, c'est que tu as un décalage, il ne te reste plus qu'a suivre le lien. également, la recherche s'effectue sur toutes les feuilles de chaque fichier, plus de chance de collecter les renseignements.
    tu n'as rien a changer au code pour t'en servir. tiens moi au courant

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Génial!!!!!!

    ça a marché directement, il m'a traité mes 1800 fichiers environ, je vais me débrouiller pour les doublons, avec une mise en forme conditionnelle pour la case " Nom ou raison sociale" et je pense que ça pourra le faire. En tout cas le plus gros est fait.

    Vraiment un grand merci pour ta compétence et ta rapidité...

    Bonne continuation

    Chicanne

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2014
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par alsimbad Voir le message
    hello.
    bon, je t'ai fais un petit machin qui devrais te dépanner. je n'ai pas réussi a faire en lecture de fichier fermé, je ne sais pas pourquoi mais ExecuteExcelMacro est quelque chose que je n'arrive pas a avoir chez moi. donc en ouvrant les fichiers, ça me fais un temps d'a peu près 5 minutes pour 2000 fichiers, juste le temps d'aller te chercher un café . comme de toutes manieres, théoriquement, tu n'en a besoin qu'une fois, ça devrais faire l'affaire.
    je te conseille de copier toutes tes factures dans un seul répertoire, ça sera plus simple. je n'ai pas prévu de recherche de doublon. par contre j'ai prévu un lien vers chaque fichier, de la sorte si tu vois que toutes les case de cette ligne sont vide, c'est que tu as un décalage, il ne te reste plus qu'a suivre le lien. également, la recherche s'effectue sur toutes les feuilles de chaque fichier, plus de chance de collecter les renseignements.
    tu n'as rien a changer au code pour t'en servir. tiens moi au courant
    Bonjour alsimbad,

    Cette macro que tu as fais pour chicanne me serait grandement utile à moi aussi... Pourrais-je y avoir accès?

    Merci d'avance

    Cordialement

  13. #13
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Bonjour @alsimbad,
    Je suis surpris que vous n'ayez pas posté la réponse étant donné que vous n'êtes pas nouveau;
    car la base d'un forum c'est le partage et votre réponse pourrait servir à d'autre (lors d'une recherche …), comme par exemple pour @Alex LP qui s'est manifesté.
    On évolue tous grâce à se partage/savoir quelque soit notre niveau.
    Je ne dis pas que vous faites cela à chaque fois, c'est surement exceptionnel.
    En partant sur l'hypothèse que tout le monde agit comme cela dans les forums, ceux-ci deviendraient inutile.

    Donc ça serait sympa de poster la solution donnée
    Merci
    Ryu
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  14. #14
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Ryu,

    Calme-toi.
    Cette discussion a 9 ans et le fichier joint a dû être retiré pour faire de la place...
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  15. #15
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    mea culpa, milles excuses
    Réponse récente d'@Alex LP mais je n'avais pas vu la date du post, la prochaine fois je regarderai de plus près la date de départ d'un post

    Je ne me serai pas douté qu'un post aussi vieux puisse remonter en récent, maintenant je le sais
    Sinon je suis toujours calme , self control et courtois et je reconnais quand j'ai tord, ce qui est le cas ici
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  16. #16
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Âge : 61
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 563
    Points : 1 691
    Points
    1 691
    Par défaut connexions plus rares
    Bonjour le forum et salut ruy
    désolé de ne pouvoir répondre à te question, je me connecte moins maintenant. merci alaintech d'avoir répondu pour moi
    en effet cette discussion a neuf ans, je ne m'en rappelle absolument pas . c'était en quelque sorte un fichier à usage unique. tu aura mieux fait d'exposer ton problème au forum et d'écouter une solution plus moderne. de plus, je suis complètement autodidacte dans excel, sans formation informatique, donc je ne suis pas forcément le plus qualifié pour te répondre, et j'ai un peu perdu la main. désolé

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 07/07/2013, 11h38
  2. extraire des données d'une dataset chargé d'un fichier xml
    Par Agnès22 dans le forum Windows Presentation Foundation
    Réponses: 12
    Dernier message: 18/03/2010, 15h29
  3. Réponses: 10
    Dernier message: 08/02/2007, 13h18
  4. Réponses: 3
    Dernier message: 06/02/2007, 11h04
  5. Réponses: 4
    Dernier message: 17/01/2007, 09h09

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