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

Excel Discussion :

Comment extraire des données de deux fichiers excel


Sujet :

Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Comment extraire des données de deux fichiers excel
    Bonjour je doit regulierement importer certains données d'un fichier excel vers un autre et ce sur les données un colonne identique des deux fichiers.
    Comment faire?

  2. #2
    Membre actif Avatar de Drost
    Profil pro
    Inscrit en
    Août 2007
    Messages
    192
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2007
    Messages : 192
    Points : 212
    Points
    212
    Par défaut
    Hello,

    Peux tu nous expliquer plus précisément ce que tu souhaites réalisé, plus tu seras précis dans tes explications plus on pourra t'apporter une réponse adapté.

    De plus as tu déjà fais un peu de programmation sur VBA?

    Très Cordialement,

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    salut tout d'abord de la programmation proprement dit en vba non à moins que faire un site en html y ressemble. Par contre j'ai déja fait de l'objetpal.
    D'ailleurs ce que je veux faire ici je le faisait en passant par Paradox jusqu'a présent.Mais c'est trop fastidieux à faire.
    Je dois faire une requete pour extraire des données une fichier excel avec comme argument des données d'un autre fichier.
    Cas concret j'ai un fichier "liste de prix" que je recois d'un fournisseur qui contient +-8000 articles avec comme
    enregistrement ref. art et prix, et j'ai un autre fichier qui contient +-1000 articles avec entre autre comme enregistrement ref. art et prix et je dois extraire les données correspondant de la première au deuxieme.
    Et je dois faire cette opération un dizaine fois par an.
    Je ne sais pas si je suis sur le bon forum pour ce probleme si c'est le cas désole de vous avoir dérangés
    merci d'avance

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour heyntje,

    Tout d'abord 3 questions :

    1) le fichier que vous importez est un fichier .xls ou un fichier texte (.txt ou .csv par exemple) ?

    2) que doit-on faire si le fichier importé comporte des articles non présents dans votre fichier .xls : les ajouter ?

    3) inversement si votre fichier .xls comporte des articles non présents dans le fichier importé doit-on les conserver ou les supprimer ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Salut Jean-Jaques
    Les 2 fichiers sont en excel et je ne dois pas ajouter les articles non present dans le deuxieme ni supprimer les articles de trop.
    J'explique j'ai un fichier articles qui proviennent de plusieurs fournisseurs et quand je recoit d'un fournisseur une nouvelle liste de prix de ces articles a lui je dois mettre ces articles à jour dans mon fichier articles.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re heyntje,

    Et bien pour ne pas perdre de temps, aussi bien pour vous que pour celui qui vous répondra (que soit soit moi ou non), encore une question :

    vous avez posé la question sur "Excel" et non sur "VBA Excel" donc voulez-vous une solution à travers une formule Excel ou du code Vba ous indifféremment l'un ou l'autre ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Peu importe du moment que je peux aisement refaire l'operation dans le future.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Heyntje,

    Ci-dessous les lignes de code que vous pouvez sélectionner puis clic droit et "Copier".

    Ensuite vous pouvez ouvrir une copie de votre fichier ARTFOUR (pour faire des essais) et Outils, Macro, Visual Basic Editor.

    Vous cliquez sur "Insertion" puis sur "Module".
    Dans la fenêtre de gauche "Module1" apparaît. Vous double-cliquez dessus puis vous cliquez dans la fenêtre de droite puis clic droit et "Coller" (vous connaissez peut-être cette procédure mais comme je n'en suis pas certain).

    Regardez les 1ères lignes qui comportent des commentaires, elles vous permettent de modifier la valeur affecter aux variables si besoin est.

    Vous n'ouvrez pas le fichier du fournisseur il sera ouvert par le code.

    Tenez-moi au courant et n'hésitez pas s'il y a des modifications ou si vous avez des questions.

    Si cela semble vous convenir on pourra ensuite utiliser ce code dans un classeur qui servira, à travers un formulaire, de choisir les fichiers à traiter et qui permettra de ne pas avoir à copier le code ni à le modifier.

    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
    Option Explicit
    Public mpath$, nf$, fact$, art1$, art2$
    Public dl1&, dl2&, pl1&, pl2&, i&
    Public cr1 As Byte, cr2 As Byte
    Public mfl1, mfl2, prix, nfich2, nf1, nf2
    Sub Maj_prix()
    'indiquez ici le chemin ou se trouve le fichier du fournisseur
    mpath = "C:\Divers\"
    'indiquez ici le nom du fichier envoyé par le fournisseur
    nfich2 = "Prixfour"
    'indiquez ici le nom de la feuille contenant le tarif dans votre fichier
    nf1 = "Feuil1"
    'indiquez ici le nom de la feuille pour le fichier fournisseur
    nf2 = "Feuil1"
    'première ligne de données du fichier fournisseur (vous pouvez modifier si nécessaire)
    pl1 = 2
    'première ligne de données de votre fichier (vous pouvez modifier si nécessaire)
    pl2 = 2
    'colonne contenant la référence article dans votre fichier (vous pouvez modifier si nécessaire)
    cr1 = 2
    'colonne contenant la référence article dans votre fichier (vous pouvez modifier si nécessaire)
    cr2 = 1
     
    fact = ThisWorkbook.Name
    nf = Dir(mpath & nfich2 & ".xls")
     
    If nf = "" Then
    MsgBox "Le fichier du fournisseur n'a pas été trouvé." & Chr(10) & Chr(13) & _
    "Vérifiez le nom indiqué dans les variables : 'mpath' & 'nfich2'"
    Exit Sub
    End If
     
    Application.ScreenUpdating = False
    Workbooks.Open mpath & nfich2 & ".xls"
    Sheets(nf2).Select
    dl2 = Range("A65536").End(xlUp).Row
    Range(Cells(pl2, cr2), Cells(dl2, cr2 + 1)).Select
    Selection.Sort Key1:=Range(Cells(pl2, cr2), Cells(dl2, cr2)), Order1:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    Set mfl2 = Workbooks(nfich2 & ".xls").Sheets(nf2)
     
    Windows(fact).Activate
    Sheets(nf1).Select
    dl1 = Range("A65536").End(xlUp).Row
     
    Range(Cells(pl1, cr1 - 1), Cells(dl1, cr1 + 1)).Select
    Selection.Sort Key1:=Range(Cells(pl1, cr1), Cells(dl1, cr1)), Order1:=xlAscending, _
    Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    Range(Cells(pl1, cr1 + 1), Cells(dl1, cr1 + 1)).Select
    Selection.NumberFormat = "0.00"
     
    For i = pl1 To dl1
    art1 = UCase(Cells(i, cr1))
    art2 = UCase(mfl2.Cells(pl2, cr2))
     
    If art2 < art1 Then
    pl2 = pl2 + 1
    i = i - 1
    End If
     
    If art2 = art1 Then
    prix = mfl2.Cells(pl2, cr2 + 1)
    Cells(i, cr1 + 1) = prix
    pl2 = pl2 + 1
    End If
     
    Next i
     
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Workbooks(nfich2 & ".xls").Close SaveChanges:=False
    Range("A1").Select
    MsgBox "Ce fichier n'a pas été enregistré" & Chr(10) & Chr(13) & _
    "Vous choisissez de l'enregistrer ou non avant de fermer" & Chr(10) & Chr(13) & _
    "Vous pouvez de toutes façons relancer le traitement quand vous le voulez"
     
    Set mfl1 = Nothing
    Set mfl2 = Nothing
    End Sub

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Parfait
    Et dieu créa l'entraide via ce forum.
    Ca marche
    Merci

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

Discussions similaires

  1. comment extraire des données d'un fichier PDF
    Par chcheibani dans le forum Autres Logiciels
    Réponses: 9
    Dernier message: 28/05/2014, 10h38
  2. [MySQL] Comment extraire des données dans un fichier .svc depuis une page web
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/12/2013, 12h02
  3. Inscrire des données dans deux fichiers excel a partir d'un userform
    Par creunch dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 06/09/2010, 11h52
  4. Réponses: 1
    Dernier message: 09/05/2007, 23h10
  5. Réponses: 2
    Dernier message: 20/10/2006, 10h49

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