XL 2013 Sortir les données de plusieurs feuilles

Draian

XLDnaute Nouveau
Bonjour à tous,

Je viens vers vous parce que j'ai une petite question concernant excel et que d'après ce que je vois, y'a l'air d'avoir certaines têtes par ici :)

Je vous explique ce que je souhaiterais faire : J'ai plusieurs feuilles (une par année) dans laquelle il faut encoder des données avec une date de recommandé. Le truc, c'est que je souhaiterais qu'après un mois (à dater du recommander), la ligne complète s'affiche dans un tableau reprenant tout les cas disons "expirés". Admettons que Jean-Michel B reçoit son recommandé le 18/1/21, je voudrais faire en sorte qu'excel copie la ligne complète sur une feuille "Personne ayant dépassé de plus de 30jours". Pour l'instant tout ce que j'ai réussi à faire c'est de faire une mise en forme conditionnelle =SI(G3+31<AUJOURDHUI();"A RELANCER";"") afin d'afficher une celle en rouge.

Mais je comprend pas comment je pourrais traiter plusieurs feuilles différentes pour qu'il regroupe tout dans un seul tableau.

Je ne sais pas si j'ai été très clair, ca ne l'est pas forcément pour moi non plus héhé.

Merci d'avance si un génie d'excel passe par là =)

Des bisous
 

Pièces jointes

  • INDUS-OLD.xls
    63.5 KB · Affichages: 8
Solution
Bonjour
Si Accord rempli sur la feuille 2017(par exemple) on ne copie rien sur InduNC?
VB:
Private Sub Worksheet_Activate()
  Dim nomtableau, n As Long, i As Integer, x As Long, col As Byte, dl As Long 'déclaration des variables
  nomtableau = "TinduNC" 'reprend les donnees de InduNC
  If Range(nomtableau).Item(1, 1) <> "" Then Range(nomtableau).Delete 'efface les données sur Indu NC
  For i = 1 To Sheets.Count - 1 'boucle pour les feuilles
   If Sheets(i).Name <> "Indu NC" Then 'sauf la feuille induNC
    dl = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille en cours
    For x = 2 To dl 'boucle sur la feuille en cours
     If Sheets(i).Range("G" & x).Value <> "" And Sheets(i).Range("G" & x).Value +...

Draian

XLDnaute Nouveau
Bonjour,

Un tout grand merci Fanfan pour ta macro et le VBA, c'est exactement ce que je voulais faire !

J'ai juste deux petites questions :

1) La macro, à quoi sert-elle dans ce cas de figure?

2) (Peut être un peu plus emmerdant héhé) Quand la colonne "Accord" est remplie, je souhaiterais que la ligne ne soit pas reprise dans le premier tableau. Pour l'instant, il se base sur le recommandé +31j, il faudrait que je puisse ajouter une condition à savoir si "Accord"(H) est vide alors ça copie la ligne. Dès qu'accord est rempli, la ligne s'efface du premier tableau.

Est ce que c'est faisable? Si oui, si quelqu'un peut m'expliquer comment faire ça serait génial.

Un tout grand merci en tout cas pour votre aide (et merci soan pour l’accueil)

Des bisous
 

fanfan38

XLDnaute Barbatruc
Bonjour
Si Accord rempli sur la feuille 2017(par exemple) on ne copie rien sur InduNC?
VB:
Private Sub Worksheet_Activate()
  Dim nomtableau, n As Long, i As Integer, x As Long, col As Byte, dl As Long 'déclaration des variables
  nomtableau = "TinduNC" 'reprend les donnees de InduNC
  If Range(nomtableau).Item(1, 1) <> "" Then Range(nomtableau).Delete 'efface les données sur Indu NC
  For i = 1 To Sheets.Count - 1 'boucle pour les feuilles
   If Sheets(i).Name <> "Indu NC" Then 'sauf la feuille induNC
    dl = Sheets(i).Range("A" & Rows.Count).End(xlUp).Row 'dernière ligne de la feuille en cours
    For x = 2 To dl 'boucle sur la feuille en cours
     If Sheets(i).Range("G" & x).Value <> "" And Sheets(i).Range("G" & x).Value + 30 < Date Then 'si date en G +30 < aujourd'hui
    
       If Sheets(i).Range("H" & x).Value="" then     ' si H est rempli ne pas copier
         If Range(nomtableau).Item(1, 1) <> "" Then n = Range(nomtableau).Rows.Count + 1 Else n = 1 'dernière ligne InduNC+1
         For col = 1 To 12 'boucle sur les colonnes
           Range(nomtableau).Item(n, col) = Sheets(i).Cells(x, col).Value 'copie les données
        Next col
     End If
     endif
    Next x
   End If
  Next i
End Sub
A+ François
 

Discussions similaires

Haut Bas