Copier automatiquement d'un classeur vers un autre avec CONDITIO
Résolu
verocran
Messages postés
8
Statut
Membre
-
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
gbinforme Messages postés 15481 Date d'inscription Statut Contributeur Dernière intervention -
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
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
A voir également:
- Copier automatiquement d'un classeur vers un autre avec CONDITIO
- Copier un disque dur sur un autre - Guide
- Comment copier une vidéo youtube - Guide
- Retrouver un copier-coller android - Guide
- Super copier - Télécharger - Gestion de fichiers
- Comment copier un mail - Guide
6 réponses
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 ?
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 ?
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".
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".
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.
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.
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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"
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
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
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
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 ?