Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copier coller entre Classeurs avec conditions

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Copier coller entre Classeurs avec conditions

Bonjour,

tu bloques où ? je ne vois pas le début d'un code dans ton fichier... Ce forum n'a pas vocation à fournir des applis clés en main... plutôt être une aide à progresser... depuis le temps que tu viens....

bonne journée
@+
 
Re : Copier coller entre Classeurs avec conditions

J'ai essayé ca pour commencer (ca ne fais pas tout ce que je veu faire) mais ca ne fonctionne pas non plus 🙂 ... errreur de format different de cellules...

Pour répondre à toi Pierrot93 (Qui m'a deja aidé sur certains de mes projets d'ailleurs 🙂 )

Quand je me lance sur un projet je le divise en plein de partie différente.
- La mjorité des parties je sais les faire (Je reprend des anciens projets sur lesquels on m'a aidé et je les modifient pour fonctionner avec mon nouveau projet.)
- Quand je sais pas faire, je demande, parfois j'ai un début de code, parfois comme là, je n'ai rien . ou quel que chose qui a mon avis ne va pas servir à celui qui va m'aider du coup je le met pas...

Merci
Slts
 

Pièces jointes

Re : Copier coller entre Classeurs avec conditions

Bon la première ligne est completement inutile

Private Sub CommandButton1_Click()
Workbooks("classeur2.xls").Worksheets("feuil1").Cells.Copy _
Workbooks("copie coller.xls").Worksheets("feuil1").Range("A2")
Workbooks("classeur2.xls").Close False
End Sub
 
Re : Copier coller entre Classeurs avec conditions

Re,

pour t'aider à avancer, un essai ci-dessous, nom des feuilles à adapter, rajouter le nom des classeurs devant les "sheets", les 2 classeurs sont ouverts, je te laisse adapter à ton projet... :
Code:
Option Explicit
Sub test()
Dim c As Range, x As Long, i As Long
With Sheets("Feuil1")
    For Each c In .Range("B2", .Range("B65536").End(xlUp))
        If c.Value = "xxx" Then
            .Cells(c.Row, 1).Resize(1, 4).Copy Sheets("Feuil2").Range("A65536").End(xlUp)(2)
        End If
    Next c
End With
With Sheets("Feuil2")
    x = .Range("A65536").End(xlUp).Row
    .Range("A1:D" & x).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    For i = x To 1 Step -1
        If .Rows(i).Hidden Then .Rows(i).Delete
    Next i
    .ShowAllData
End With
End Sub
 
Re : Copier coller entre Classeurs avec conditions

Re,

Dans ce code, pouvez vous m'expliquezpourquoi cette condition?
Code:
If c.Value = "xxx" Then

Je n'ai pas compris non plus la deuxième partie du code
Code:
With Sheets("Feuil2")
    x = .Range("A65536").End(xlUp).Row
    .Range("A1:D" & x).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    For i = x To 1 Step -1
        If .Rows(i).Hidden Then .Rows(i).Delete
    Next i
    .ShowAllData
End With

Voila le code avec les classeurs. Une erreur s'affiche "l'indice n'appartient pas à la selection.

Code:
Option Explicit


Private Sub CommandButton1_Click()
Dim c As Range, x As Long, i As Long
Workbooks.Open Filename:="C:\nouveau dossier\données sources.xls"

With Workbooks("données sources.xls").Worksheets("feuil1")
    For Each c In .Range("B2", .Range("B65536").End(xlUp))
        If c.Value = "xxx" Then
            .Cells(c.Row, 1).Resize(1, 4).Copy Workbooks("resultat.xls").Worksheets("feuil1").Range("A65536").End(xlUp)(2)
        End If
    Next c
End With

With Sheets("Feuil2")
    x = .Range("A65536").End(xlUp).Row
    .Range("A1:D" & x).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    For i = x To 1 Step -1
        If .Rows(i).Hidden Then .Rows(i).Delete
    Next i
    .ShowAllData
End With

Workbooks("donnés sources.xls").Close False
End Sub
 

Pièces jointes

Re : Copier coller entre Classeurs avec conditions

Re,

If c.Value = "xxx" Then
permet de tester la valeur des cellules de la colonne B...

comme la copie est faite systèmatiquement, à la fin de la procédure ces instructions permettent d'effacer les doublons par utilisation du filtre élaboré...


Voila le code avec les classeurs. Une erreur s'affiche "l'indice n'appartient pas à la selection.
D'après ce message, un nom de feuille ou un nom de classeur est erroné....
 
Re : Copier coller entre Classeurs avec conditions

Oups oui j'avais une faute de frappe..

Maintenant j'ai une autre erreur methode allshowdata de la classe à echoué

Et si je supprime le 2ème paragraphe pour éviter d'avoir l'erreur, rien n'est copié. Alors que ca devriat quand même copier non? (Avec des doublons)

Slts
Pierre
 

Pièces jointes

Re : Copier coller entre Classeurs avec conditions

Re,

Super presqua ca. ca marche bien. Mais pour le moment ca verifie si la ligne n'existe pas dans la feuill1 mais il faudrait que cela verifie en feuil1 et en feuil2.

en gros avoir un peu quelque chose comme ca? :
With Workbooks("resultat.xls").Worksheets("feuil1") And .Worksheets("feuil2")
 
Re : Copier coller entre Classeurs avec conditions

Re,

j'aimerais que ca verifie la feuil1 et 2, mais que ca copie les données de l'autre classeur que en page 1 et pas en page 2

J'ai essayé ça mais j'ai une erreur 1004.

Code:
Option Explicit


Private Sub CommandButton2_Click()
Dim c As Range, x As Long, i As Long
Workbooks.Open Filename:="C:\nouveau dossier\données sources.xls"

With Workbooks("données sources.xls").Worksheets("feuil1")
    For Each c In .Range("B2", .Range("B65536").End(xlUp))
        If c.Value = "xxx" Then
            .Cells(c.Row, 1).Resize(1, 4).Copy Workbooks("resultat.xls").Worksheets("feuil1").Range("A65536").End(xlUp)(2)
        End If
    Next c
End With

With Workbooks("resultat.xls").Worksheets("feuil1")
    x = .Range("A65536").End(xlUp).Row
    .Range("A1:D" & x).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    For i = x To 1 Step -1
        If .Rows(i).Hidden Then .Rows(i).Delete
    Next i
    If .FilterMode Then .ShowAllData

End With


With Workbooks("resultat.xls").Worksheets("feuil2")
    x = .Range("A65536").End(xlUp).Row
    .Range("A1:D" & x).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
    For i = x To 1 Step -1
        If .Rows(i).Hidden Then .Rows(i).Delete
    Next i
    If .FilterMode Then .ShowAllData

End With

Workbooks("données sources.xls").Close False

End Sub

Slts
Pierre
 
Re : Copier coller entre Classeurs avec conditions

Oui, c'est ce que je veu.

Je veu que ca copie les données ici: "Workbooks("resultat.xls").Worksheets("feuil1" )"

Mais que ca vérifie:
ici: "Workbooks("resultat.xls").Worksheets("feuil1" )"
et ici: "Workbooks("resultat.xls").Worksheets("feuil2" )"
que les données n'existe pas deja (afin de ne pas crer de doublons dans le classeur.)
 
Re : Copier coller entre Classeurs avec conditions

Re,

mal parti, car ici on ne vérifie pas... on copie systèmatiquement vers une seule feuille et ensuite on expurge cette même feuille des doublons..... je crains qu'il faille revoir ta copie afin de faire les vérifications sur les 2 feuilles avant de faire la copie....
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
488
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…