Recopie des données sur onglets selon conditions

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • Date de début Date de début

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 !

fb62840

XLDnaute Impliqué
Bonjour à toutes et tous,

J'aimerais, à l'ouverture d'un fichier que :
Les lignes contenus sur la première feuille soient recopiées :
- sur une feuille <= 1 mois si la date contenu dans la colonne B est effectivement inférieure au plus d'un mois par rapport au jour d'ouverture du ficher
- sur une feuille 2 à 3 mois si la date contenu dans la colonne B est supérieure à 1 mois mais inférieure ou égale à 3 mois par rapport au jour d'ouverture du fichier
- sur une feuille >= 3 mois si la date contenu dans la colonne B est supérieure ou égale à 3 mois

Merci pour votre aide
 

Pièces jointes

Re : Recopie des données sur onglets selon conditions

Bonsoir fb62840,

Macro à mettre dans le ThisWorkbook de ton fichier

VB:
Option Explicit

Private Sub Workbook_Open()
Dim PlageSource As Range, PlageFiltre As Range, i&, j&
Feuil1.Activate
Set PlageSource = Feuil1.Range("A1").CurrentRegion
For i = 2 To Sheets.Count
  With Sheets(i)
    .Activate
    .Rows.Clear
    PlageSource.Rows("1").Copy Destination:=.Range("A1")
    [B2:C2] = "Date"
  Select Case i - 1
    Case 1
    .[B3] = "<=" & Format(Now, "mm/dd/yyyy")
    .[C3] = ">=" & Format(Now - 31, "mm/dd/yyyy")
    Case 2
    .[B3] = "<=" & Format(Date - 32, "mm/dd/yyyy")
    .[C3] = ">=" & Format(Date - 63, "mm/dd/yyyy")
    Case 3
    .[B3] = "<=" & Format(Date - 64, "mm/dd/yyyy")
    .[C3] = ">=" & Format(Date - 10000, "mm/dd/yyyy")
  End Select
  PlageSource.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[B2:C3], CopyToRange:=.[A4]
  .Rows("2:4").Delete
  End With
Next
Feuil1.Activate
End Sub

A+

Martial
 
Re : Recopie des données sur onglets selon conditions

Bonjour Martial,

Merci beaucoup pour ce code.

Je viens de le tester mais malheureusement il ne me donne pas le résultat attendu.

A l'ouverture du fichier avec ce code actif, aucune données n'est reportée sur les feuilles < 1 mois et > 3 mois et,
une seule ligne est recopiée sur la feuille 2 à 3 mois.

Une suggestion ?
 

Pièces jointes

Re : Recopie des données sur onglets selon conditions

Bonjour,

Oui, sans doute qu'il y a un problème de ce côté là. Je note que dans ton code le format utilisé est le format américain pour les dates. Peut être que de là vient la confusion.

Merci
 
Re : Recopie des données sur onglets selon conditions

Re,

Tout dépend de ta version d'Excel.

Si tu utilises ce fichier sur un seul PC, il suffit de modifier dans la macro. Sinon, il faut faire un truc du genre :

If Val(Application.Version) >= 12 Then
[G2] = ">=" & Format(TextBox1, "mm/dd/yyyy")
[H2] = "<=" & Format(TextBox2, "mm/dd/yyyy")
Else
[G2] = ">=" & TextBox1
[H2] = "<=" & TextBox2
End If

Tiré du site de JB

A+
 
- 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
12
Affichages
364
Retour