extraction de certaines données d'une feuille1 vers feuil2 sous condtion

gilles37

XLDnaute Occasionnel
bonjour,

J'ai une feuille1 qui comporte un tableau avec 20 colonnes et des lignes qui sont renseignées au fil du temps.

je souihaterais extraire les données de certaines colonnes (Ex: B-C-L-M-N-O-P-Q) quand une croix se trouve dans la colonne Z pour renseigner un tableau sur la feuille2.
je bloque, merci pour votre aide
 

ralph45

XLDnaute Impliqué
Re : extraction de certaines données d'une feuille1 vers feuil2 sous condtion

Bonjour gilles37,

Sans fichier joint, difficile de répondre mais à première vue, un filtre élaboré pourrait répondre à ta question.
Il existe de nombreux posts dans ce domaine, utilise le moteur de recherche, tu trouveras certainement ton bonheur...

A plus !
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : extraction de certaines données d'une feuille1 vers feuil2 sous condtion

Re,

Vite fait, sans rien inventer.

Macro événementielle dans le code de la 1ère feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim plage As Range
If Intersect(Target, [Z:Z]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
ActiveSheet.AutoFilterMode = False 'si le filtre est en place
[Z:Z].AutoFilter 1, "x" 'filtre automatique
Set plage = [Z:Z].SpecialCells(xlCellTypeVisible).EntireRow
Set plage = Intersect(plage, [B:C,L:Q])
ActiveSheet.AutoFilterMode = False 'désactive le filtre
'---restitution---
With Sheets("Feuil2") 'nom à adapter
  .Cells.ClearContents 'RAZ
  plage.Copy .[A1]
End With
End Sub
On utilise le Filtre automatique, en supposant que la ligne 1 est une ligne de titres.

A+
 

job75

XLDnaute Barbatruc
Re : extraction de certaines données d'une feuille1 vers feuil2 sous condtion

Re,

Il est sans doute mieux d'utiliser une macro Worksheet_Activate (calculs moins fréquents).

Donc placer dans le code de la Feuil2 (feuille de restitution) :

Code:
Private Sub Worksheet_Activate()
Dim plage As Range
With Feuil1 'CodeName de la feuille de base, à adapter
  .AutoFilterMode = False 'si le filtre est en place
  .[Z:Z].AutoFilter 1, "x" 'filtre automatique
  Set plage = .[Z:Z].SpecialCells(xlCellTypeVisible).EntireRow
  Set plage = Intersect(plage, .[B:C,L:Q])
  .AutoFilterMode = False 'désactive le filtre
End With
'---restitution---
Application.ScreenUpdating = False
Cells.ClearContents 'RAZ
plage.Copy [A1]
End Sub
Nota : j'utilise le CodeName, ce qui permet de modifier le nom de la feuille sans modifier le code.

A+
 

Discussions similaires

Réponses
2
Affichages
538