Copier automatiquement d'un classeur vers un autre avec CONDITIO

Résolu/Fermé
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017 - 20 oct. 2017 à 19:44
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 24 oct. 2017 à 09:07
Bonjour à tous,

Je n’y arrive pas, même en essayant de modifier des macros trouvées. (Je suis nulle en macro et VBA en règle générale)

Voici mon problème :

J’ai un classeur (qui sera la source) où il y a une feuille nommée « ANNEE 2017 » qui reprend toutes les données mensuelles de l’année. (ma feuille comporte des titres et ces données sont copiées avec le bouton "copier avec liaison")
Dans la colonne E se trouve différents noms de la condition.

J’aimerai que dans un autre classeur sur une feuille nommée « DEPENSE », lorsque l’on rencontre un nom bien défini (par ex : ARTHUR) , il me copie automatiquement toutes les lignes où il rencontrera le nom ARTHUR (partant de la ligne "3" et les colonnes de" B à J"). s'il ne rencontre pas ce nom, il ne copie pas bien entendu.

Pour le moment, je le fais au moyen des filtres, mais c’est fastidieux, j’ai des doublons ou des oublis. donc je suis obligée à chaque clôture du classeur de destination de vérifier ligne par ligne.

Une bonne âme pourrait-elle me venir en aide ?

Merci

6 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
21 oct. 2017 à 11:56
Bonjour,

je le fais au moyen des filtres
Cela me semble la bonne méthode.

j’ai des doublons ou des oublis
Cela veut-il dire que dans ta feuille nommée « DEPENSE » tu ne veux avoir que ce qui est dans ta feuille nommée « ANNEE 2017 » concernant le nom bien défini ?
Si c'est le cas, il faut supprimer ce qui existe déjà avant de faire la copie ?
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
21 oct. 2017 à 16:04
Bonjour,

Oui c’est bien ce que j,aimerai.
Je veux que sur ma feuille « dépense » ne soit copié que les lignes de la feuille « année 2017 » ou se trouve la référence « Arthur ». Et surtout il ne faut qu’aucune cellule ne soit supprimée dans la’ feuille Anne 2017.

Merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
21 oct. 2017 à 23:11
Bonjour,

surtout il ne faut qu’aucune cellule ne soit supprimée dans la’ feuille Anne 2017
Ce n'était pas la question posée. Si tu ne veux pas de doubles, il faudrait supprimer « Arthur » sur ta feuille « dépense » avant la copie ?
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
22 oct. 2017 à 08:35
Bonjour,

Pardon d'avoir mal compris
J'aimerai bien pouvoir garder le nom de référence "Arthur" de la condition sur la feuille "dépense".
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
22 oct. 2017 à 09:35
Bonjour,

Ce que tu veux est assez simple à réaliser mais tes explications ne sont pas suffisamment explicites si tu pouvais nous mettre un exemple de structure des données, sans éléments personnels, avec les résultats souhaités expliqués clairement, ce serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ (mode d'emploi) et tu mets ici le lien obtenu.
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
22 oct. 2017 à 13:17
http://www.cjoint.com/c/GJwlnChxZGP

Bonjour,

La source est le classeur ex compta 2017 - feuille annee 2017
La destination est le classeur ex Arthur - feuille depense

Sur la feuille depense du classeur" Arthur", j'ai mis ce qui devrait se copier automatiquement (enfin c'est mon souhait). Pour le moment je le copie à l'aide du filtre

Merci beaucoup
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702 > verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
22 oct. 2017 à 14:37
Bonjour

Tu n’as donné le lien que pour le classeur source
Il faut aussi celui pour le classeur Arthur
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
22 oct. 2017 à 14:42
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
22 oct. 2017 à 15:42
Re

Ton classeur source avec la macro de transfert :
https://mon-partage.fr/f/Hscqc2C3/

Ctrl+Maj+T pour lancer la macro
ALT+F11 pour voir le code annoté

Cdlmnt
Via
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
22 oct. 2017 à 17:44
Re,
m
Merci, je vais l’essayer
Bonne fin de journée
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
23 oct. 2017 à 08:10
Bonjour,

J'ai essayé la macro... elle me dit transfert terminé mais rien ne se copie dans le classeur destination
Je suis désolée d'être si nulle.
Bonne journée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
Modifié le 23 oct. 2017 à 08:44
Bonjour à tous,

Je propose une autre façon de faire qui utilise les filtres et tient compte du format tableau de la feuille DEPENSE avec ce code.
Il faut exécuter la procédure "Lancer"
Option Explicit
Public Sub Lancer()
Dim nom As String
    nom = InputBox("Indiquer le nom de la catégorie à transférer")
    If nom <> "" Then Call copie(nom)
End Sub
Public Sub copie(nom)
Const ndf = "ANNEE 2017"    'nom de la feuille à copier
Dim cla As Workbook, feu As Worksheet, ws As Worksheet
Dim lig As Long, nbs As Long, cls As Long
    For Each cla In Workbooks   ' recherche classeur
        If cla.Name <> ThisWorkbook.Name Then
            For Each feu In cla.Sheets   ' recherche feuille
                If feu.Name = "DEPENSE" Then
                        Set ws = Workbooks(cla.Name).Sheets(feu.Name)
                        With ThisWorkbook.Sheets(ndf)   ' recherche noms présents
                            If Application.CountIf(ws.Columns(4), nom) > 0 Then
                                MsgBox "présence du nom choisi dans DEPENSE"
                            End If
                            lig = ws.Range("Tableau1[Colonne1]").Find("").Row
                            .Range("$A$3:$J$" & .UsedRange.Rows.Count).AutoFilter Field:=4, Criteria1:=nom
                            nbs = .Range("D3:D" & .Cells(Rows.Count, "D").End(xlUp).Row).SpecialCells(xlVisible).Count
                            If .Cells(Rows.Count, "D").End(xlUp).Row > 2 Then ' copie éléments sélectionnés
                                For cls = nbs To 1 Step -1
                                    ws.Cells(lig, "A").ListObject.ListRows.Add AlwaysInsert:=False
                                Next cls
                                .Range("B3:I" & .UsedRange.Rows.Count).SpecialCells(xlVisible).Copy
                                ws.Cells(lig, "A").PasteSpecial xlPasteValues
                                .Range("J3:J" & .UsedRange.Rows.Count).SpecialCells(xlVisible).Copy
                                ws.Cells(lig, "J").PasteSpecial xlPasteValues
                                MsgBox nbs & " lignes copiées"
                            Else
                                MsgBox "Pas de lignes à copier"
                            End If
                            .Range("$A$3:$J$" & .UsedRange.Rows.Count).AutoFilter Field:=4
                        End With
                End If
            Next feu
        End If
    Next cla
    If ws Is Nothing Then MsgBox "pas de feuille DEPENSE ouverte"
End Sub

Bon test
 Toujours zen
La perfection est atteinte, non pas lorsqu'il n'y a plus rien à ajouter, mais lorsqu'il n'y a plus rien à retirer.  Antoine de Saint-Exupéry
0
verocran Messages postés 8 Date d'inscription vendredi 20 octobre 2017 Statut Membre Dernière intervention 24 octobre 2017
24 oct. 2017 à 08:10
Bonjour,

Mille merci, la dernière version fonctionne super bien.

Bonne journée
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
24 oct. 2017 à 09:07
Bonjour,
Merci du retour et bonne utilisation.
0