Reprendre des données dans un onglet en fonction d'un paramètre

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

niiiiiiiiiico

XLDnaute Occasionnel
Bonjour,

J'ai un très grand tableau dans un onglet et je veux récupérer des données qui sont dedans pour faire une impression simple à lire sur papier. L'idée étant dans un deuxième onglet de sélectionner une date et que ça me récupère les lignes et colonnes que je veux. J'ai mis un exemple en PJ (très simplifié), je ne vois pas du tout comment faire

Merci beaucoup pour votre aide !!!!
 

Pièces jointes

Re : Reprendre des données dans un onglet en fonction d'un paramètre

Bonsoir niiiiiiiiiico,

Une solution pas trop compliquée en pièce jointe:
- dans ta feuille Données, une formule dans une colonne supplémentaire affiche le n° de ligne, si la date en colonne B est identique à celle en C3 de ta feuille Impression
- en feuille Impression, une simple fonction INDEX permet ensuite d'afficher les données dont les n° de ligne sont affichés en feuille Données

Jette un œil et dis-nous si ça correspond
 

Pièces jointes

Re : Reprendre des données dans un onglet en fonction d'un paramètre

Bonsoir niiiiiiiiiico, Modeste,

J'y vais de ma solution qui filtre en fonction de la date en C3 mais aussi des titres choisis en B6: D6 :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim dat As Variant, titres As Range, t, ncol%, rest(), acol%(), x$, i&, j%, n&
'---préparation---
Set dat = [C3] 'à adapter
Set titres = [B6:D6] 'à adaptet
If Intersect(Target, Union(dat, titres)) Is Nothing Then Exit Sub
If Not IsDate(dat) Then GoTo 1
t = Feuil1.[B2].CurrentRegion 'CodeName de la feuille
ncol = titres.Count
ReDim rest(1 To UBound(t), 1 To ncol)
dat = dat 'scalaire, plus rapide
'---tableau des n° de colonnes à traiter---
ReDim acol(1 To ncol)
For i = 1 To ncol
  x = LCase(Trim(titres(1, i)))
  For j = 1 To UBound(t, 2)
    If x = LCase(Trim(t(1, j))) Then acol(i) = j: Exit For
  Next
Next
'---filtrage du tableau---
For i = 1 To UBound(t)
  If t(i, 1) = dat Then
    n = n + 1
    For j = 1 To ncol
      If acol(j) Then rest(n, j) = t(i, acol(j))
    Next
  End If
Next
'---restitution---
If n Then titres.Offset(1).Resize(n) = rest
1 titres.Offset(n + 1).Resize(Rows.Count - titres.Row - n) = ""
End Sub
Fichier joint.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
474
Retour