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 :

Capture automatique d'info d'un fichier XLS vers un autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut Capture automatique d'info d'un fichier XLS vers un autre
    Bonjour à toutes et à tous,


    Je vous expose mon cas d’école.

    J’ai un premier fichier Excel avec un tableau composé de deux colonnes (colonne Codeportefeuille et colonne plus value) et 5 portefeuilles

    Codeportefeuille Plus value

    P1
    P2
    P3
    P4
    P5



    Je cherche à récupérer automatiquement d’un deuxième fichier excel la plus value par portefeuille de façon à l’intégrer dans mon tableau ci-dessus.

    Le problème est que dans ce deuxième fichier source la position des portefeuilles est aléatoire.

    Je peux avoir par exemple :

    P2 PV2
    P1 PV1
    P3 PV3
    P4 PV4
    P5 PV5


    Ou

    P5 PV5
    P1 PV1
    P3 PV3
    P4 PV4
    P2 PV2



    Il ne m’est pas possible de récupérer les différentes PV en fonction de leurs « places » dans une cellule.

    Il faut donc me semble t-il que je puisse récupérer les différentes PV en fonction des codes portefeuille qui sont identiques dans les deux fichiers.

    Qui aurait une piste pour pouvoir à partir de mon deuxième fichier, reprendre les différentes PV et les affecter correctement dans mon 1er tableau en fonction du code portefeuille.

    Par avance merci à toutes et à tous.

    Oliver

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu lis tour à tour les Codeportefeuille des différents fichiers et tu cherches dans Recap. Une fois trouvé, tu colles dans le fichier recap la valeur de la cellule Offset(0,1)
    Pour ça, tu utilises Find
    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
     
    Dim TableauDesNomsDeFichier(4)
    Dim Fl1 as worksheet
    Dim Plage as range
    TableauDesNomsDeFichier(1) = "Fichier1.xls"
    TableauDesNomsDeFichier(2) = "Fichier2.xls"
    TableauDesNomsDeFichier(3) = "Fichier3.xls"
    TableauDesNomsDeFichier(4) = "Fichier4.xls"
    'Pour les feuilles, idem si nécessaire
    For i = 1 to 4 'boucle sur les fichiers
        Set Fl1 = Workbooks(TableauDesNomsDeFichier(i)).Worksheets("Feuil1")
     
        'boucle sur les Codeportefeuille
        For Each Cel In Fl1.Range("A1:A" & DerniereLigne)
     
            'Recherche dans Recap du Codeportefeuille trouvé dans le classeur(i)
            With Worksheets("Recap")
                Set Plage = .Range(Cells(1, 1), Cells(DerniereLigne, 1))
                Set c = Plage.Find(Cel.value), LookIn:=xlValues, _
                           SearchOrder:=xlByRows, LookAt:=xlWhole )
                    If Not c Is Nothing Then
                        NoCol = c.Offset(0, 1).Value = Cel.Offset(0, 1).Value
                    Else
                        MsgBox "Codeportefeuille non trouvé"
                    End If
            End With
        Next
    Next
    Sans filet, pas testé
    Tu dis

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2006
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 153
    Points : 83
    Points
    83
    Par défaut
    Bonjour et merci .

    J Bonjour et merci de votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                Set c = Plage.Find(Cel.value), LookIn:=xlValues, _
                           SearchOrder:=xlByRows, LookAt:=xlWhole )
    j'obtiens un message d'erreur du type "erreur de copile erreur de synthaxe" je ne vois pas le problème.

    merci de votre aide

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    667
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2007
    Messages : 667
    Points : 870
    Points
    870
    Par défaut
    Bonjour,

    Je pense que tu as un soucis de parentheses, essayes ca pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set c = Plage.Find(what:= Cel.value, LookIn:=xlValues, _
                           SearchOrder:=xlByRows, LookAt:=xlWhole )

Discussions similaires

  1. extraire des infos d'un fichier xls
    Par laurentSc dans le forum Langage
    Réponses: 2
    Dernier message: 29/10/2011, 23h51
  2. Réponses: 0
    Dernier message: 22/01/2008, 10h33
  3. importer d'un fichier xls vers la bd
    Par foulla dans le forum WinDev
    Réponses: 4
    Dernier message: 24/10/2007, 22h32
  4. Exporter fichier XLS vers CSV
    Par arnaud_verlaine dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/09/2007, 17h47
  5. [IMPORTER] fichier .xls vers postgresql
    Par gloogloo dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 31/03/2005, 11h30

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