Copier les données avec des cellules vides non adjacentes dans un autre classeur.

Lone-wolf

XLDnaute Barbatruc
Bonjour le Foum,

Copier les données avec des cellules vides non adjacentes dans un autre classeur?.

Pour les interéssés, en PJ , j'ai préparé le classeur "Tableau" pour test. Le "Classeur1" sert pour la réception des données.




A+ :cool:
 

Pièces jointes

  • Nouveau dossier.zip
    21.3 KB · Affichages: 42
  • Nouveau dossier.zip
    21.3 KB · Affichages: 32
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier les données avec des cellules vides non adjacentes dans un autre classeur

Bonjour Lone-wolf,

Tu ne dois pas utiliser souvent le filtre avancé car plein de choses ne vont pas dans ta macro. En particulier:

- en K2 le critère "<>""" (qui donne <>") n'a aucun sens

- la plage du filtre doit commencer en A1.

Teste donc avec ceci :

Code:
Sub test()
Dim wbk1 As Workbook, wbk2 As Workbook

Set wbk1 = Workbooks("Tableau.xls") 'Classeur source
Set wbk2 = Workbooks("Classeur1.xls") 'Classeur destination

wbk2.Sheets("Feuil1").Rows("4:65536").Delete 'RAZ

With wbk1.Sheets("Data")
    .Range("k2") = "=COUNTA(A2,E2)=2" 'critère filtre
    .Range("a1:i" & .[a65000].End(xlUp).Row) _
    .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .Range("k1:k2"), CopyToRange:=wbk2.Sheets("Feuil1").[B4]
End With

wbk2.Sheets("Feuil1").Columns.AutoFit
Application.Goto wbk2.Sheets("Feuil1").[A1]

End Sub
A+
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Copier les données avec des cellules vides non adjacentes dans un autre classeur

Bonjour job,

merci pour ton intervention. Je ne comprend pas pourquoi le filtrage doit commencer en A1. Si par exemple on veux filtrer les clients qui ont une commande, il faut bien que le filtre si situe sur la colonne des clients et non en A1. Le code que tu a proposé ne copie que 7 lignes, et moi 21; parce-que je filtre la colonne Produits et non les Representants.



A+ :cool:
 

job75

XLDnaute Barbatruc
Re : Copier les données avec des cellules vides non adjacentes dans un autre classeur

Re,

Je ne comprend pas pourquoi le filtrage doit commencer en A1.

C'est pourtant évident : si tu fais commencer la plage filtrée en A2 la ligne 2 sera considérée comme la ligne de titres et ne sera donc pas filtrée (elle sera toujours copiée).

Maintenant si tu veux filtrer les clients (colonne C) qui ont un article (colonne E) utilise :

Code:
Sub test()
Dim wbk1 As Workbook, wbk2 As Workbook

Set wbk1 = Workbooks("Tableau.xls") 'Classeur source
Set wbk2 = Workbooks("Classeur1.xls") 'Classeur destination

wbk2.Sheets("Feuil1").Rows("4:65536").Delete 'RAZ

With wbk1.Sheets("Data")
    .[K2] = "=COUNTA(C2,E2)=2" 'critère filtre
    .Range("A1:I" & .[C65000].End(xlUp).Row) _
    .AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
    .[K1:K2], CopyToRange:=wbk2.Sheets("Feuil1").[B4]
End With

wbk2.Sheets("Feuil1").Columns.AutoFit
Application.Goto wbk2.Sheets("Feuil1").[A1]

End Sub
A+
 

Lone-wolf

XLDnaute Barbatruc
Re : Copier les données avec des cellules vides non adjacentes dans un autre classeur

Re job,

tu as raison, c'est tout à fait juste ce que tu dis. Merci encore.

EDIT: Dans le classeur 1, j'ai déjà la ligne des titres et c'est pour cela que je commence la copie en A2. En suivant ton exemple, mettre A1, la ligne des titres est recopiée dans le classeur1.

J'aimerai comprendre ceci : .[K2] = "=COUNTA(C2,E2)=2"; =2 à quoi ça correspond ? .




A+ :cool:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Copier les données avec des cellules vides non adjacentes dans un autre classeur

Re,

Dans le classeur 1, j'ai déjà la ligne des titres et c'est pour cela que je commence la copie en A2.

Oui, et tu fais donc une erreur, recopier les titres à chaque fois ne pose aucun problème.

J'aimerai comprendre ceci : .[K2] = "=COUNTA(C2,E2)=2"; =2 à quoi ça correspond ?

2 parce qu'il y a 2 cellules tiens ! Regarde la formule en cellule K2.

On pourrait aussi utiliser :

Code:
.[K2] = "=AND(C2<>"""",E2<>"""")"
A+
 

Lone-wolf

XLDnaute Barbatruc
Re : Copier les données avec des cellules vides non adjacentes dans un autre classeur

Re job,

recopier les titres à chaque fois ne pose aucun problème.

Bein oui, c'est enfantin :eek:

Et pour =2, là encore, fallait réfléchir un peu et comprendre, c'est évident que ce sont les zones de critères.

Encore une fois merci pour ta patience.


Amicalement Lone-wolf
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 010
Membres
103 699
dernier inscrit
samSam31