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 :

Remplir les colonnes d'un fichier à partir d'un autre fichier excel en se basant sur une cellule [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 59
    Points : 41
    Points
    41
    Par défaut Remplir les colonnes d'un fichier à partir d'un autre fichier excel en se basant sur une cellule
    bonjour,
    j'ai deux fichiers excel
    tous les deux contiennent les colonnes suivantes

    code---designation---prix_achat---prix_ventes_gros---prix_ventes_details

    le premier fichier contient tous les articles qu'on vend avec toutes les colonnes remplis
    le deuxieme, un employé le recoit chaque mois du responsable d'importation et contient les articles qu'on vient d'importer avec leur nouveaux prix d'achats et parfois de nouveaux articles qui n'existent pas sur le premier fichier de base et qu'on doit ajouter
    mais les deux colones de prix de ventes sont vides

    alors la tache que fait cet employé est a chaque fois elle parcout le nouveau fichier et lui rempli les cellules vides a partir du premier pour le donner au patron pour comparer et voir s'il doit y avoir une modification de prix de ventes

    alors j'aimerai savoir s'il est possible d'automatiser la tache de remplissage du deuxieme fichier en se basant sur le premier en sachant que le code est unique pour chaque article (clé primaire)

    je peux le faire en creant une petite application avec java ou.... mais j'aimerai savoir s'il est possible qu'avec excel

    merci

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour fou_jea,

    Voici le code que je te propose à mettre dans le fichier depuis lequel tu souhaites importer tes données.

    J'ai appelé mon fichier dans lequel tous tes prix sont "Macros" et celui dans lequel tu veux que les prix soient importés "Macro 2".

    Je te laisse modifier le code ci-dessous à ta guise :
    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
    Sub import_prix()
    Dim cell_move As Range
    Dim cell_ori As Range
    Dim code As String
    Dim flag As Boolean
     
    flag = True
    x = "Macros.xlsm"
     
    'Vérification si le fichier dans lequel tous les prix sont présents est ouvert
    For Each Wkb In Workbooks
        test = Wkb.Name
        If Wkb.Name = x Then
            flag = False
            Exit For
        End If
    Next Wkb
     
    'S'il n'est pas ouvert, on l'ouvre
    If flag Then
       'Mettre le chemin du fichier ici
       Workbooks.Open Filename:="C:\Users\...\Desktop\VBA\Macros.xlsm"
    End If
     
    'Dans le fichier dans lequel on souhaite que les prix soient importés
    With Workbooks("Macros 2.xlsm").Worksheets("Feuil1")
        Set cell_move = .Range("A1")
        For i = 1 To .Columns(1).Find("*", , , , , xlPrevious).Row - 1
            code = cell_move.Offset(i, 0)
     
            With Workbooks("Macros.xlsm").Worksheets("Feuil1")
                'On vérifie que le code unique est bien présent
                Set cell_ori = .Columns(1).Find(code, LookIn:=xlValues, LookAt:=xlWhole)
                'Si oui, on écrase les valeurs
                If Not cell_ori Is Nothing Then
                    cell_move.Offset(i, 3) = cell_ori.Offset(0, 3)
                    cell_move.Offset(i, 4) = cell_ori.Offset(0, 4)
                End If
            End With
        Next i
     
    End With
     
    End Sub
    Sous réserve d'avoir bien compris ta demande, le code est fonctionnel.

    Je te place dans un zip les deux macros : Macros origine + destination.zip.

    J'attends ton retour !

    Cordialement,
    Kimy

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2012
    Messages : 59
    Points : 41
    Points
    41
    Par défaut
    merci kimy_Ire
    c'est exactement ce que je voulais

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

Discussions similaires

  1. [Débutant] télécharger un fichier à partir d'un dossier que son nom se trouve dans une cellule du datagride
    Par mira199191 dans le forum Développement Web avec .NET
    Réponses: 1
    Dernier message: 05/03/2015, 16h37
  2. Réponses: 14
    Dernier message: 15/04/2008, 16h39
  3. Remplir les colonnes dans un TableViewer dynamiquement
    Par gargantua dans le forum Eclipse Platform
    Réponses: 13
    Dernier message: 07/11/2007, 21h13
  4. Remplir les colonnes avec Vista
    Par Yepazix dans le forum Windows Vista
    Réponses: 18
    Dernier message: 23/05/2007, 02h13
  5. Remplir les colonnes d'un fichier excel
    Par craryb dans le forum MFC
    Réponses: 3
    Dernier message: 14/03/2007, 12h37

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