Filtre, copier et coller dans un autre classe
Résolu
Papillon34
-
Papillon34 -
Papillon34 -
Bonjour,
Je suis nouvelle dans ce forum et surtout débutante en vba!!!
Pour mon travail, mon patron m'a demandé de réaliser un programme qui va permettre d'un fichier nommé " Holding" de réaliser des filtres puis copier les données filtrées dans un autre classeur nommé "Ventilation"! Le problème que je rencontre c'est que le début fonction jusqu'au copier où ca ne fonctionne plus!!! Ca fait une semain que j'y suis dessus mais je ne trouve pas l'erreur et la macro a rajouté!!!!
Voici le code que j'ai fais
Je sais que pour le coller j'ai faux mais je ne vois pas quoi mettre!!!
Merci de bien vouloir m'aider!!!!
Je suis nouvelle dans ce forum et surtout débutante en vba!!!
Pour mon travail, mon patron m'a demandé de réaliser un programme qui va permettre d'un fichier nommé " Holding" de réaliser des filtres puis copier les données filtrées dans un autre classeur nommé "Ventilation"! Le problème que je rencontre c'est que le début fonction jusqu'au copier où ca ne fonctionne plus!!! Ca fait une semain que j'y suis dessus mais je ne trouve pas l'erreur et la macro a rajouté!!!!
Voici le code que j'ai fais
Sub Macro1() 'Macro1 Macro ' Macro enregistrée le 09/10/2007 Windows("Balance holding.xls").Activate 'J'active ma feuille hoding ActiveSheet.Range("A1").AutoFilter , Field:=1, Criteria1:="<70601000>", VisibleDropDown:=False 'je réalise mon filtre en ne voulant que le compte 70601000. Dim i As Integer i = 1 While Cells(i, 1) <> "" '1 représente ici la colonne Cells(i, 1).Copy ' je veux copier les données (seulement ce n'est pas la ligne deux mais une ligne n Windows("Ventilation des charges.xls").Activate Feuil3.Range("A12:c12").PasteSpecial ' Je veux le coller sur la colonne A et ligne 12! Operation = xlPasteSpecialOperationAdd Wend End Sub
Je sais que pour le coller j'ai faux mais je ne vois pas quoi mettre!!!
Merci de bien vouloir m'aider!!!!
A voir également:
- Filtre, copier et coller dans un autre classe
- Photo filtre 7 gratuit - Télécharger - Retouche d'image
- Retrouver un copier-coller android - Guide
- Copier coller pdf - Guide
- Copier-coller - Accueil - Informatique
- Style d'écriture a copier coller - Guide
7 réponses
bonjour,
En jetant un oeil vite fait, je constate que tu déclares un index i mais tu ne l'incrémentes pas dans la boucle du while ??? i garde donc toujours la valeur de 1. La ligne avant le Wend ajoute : i = i + 1.
Pour le reste je ne sais pas, je ne suis pas spécialiste des macros excel :o(
En jetant un oeil vite fait, je constate que tu déclares un index i mais tu ne l'incrémentes pas dans la boucle du while ??? i garde donc toujours la valeur de 1. La ligne avant le Wend ajoute : i = i + 1.
Pour le reste je ne sais pas, je ne suis pas spécialiste des macros excel :o(
Bonjour,
invrementer comme dit polux31 et aussi reactiver ta feuille "Balance holding.xls" en debut de boucle.
Mais si tu dois faire ça avec tout les comptes regarde 'Données / Consolider..." (regarde l'aide excel sur 'consolider') si ce n'est pas adapté à ton problème.
eric
invrementer comme dit polux31 et aussi reactiver ta feuille "Balance holding.xls" en debut de boucle.
Mais si tu dois faire ça avec tout les comptes regarde 'Données / Consolider..." (regarde l'aide excel sur 'consolider') si ce n'est pas adapté à ton problème.
eric
Bonjour,
Polux31 et eriiic ont parfaitement raison.
Toutefois, il n'est pas indispensable d'activer les classeurs et les feuilles dans les opérations de filtrage ou de copier-coller : mentionner le nom du classeur suivi du nom (ou de l'index' de la feuille fonctionne tout aussi bien. Celà a l'avantage d'accélérer l'éxécution du code.
Par contre, tu ne peux pas utilier le filtre dans ta boucle de recopie, car les lignes cachées sont "intégrées dans le While...Wend. Il te faut donc tester chaque valeur dans la colonne A:A, et faire le copier-coller si la valeur est "70601000".
Je te propose donc la macro suivante :
J'espère que ces explications t'aideront, sinon n'hésites pas à en redemander.
Cordialement.
Polux31 et eriiic ont parfaitement raison.
Toutefois, il n'est pas indispensable d'activer les classeurs et les feuilles dans les opérations de filtrage ou de copier-coller : mentionner le nom du classeur suivi du nom (ou de l'index' de la feuille fonctionne tout aussi bien. Celà a l'avantage d'accélérer l'éxécution du code.
Workbooks("Balance holding").Sheets(1).Columns("A:A").AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
Par contre, tu ne peux pas utilier le filtre dans ta boucle de recopie, car les lignes cachées sont "intégrées dans le While...Wend. Il te faut donc tester chaque valeur dans la colonne A:A, et faire le copier-coller si la valeur est "70601000".
Je te propose donc la macro suivante :
Sub Macro1() With WorkBooks("Balance holding").sheets(1) .Range("A:A").AutoFilter , Field:=1, Criteria1:="<70601000>", Operator:= xlAnd Dim i As Integer i = 1 While .Cells(i, 1) <> "" '1 représente ici la colonne If .Cells(i,1)="70601000" Then .Cells(i, 1).Copy WorkBooks("Ventilation des charges").Range("A12:c12").PasteSpecial Operation = xlPasteSpecialOperationAdd Wend End With End Sub
J'espère que ces explications t'aideront, sinon n'hésites pas à en redemander.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Merci à vous...
Hier en faite j'ai continué à chercher et j'ai trouvé :
Private Sub Transfert_donnees_Click()
Windows("Balance holding.xls").Activate
Sheets("Feuil1").Select
Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
Cells(1, 1).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Ventilation des charges.xls").Activate
Feuil1.Range("A12:A12").PasteSpecial
Operation = xlPasteSpecialOperationNone
End Sub
Ca fonctionne mais le suel problème c'est que ça me prend la première ligne...
Et lorsque je met Cells (2,1) Ca ma prend bien que le compte 70601000 mais cependant ne me prend pas les colonnes C et D car dans la C il y a un vide...
Merci à vous...
Hier en faite j'ai continué à chercher et j'ai trouvé :
Private Sub Transfert_donnees_Click()
Windows("Balance holding.xls").Activate
Sheets("Feuil1").Select
Selection.AutoFilter Field:=1, Criteria1:="=70601000", Operator:=xlAnd
Cells(1, 1).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("Ventilation des charges.xls").Activate
Feuil1.Range("A12:A12").PasteSpecial
Operation = xlPasteSpecialOperationNone
End Sub
Ca fonctionne mais le suel problème c'est que ça me prend la première ligne...
Et lorsque je met Cells (2,1) Ca ma prend bien que le compte 70601000 mais cependant ne me prend pas les colonnes C et D car dans la C il y a un vide...