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 :

Copie/colle entre différents classeurs selon condition [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2017
    Messages : 25
    Par défaut Copie/colle entre différents classeurs selon condition
    Bonjour à tous,

    Je suis débutant en VBA.

    J'ai deux classeurs Excel, 1 et 2 (voir les 2 tableaux ci-dessous).
    Classeur 1 :
    Nom : Classeur1.PNG
Affichages : 223
Taille : 12,5 Ko

    Classeur 2 :
    Nom : Classeur2.PNG
Affichages : 138
Taille : 2,4 Ko

    Je souhaite que les valeurs présentes dans les colonnes A et B du classeur 2 soient copié/collé dans les colonnes A et B du classeur 1 en respectant les N° présent dans la colonne PI.

    J'ai fait le code ci dessous :
    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
    Sub copie_colle()
     
    'Variable déterminant la dernière ligne :'
    derlig = Range("A" & Rows.Count).End(xlUp).Row
     
    'Ligne permettant d'accélérer l'execution du programme en désactivant l'actualisation de l'écran'
    Application.ScreenUpdating = False
     
    For i = 2 To derlig
     
    If Workbooks("Classeur2").Sheets("Feuil1").Cells(i, 1) = Workbooks("Classeur1.xlsm").Sheets("Feuil1").Cells(i, 1) Then
    Union(Workbooks("Classeur2").Sheets("Feuil1").Cells(i, 2), Workbooks("Classeur2").Sheets("Feuil1").Cells(i, 3)).Select
    Selection.Copy
    Workbooks("Classeur1.xlsm").Sheets("Feuil1").Cells(i, 6).Select
    Selection.Paste
     
    End If
     
    Next i
     
    End Sub
    Cependant, ce code ne fonctionne pas. J'ai un message d'erreur "L'indice n'appartient pas à la sélection".

    Pouvez vous m'aider ?

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour !

    Ne pouvant deviner quelle ligne de code déclenche l'erreur  - cependant de ton côté juste en lisant l'aide associée
    au message et en vérifiant le contenu des variables tu dois t'en sortir aisément -  alors abandonner cette boucle inutile
    au profit d'une simple formule de feuille de calculs via RECHERCHEV par exemple (utilisable aussi en VBA) !
    Le tout réclamant à peine cinq lignes si vraiment un code est nécessaire;   s'entraîner déjà directement dans les cellules …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Sinon pourquoi n'utilises-tu pas la même syntaxe dans le code pour le nom des classeurs ?!

    Ligne n°4 :  quels sont donc les classeur & feuille auxquels fait référence cette ligne de code ?!

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2017
    Messages : 25
    Par défaut Pourquoi faire compliqué quand on peut faire simple...
    Oui effectivement une RechercheV suffit largement !!

    Voici ma ligne :
    Classeur 1 Colonne F (A) : =RECHERCHEV(A2;[Classeur2.xlsx]Feuil1!$A$2:$C$4;2;FAUX)
    Colonne G (B) : =RECHERCHEV(A2;[Classeur2.xlsx]Feuil1!$A$2:$C$4;3;FAUX)

    Un grand merci !

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

Discussions similaires

  1. [XL-2010] Copie de valeurs entre deux feuilles selon condition (texte)
    Par Beginner23 dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 25/04/2017, 15h55
  2. [XL-2007] filtre+copie/colle entre 2 classeurs
    Par watrish dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2016, 18h21
  3. Réponses: 4
    Dernier message: 16/03/2015, 17h10
  4. Réponses: 8
    Dernier message: 20/06/2014, 09h27
  5. Insertion de ligne en VBA entre différents classeurs
    Par Triad30 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/06/2010, 14h59

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