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 :

Programme pour comparer 2 fichiers excel et copier les cellules de l'un dans l'autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 1
    Par défaut Programme pour comparer 2 fichiers excel et copier les cellules de l'un dans l'autre
    Bonjour,


    Je suis en train d'effectuer un programme en visual basic sur Excel. Ce dernier compare les valeurs de deux colonnes de deux fichiers excel et vient prendre les valeurs de la colonne d'à côté du fichier 2 et vient la coller dans le fichier 1 à la bonne ligne article.
    Par exemple :
    fichier 1 : fichier 2:
    colonne A : colonne A : Colonne B
    1 3 A
    2 15 B
    3 8 C
    4 1 D

    Je souhaite que la colonne B du fichier 1 affiche donc :
    D
    0
    A
    0

    La difficultée se trouve dans les deux fichiers excel. Il faut savoir que j'en ait créé l'un et que le deuxième est réceptionné. Je ne sais pas quelle options et comment il a été créé.

    Mon code actuel est :


    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
    Set sh2 = Workbooks("Classeur2.xls").Sheets("Feuil1").Range("A1:A500")
    Set sh1 = Workbooks("Classeur1.xls").Sheets("Feuil1").Range("A1:A500")
     
     
     
    For Each c In sh2
    temp = c.Value
    If temp <> "" Then
    Set plage = sh1.Columns("A").Cells.Find(temp)
     
    line = plage.Row
    Workbooks("Classeur1.xls").Sheets("Feuil1").Cells(line, 3).Value = c(1, 3).Value
     
    End If
     
    Next
    Le script plante à la ligne line = plage.row
    Quand je copie le fichier reçu dans un nouveau classeur excel, il bugge aussi mais les valeurs sont bien collés dans mon premier classeur.

    Est ce que quelqu'un a une idée de ce qui se passe et de comment je peut y remédier ?

    Merci par avance pour toute aide que vous pourrez m'apporter.

  2. #2
    Membre éprouvé Avatar de LouiMz
    Homme Profil pro
    Inscrit en
    Février 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 104
    Par défaut
    Concernant le problème:
    Si la valeur de temp <> "" alors on definit plage or pour reprendre votre exemple si la valeur recherchée n'existe pas (par exemple 15) plage doit surement prendre une valeur null dans ce cas là...
    Du coup quand on lui demande de renvoyer la ligne de vide...

    Pour reprendre l'exemple donné plus haut:
    A adapter selon les besoins. Ce code ne traite pas les doublons.

    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
    dim i as integer, j as integer
     
    for i = 1 to 500 'Itération de la ligne 1 à 500 pour le Classeur 1
         for j = 1 to 500 'Itération de la ligne 1 à 500 pour le Classeur 2
         'Si la cellule(i,1) est egale à la cellule(j,1) alors
         'On copie la valeur de la cellule (j,2) dans la cellule (i,2)
              if (workbooks("Classeur1.xls").sheets("Feuil1").cells(i,1).value = _
              workbooks("Classeur2.xls").sheets("Feuil1").cells(j,1).value) then
     
                   workbooks("Classeur1.xls").sheets("Feuil1").cells(i,2).value = _
                   workbooks("Classeur2.xls").sheets("Feuil1").cells(j,2).value
                   j = 501 'Nous permet de sortir de la boucle une fois la valeur trouvée
              else
              'Sinon on met la cellule (i,2) à 0
                   workbooks("Classeur1.xls").sheets("Feuil1").cells(i,2).value = 0
              end if
         next
    next

  3. #3
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Par défaut Même problème sans ligne exacte
    Bonjour, J'ai le même problème sauf que je ne sais pas où la valeur va être présente dans le 2ème excel (je ne connais que la colonne).
    De plus, les données que je veux copier se trouve sur une autre colonne..
    Je pensais réaliser une RechercheV via macro mais je n'arrive pas vu que je suis dans 2 fichiers différents, sauriez vous m'aider ?
    (J'utilise Excel 2016)

Discussions similaires

  1. Réponses: 5
    Dernier message: 15/03/2013, 12h39
  2. Réponses: 10
    Dernier message: 06/08/2009, 18h33
  3. copier des cellules d'une feuille dans une autres sous condition
    Par olivertwist dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2007, 10h42
  4. Réponses: 3
    Dernier message: 25/01/2007, 08h54

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